Monolithic 아키텍쳐와 MSA 의 차이에 대해 설명하라.
Monolithic은 모든 서버가 단일 코드베이스를 바탕으로 하는 동일한 서비스를 제공하는 아키텍쳐입니다.
반면 MSA 아키텍쳐는 Microservice Architecture, 여러개의 독립적인 서비스가 모여 하나의 애플리케이션을 구성하는 아키텍쳐 입니다.
수많은 서버가 전체 어플리케이션을 구성하는 형태의 아키텍쳐입니다.
Monolithic 아키텍쳐는 무엇이며 어떤 장단점이 있는가?
Monolithic은 모든 서버가 단일 코드베이스를 바탕으로 하는 동일한 서비스를 제공하는 아키텍쳐입니다.
그렇기에 초기 개발 단계에서는 유지 보수가 용이하고, 개발 속도 및 배포가 빠릅니다.
서버 자체는 여럿이 될 수 있지만, 각각의 서버 인스턴스가 같은 서비스를 제공하기 때문에
코드상의 문제로 인한 서비스에 문제가 발생할 경우, 모든 서비스가 중단되는 SPOF에 취약하고, 규모가 클 수록 유지 보수가 어렵습니다. 버전업을 할 경우, 전체 시스템을 재배포해야 하기에 확장성과 배포 또한 어려운 것이 단점입니다.
SPOF란 무엇인가?
단일 장애 지점이 전체 시스템에 영향을 미치는 것을 말합니다.
보통 단일 코드 베이스로 구성된 monolithic 아키텍쳐를 사용하는 어플리케이션에서 일어날 수 있는 현상입니다.
MSA는 무엇이며 어떤 장단점이 있는가?
Microservice Architecture는 모놀리식 아키텍쳐와는 달리, 전체 서비스를 여러 개의 서비스로 나누어서
API 서비스의 책임분리를 한 아키텍쳐입니다.
서비스가 독립적으로 실행되기에 특정 서비스가 다른 서비스에 주는 영향이 적습니다.
필요에 따른 개별 서비스의 확장이 가능합니다.
반면 필연적으로 여러 서버를 유지해야함과 동시에
이를 중앙화할 API GW의 사용이 필요해 비용의 문제가 생길 수 있습니다.
API Gateway란 무엇인가?
MSA에서 API 요청에 대한 처리를 중앙화하기 위해 일종의 Facade패턴을 사용하는 Edge Server입니다.
모든 서비스를 Facade형태로 묶어낸 것이라고 볼 수 있습니다.
주요 기능으로는
클라이언트의 API 요청(Producer)를 처리하는 적절한 마이크로서비스(Consumer)로 라우팅 해서 처리할것을 명시해두고 있으며 로드 밸런싱과 트래픽 제어를 수행합니다.
또한, API Spec을 Swagger와 같은 툴로 명세해 버전관리의 역할도 하고 있습니다.
Producer-Consumer 패턴은 무엇인가?
Producer - Consumer 패턴이란
Producer - Consumer 문제라는 소프트웨어 프로그래밍에서 자주 다뤄지는 동시성 문제를 말함과 동시에 이를 해결하는 패턴을 의미하기도 합니다.
동시성 문제란 여러개의 프로세스를 동기화하는 것에 관련된 내용입니다.
이를 해결하기 위해 일반적으로 유한 사이즈의 버퍼를 두고, 생산자가 버퍼에 저장을, 소비자가 버퍼의 맨 처음 저장된 것부터 순서대로 처리하는 이벤트큐 패턴을 사용해 해결하는 방식을 사용하고 있습니다.
Apache Kafka와 같은 메시지 브로커가 이와 같은 이벤트 큐 패턴을 사용한 Producer-Consumer 동시성 문제를 처리하고 있니다.
HTTP API 혹은 REST API란 무엇인가?
HTTP API란 HTTP 요청을 사용하는 API를 말하는 것이고,
REST API란 REST 아키텍쳐 제약 조건(철학)을 준수하는 HTTP API 를 말한다.
REST 아키텍쳐 제약조건이란 균일한 인터페이스, 클라이언트-서버 분리, Stateless, 캐시 가능성, 계층화된 시스템 아키텍쳐, 등이 있다.
이를 만족하려면 요청은 HTTP method + URI로 구성되어야 하며,
URI에 들어가는 변수는 path variable, query parameter, request body가 있다.
이에 응답은 HTTP Response Status와 함께 제공되어야 한다.
HTTP Response Status 상태코드에 대해 설명해보시오
1XX : 정보성 응답 (정보를 수신했다는 것을 의미, 처리가 진행중일 때)
2XX : 성공( 요청을 성공적으로 수신, 처리했음.)
3XX : 리다이렉션 (추가 작업이 필요하거나 다른 URI로 리다이렉트)
4XX : 권한 혹은 잘못된 접근 (클라이언트 측 오류)
5XX : 서버 내부 문제 (서버 측 오)
REST API 의 RESTful 란 어떤 것을 의미하는가?
REST란 Representational State Transfer라는 아키텍쳐 제약조건을 말하는 것으로, RESTful이라는 것은 REST를 잘 지키고 있는 형태를 말한다.
REST하기 위해서는 균일한 인터페이스, 클라이언트-서버 분리, Stateless, 캐시 가능성, 계층화된 시스템 아키텍쳐등을 지켜야 한다.
GraphQL 은 무엇이며 REST API 와의 차이는 무엇인가
REST API는 모든 URI와 Method에 대한 API를 일일이 만들어야 하는 단점이 존재한다.
GraphQL은 단일 엔드포인트를 통해 클라이언트가 원하는 method, 원하는 정보를 얻을 수 있게 함으로써
위와 같은 API의 단점을 해결 할 수 있다.
또한, 원하는 정보만을 받기에 과다요청 혹은 부족 요청을 방지할 수 있다.
'질문과 답변 > Web' 카테고리의 다른 글
Web 구성 및 흐름 (2) (2) | 2024.11.11 |
---|