마이크로서비스 내부 및 외부 통신

날아올라돼지야·2024년 8월 27일
0

이 챕터에서는 마이크로서비스 아키텍처 내에서 내부 통신과 관련된 개념과 문제점을 다루게 됩니다. 본격적으로 문제를 논의하기 전에, 마이크로서비스 환경에서의 전체 구조와 통신 경로를 이해하는 것이 중요합니다.

1. 마이크로서비스 아키텍처 개요

  • 마이크로서비스 개요:

    • 현재 accounts, loans, cards라는 세 가지 마이크로서비스가 있습니다. 각 마이크로서비스는 데이터 저장, 데이터 가져오기, 클라이언트 요청 처리 및 응답 제공 등의 특정 비즈니스 로직을 담당합니다.
    • 이러한 마이크로서비스들은 시스템의 비즈니스 로직 계층을 구성합니다.
  • 배포 및 네트워크:

    • 실제 마이크로서비스 아키텍처에서는 마이크로서비스가 공통 네트워크(보통 마이크로서비스 네트워크라고 불림) 내에 배포됩니다.
    • 이 네트워크는 마이크로서비스가 안전하고 효율적으로 서로 통신할 수 있는 격리된 환경을 제공합니다.
    • 마이크로서비스 네트워크는 일반적으로 방화벽으로 둘러싸여 있어, 마이크로서비스가 안전하게 동작할 수 있도록 보호합니다.

2. 외부 통신과 API 게이트웨이

  • 단일 진입점:

    • 보안 및 외부 트래픽 관리를 위해, 모든 외부 클라이언트(C1, C2, C3 등)는 단일 진입점(API 게이트웨이)을 통해서만 마이크로서비스에 접근할 수 있습니다.
    • API 게이트웨이는 모든 외부 트래픽이 통제되고 안전한 게이트웨이를 통해 마이크로서비스 네트워크에 들어올 수 있도록 하는 역할을 합니다.
    • API 게이트웨이의 주요 역할:
      • 보안: 인증 및 권한 부여 등의 보안 정책을 적용할 수 있습니다.
      • 감사 및 로깅: 들어오는 모든 요청을 기록하고 모니터링할 수 있습니다.
      • 트래픽 관리: API 게이트웨이는 트래픽을 적절한 마이크로서비스로 라우팅하고 관리할 수 있습니다.
  • 외부 트래픽:

    • 외부 클라이언트로부터 시작되어 API 게이트웨이를 통해 마이크로서비스 네트워크에 도달하는 트래픽을 외부 트래픽이라고 합니다.
    • API 게이트웨이는 외부 트래픽을 검증하고 처리한 후, 적절한 마이크로서비스로 라우팅합니다.

3. 내부 통신

  • 내부 통신 개요:

    • 요청이 마이크로서비스 네트워크에 들어오면, 해당 요청을 처리하기 위해 마이크로서비스들이 서로 통신해야 할 수도 있습니다.
    • 예를 들어, API 게이트웨이를 통해 accounts 마이크로서비스에 외부 요청이 들어오면, accounts 마이크로서비스는 응답을 완료하기 위해 loanscards 마이크로서비스와 상호 작용해야 할 수 있습니다.
    • 이러한 마이크로서비스 간의 통신을 내부 통신이라고 합니다.
  • 내부 통신에서의 문제점:

    • 서비스 디스커버리: 마이크로서비스가 네트워크 내에서 다른 마이크로서비스를 발견하고 위치를 확인하는 메커니즘이 필요합니다. 마이크로서비스는 동적으로 변화할 수 있기 때문에 IP 주소나 포트가 자주 변경될 수 있습니다.
    • 로드 밸런싱: 여러 마이크로서비스 인스턴스 간에 요청을 효율적으로 분산하는 것이 중요합니다.
    • 장애 허용성: 내부 통신은 장애에 대해 회복탄력성을 가져야 합니다. 하나의 마이크로서비스가 다운되거나 응답하지 않더라도 시스템이 이를 안정적으로 처리해야 합니다.
    • 지연 및 성능: 내부 통신에서의 지연을 최소화하는 것이 전체 시스템 성능 유지에 필수적입니다.
    • 보안: 네트워크 내부에서도 마이크로서비스 간의 안전한 통신을 보장해야 데이터 유출이나 무단 접근을 방지할 수 있습니다.

4. 섹션의 초점

  • 내부 통신 초점:
    • 이번 섹션에서는 내부 통신과 관련된 문제와 해결책에 중점을 둘 것입니다.
    • 서비스 디스커버리 메커니즘, 로드 밸런싱, 장애 허용성 등을 구현하여 마이크로서비스 네트워크 내에서 원활한 통신이 이루어질 수 있도록 하는 방법을 탐구할 것입니다.
    • 외부 통신 및 API 게이트웨이와 관련된 부분은 이후 섹션에서 다룰 예정입니다.

5. 결론

  • 마이크로서비스에서 내부 통신과 외부 통신을 구분하는 것은 강력하고 확장 가능한 아키텍처를 설계하고 구현하는 데 필수적입니다.
  • 이번 섹션을 통해 내부 통신 문제를 효과적으로 처리할 수 있는 지식을 습득하게 될 것입니다.

이러한 기초 개념을 이해하면 마이크로서비스 아키텍처의 복잡성을 처리하고 유지하는 데 큰 도움이 될 것입니다.

profile
무슨 생각하며 사니

0개의 댓글