API Gateway 는 규모에 상관없이 API 생성, 유지 관리, 모니터링과 보호를 할 수 있게 해주는 서비스로, 다양한 마이크로서비스로 구성된 시스템에서 통합된 접점을 제공합니다. Client에서 server로 통신할 때 사용하는 많은 api들의 대문(게이트웨이)과 같은 역할을 한다고 보면 됩니다.
API Gateway 를 사용함으로써 클라이언트는 여러 마이크로서비스에 대한 요청을 하나의 엔드포인트로 보낼 수 있습니다. 이는 시스템의 복잡성을 줄이고, 클라이언트와 서버 간의 통신을 간소화하는데 도움을 줍니다.
또한, API Gateway 는 인증 및 권한 부여, 요청 및 응답의 변환, 로깅과 같은 크로스 커팅 관심사를 처리함으로써 각 마이크로서비스가 비즈니스 로직에만 집중할 수 있도록 지원합니다. API Gateway 의 도입은 시스템의 보안을 강화하고, API 관리를 용이하게 하며, 마이크로서비스 간의 결합도를 낮추는 효과가 있습니다.
이러한 이유로 현대의 클라우드 기반 애플리케이션에서 API 게이트웨이의 역할은 점점 더 중요해지고 있습니다.
API Gateway 는 크게 오픈 소스와 상용 제품으로 나눌 수 있습니다.
오픈 소스로는 Kong, Tyk, Zuul 등이 있으며, 상용 제품으로는 AWS API Gateway, Azure API Management 등이 있습니다. 스프링 클라우드 게이트웨이는 자바 개발자들 사이에서 인기 있는 API 게이트웨이 솔루션 중 하나로, 스프링 부트와 스프링 클라우드 생태계와의 높은 호환성을 제공합니다. 스프링 클라우드 게이트웨이는 비동기 I/O를 기반으로 하며, Netty 서버를 사용합니다. 이는 고성능을 제공하며, 리액티브 프로그래밍 모델을 지원합니다. 인증, 로깅, 요청 변환 등 다양한 크로스 커팅 관심사를 효과적으로 관리할 수 있습니다.
API Gateway 를 선택할 때 고려해야 할 요소는 여러 가지가 있습니다.
우선, 프로젝트의 요구 사항과 예산을 고려해야 합니다. 오픈 소스 제품은 비용이 저렴하거나 무료이지만, 기업 지원이 필요한 경우 상용 제품을 선택하는 것이 좋습니다.
또한, 게이트웨이가 제공하는 기능과 확장성도 중요한 선택 기준입니다. 예를 들어, 인증 및 권한 부여, 요청 변환, 로깅 등 필요한 기능을 지원하는지 확인해야 합니다.
성능과 안정성도 중요한 고려 사항입니다. 대규모 트래픽을 처리할 수 있는지, 장애 발생 시 빠르게 복구할 수 있는지 등을 검토해야 합니다.
API Gateway 의 라우팅 처리나 필터 처리가 웹서버(apache, NginX) 의 역학과 크게 다르지 않아 보일 수도 있지만, API Gateway 는 라우팅 및 필터링과 같은 게이트웨이로써의 역할이 주 용도이고, 웹서버는 웹 리소스들의 서비스가 주 용도입니다. 웹 서버의 리소스(HTML 등) 를 서비스 하는데에 있어, 라우팅 기능 및 필터링을 추가하여 사용할 수 있습니다.
NginX 와 같은 웹 서버에서도 라우팅 처리가 가능합니다. 실제로 쿠버네티스를 이용하여 Spring Cloud 로 작성된 애플리케이션을 배포할 때는 외부와의 접속을 허용하기 위한 라우팅에 Ingress Contorller + Nginx 조합으로 사용되기도 합니다.
'IT 세상' 카테고리의 다른 글
[MSA] 후보 서비스 평가 기준 및 설계 표준, 트랜잭션 설계 및 업무 프로세스 개선안 (0) | 2024.08.12 |
---|---|
MSA 심층 서술형 예상 문제 (0) | 2024.08.11 |
Application Architect 심층 서술형 예상 질문 (0) | 2024.08.11 |
Application Architect 직무 면접, 채용 예상 질문 (0) | 2024.08.11 |
ACID (0) | 2024.08.11 |