MSA - API Gateway

salgu1998·2022년 5월 22일
0

API Gateway란

  • 여러 클라이언트 앱이 있는 대규모 또는 복잡한 마이크로 서비스 기반 애플리케이션을 디자인하고 빌드하는경우 API Gateway가 좋은 방법이 될 수 있고 API Gateway는 마이크로 서비스의 특정 그룹에 단일 진입점을 제공하는 서비스 입니다.
  • 클라이언트 앱이 백 엔드에 대한 요청 수를 최소화하고 여러 마이크로 서비스에 대한 번거로운 통신을 줄여줍니다.
  • 인증, SSL, 캐시와 같은 기능을 제공할 수 있습니다.

Client-MicroService간 직접 통신 대신 API 게이트웨이를 고려하는 이유

MSA에서 클라이언트 앱은 일반적으로 둘 이상의 마이크로 서비스에서 제공하는 기능을 사용해야 합니다.
해당 요청이 직접 실행되는 경우 클라이언트는 마이크로 서비스 엔드포인트에 여러 요청을 처리해야 합니다.
애플리케이션이 개선되고 새 마이크로 서비스가 도입되었거나 기존 마이크로 서비스가 업데이트되면 클라이언트 앱에서 많은 엔드포인트를 처리하는 문제가 생깁니다.
클라이언트 앱은 해당 내부 엔드포인트에 결합되므로 나중에 마이크로 서비스가 개선되면 클라이언트 앱에 큰 영향을 줄 수 있습니다.

  • 결합 : API Gateway Pattern이 없으면 클라이언트 앱은 내부 마이크로 서비스에 강하게 결합됩니다. 클라이언트 앱은 애플리케이션의 여러 영역이 마이크로 서비스 구조를 알아야 합니다.
    내부 마이크로 서비스를 개선하고 리팩터링할 경우 클라이언트 앱에서 내부 마이크로 서비스를 직접 참조하기 때문에 클라이언트 앱에 호환성이 손상되는 변경이 발생하므로 해당 작업은 유지 관리에 영향을 줍니다.
  • 요청 효율성 : 클라이언트 앱의 단일 페이지/화면에서 여러 서비스를 여러번 호출해야 할 수 있습니다.
    해당 접근 방식으로 인해 클라이언트와 서버 간에 네트워크 왕복이 발생할 수 있어 대기 시간이 늘어납니다. API Gateway Pattern을 사용하면 클라이언트 앱의 성능과 사용자 환경을 향상할 수 있습니다.
  • 보안 : API Gateway가 없으면 모든 마이크로 서비스가 노출되어야 하므로 상대적으로 보안에 더 취약해집니다.
  • cross-origin 문제: API Gateway Pattern을 사용하지 않는 각 마이크로 서비스는 권한 부여 및 SSL과 같은 문제를 처리해야 합니다.
    대부분의 경우 이러한 문제는 API Gateway 단일 계층에서 처리할 수 있으므로 내부 마이크로 서비스가 간소화됩니다.





refer: https://docs.microsoft.com/ko-kr/dotnet/architecture/microservices/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern

profile
https://github.com/salgu1998 | salgu1998@gmail.com

0개의 댓글