이 챕터에서는 마이크로서비스 아키텍처 내에서 내부 통신과 관련된 개념과 문제점을 다루게 됩니다. 본격적으로 문제를 논의하기 전에, 마이크로서비스 환경에서의 전체 구조와 통신 경로를 이해하는 것이 중요합니다.
1. 마이크로서비스 아키텍처 개요
-
마이크로서비스 개요:
- 현재
accounts
, loans
, cards
라는 세 가지 마이크로서비스가 있습니다. 각 마이크로서비스는 데이터 저장, 데이터 가져오기, 클라이언트 요청 처리 및 응답 제공 등의 특정 비즈니스 로직을 담당합니다.
- 이러한 마이크로서비스들은 시스템의 비즈니스 로직 계층을 구성합니다.
-
배포 및 네트워크:
- 실제 마이크로서비스 아키텍처에서는 마이크로서비스가 공통 네트워크(보통 마이크로서비스 네트워크라고 불림) 내에 배포됩니다.
- 이 네트워크는 마이크로서비스가 안전하고 효율적으로 서로 통신할 수 있는 격리된 환경을 제공합니다.
- 마이크로서비스 네트워크는 일반적으로 방화벽으로 둘러싸여 있어, 마이크로서비스가 안전하게 동작할 수 있도록 보호합니다.
2. 외부 통신과 API 게이트웨이
-
단일 진입점:
- 보안 및 외부 트래픽 관리를 위해, 모든 외부 클라이언트(C1, C2, C3 등)는 단일 진입점(API 게이트웨이)을 통해서만 마이크로서비스에 접근할 수 있습니다.
- API 게이트웨이는 모든 외부 트래픽이 통제되고 안전한 게이트웨이를 통해 마이크로서비스 네트워크에 들어올 수 있도록 하는 역할을 합니다.
- API 게이트웨이의 주요 역할:
- 보안: 인증 및 권한 부여 등의 보안 정책을 적용할 수 있습니다.
- 감사 및 로깅: 들어오는 모든 요청을 기록하고 모니터링할 수 있습니다.
- 트래픽 관리: API 게이트웨이는 트래픽을 적절한 마이크로서비스로 라우팅하고 관리할 수 있습니다.
-
외부 트래픽:
- 외부 클라이언트로부터 시작되어 API 게이트웨이를 통해 마이크로서비스 네트워크에 도달하는 트래픽을 외부 트래픽이라고 합니다.
- API 게이트웨이는 외부 트래픽을 검증하고 처리한 후, 적절한 마이크로서비스로 라우팅합니다.
3. 내부 통신
-
내부 통신 개요:
- 요청이 마이크로서비스 네트워크에 들어오면, 해당 요청을 처리하기 위해 마이크로서비스들이 서로 통신해야 할 수도 있습니다.
- 예를 들어, API 게이트웨이를 통해
accounts
마이크로서비스에 외부 요청이 들어오면, accounts
마이크로서비스는 응답을 완료하기 위해 loans
및 cards
마이크로서비스와 상호 작용해야 할 수 있습니다.
- 이러한 마이크로서비스 간의 통신을 내부 통신이라고 합니다.
-
내부 통신에서의 문제점:
- 서비스 디스커버리: 마이크로서비스가 네트워크 내에서 다른 마이크로서비스를 발견하고 위치를 확인하는 메커니즘이 필요합니다. 마이크로서비스는 동적으로 변화할 수 있기 때문에 IP 주소나 포트가 자주 변경될 수 있습니다.
- 로드 밸런싱: 여러 마이크로서비스 인스턴스 간에 요청을 효율적으로 분산하는 것이 중요합니다.
- 장애 허용성: 내부 통신은 장애에 대해 회복탄력성을 가져야 합니다. 하나의 마이크로서비스가 다운되거나 응답하지 않더라도 시스템이 이를 안정적으로 처리해야 합니다.
- 지연 및 성능: 내부 통신에서의 지연을 최소화하는 것이 전체 시스템 성능 유지에 필수적입니다.
- 보안: 네트워크 내부에서도 마이크로서비스 간의 안전한 통신을 보장해야 데이터 유출이나 무단 접근을 방지할 수 있습니다.
4. 섹션의 초점
- 내부 통신 초점:
- 이번 섹션에서는 내부 통신과 관련된 문제와 해결책에 중점을 둘 것입니다.
- 서비스 디스커버리 메커니즘, 로드 밸런싱, 장애 허용성 등을 구현하여 마이크로서비스 네트워크 내에서 원활한 통신이 이루어질 수 있도록 하는 방법을 탐구할 것입니다.
- 외부 통신 및 API 게이트웨이와 관련된 부분은 이후 섹션에서 다룰 예정입니다.
5. 결론
- 마이크로서비스에서 내부 통신과 외부 통신을 구분하는 것은 강력하고 확장 가능한 아키텍처를 설계하고 구현하는 데 필수적입니다.
- 이번 섹션을 통해 내부 통신 문제를 효과적으로 처리할 수 있는 지식을 습득하게 될 것입니다.
이러한 기초 개념을 이해하면 마이크로서비스 아키텍처의 복잡성을 처리하고 유지하는 데 큰 도움이 될 것입니다.