MSA 아키텍처의 동작 방식

CosmoNumb·2024년 8월 1일
0

MSA

목록 보기
3/13

MSA 아키텍처의 동작 방식

마이크로서비스 아키텍처(MSA)는 독립적으로 배포 가능하고, 각기 다른 비즈니스 기능을 수행하는 작은 서비스들로 구성됩니다. 이러한 서비스들은 서로 협력하여 전체 애플리케이션을 구성합니다. MSA 아키텍처가 어떻게 동작하는지, 클라이언트 요청이 어떻게 처리되는지, 그리고 API 게이트웨이, 로드밸런싱 등의 기술이 어떻게 사용되는지 전체적인 흐름을 설명하겠습니다.

MSA 아키텍처의 구성 요소

  1. 클라이언트(Client): 웹, 모바일 앱, 기타 클라이언트 애플리케이션.
  2. API 게이트웨이(API Gateway): 클라이언트의 요청을 받아서 적절한 마이크로서비스로 전달하는 중간 레이어.
  3. 서비스 레지스트리(Service Registry): 각 마이크로서비스의 위치(예: IP 주소와 포트)를 등록하고 조회하는 시스템.
  4. 로드 밸런서(Load Balancer): 여러 인스턴스에 걸쳐 트래픽을 분산하여 부하를 줄이는 역할.
  5. 마이크로서비스(Microservices): 각각 독립적인 비즈니스 기능을 수행하는 작은 서비스들.
  6. 데이터베이스(Database): 각 마이크로서비스가 독립적으로 접근하고 사용하는 데이터 저장소.

전체 흐름

  1. 클라이언트 요청

    • 클라이언트가 API 게이트웨이에 요청을 보냅니다.
  2. API 게이트웨이

    • API 게이트웨이는 클라이언트 요청을 받아 적절한 마이크로서비스로 라우팅합니다. API 게이트웨이는 인증, 인가, 로깅, 트래픽 관리 등의 기능을 수행할 수 있습니다.
  3. 서비스 레지스트리

    • API 게이트웨이는 서비스 레지스트리로부터 해당 마이크로서비스의 위치를 조회합니다. 서비스 레지스트리는 각 마이크로서비스의 IP 주소와 포트를 저장하고 관리합니다.
  4. 로드 밸런서

    • API 게이트웨이는 로드 밸런서를 통해 트래픽을 적절한 마이크로서비스 인스턴스로 분산시킵니다. 로드 밸런서는 각 인스턴스의 상태를 모니터링하고 트래픽을 균등하게 분배합니다.
  5. 마이크로서비스

    • 로드 밸런서를 통해 전달된 요청은 적절한 마이크로서비스에서 처리됩니다. 각 마이크로서비스는 독립적으로 개발, 배포, 확장될 수 있으며, 자신의 데이터베이스에 접근합니다.
  6. 데이터베이스

    • 마이크로서비스는 필요한 데이터를 데이터베이스에서 조회하거나 저장합니다. 각 마이크로서비스는 독립적인 데이터베이스를 가질 수 있으며, 이를 통해 데이터 격리를 유지합니다.
  7. 응답 반환

    • 마이크로서비스는 처리 결과를 API 게이트웨이를 통해 클라이언트에 반환합니다.

MSA 아키텍처 구성 흐름

  1. 클라이언트 요청

    • 클라이언트 → API 게이트웨이
  2. API 게이트웨이

    • API 게이트웨이 ↔ 서비스 레지스트리 (위치 조회)
    • API 게이트웨이 → 로드 밸런서
  3. 로드 밸런서

    • 로드 밸런서 → 마이크로서비스 인스턴스
  4. 마이크로서비스

    • 마이크로서비스 ↔ 데이터베이스
  5. 응답 반환

    • 마이크로서비스 → API 게이트웨이 → 클라이언트

사용되는 주요 기술들

  1. API 게이트웨이

    • Zuul, Kong, NGINX, API Gateway (AWS), Apigee 등
  2. 서비스 레지스트리

    • Eureka, Consul, Zookeeper 등
  3. 로드 밸런서

    • NGINX, HAProxy, AWS Elastic Load Balancer, GCP Load Balancer 등
  4. 컨테이너 오케스트레이션

    • Kubernetes, Docker Swarm 등
  5. 모니터링 및 로깅

    • Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), Zipkin, Jaeger 등
  6. 메시징

    • RabbitMQ, Apache Kafka, AWS SNS/SQS 등

결론

마이크로서비스 아키텍처는 각 서비스가 독립적으로 개발, 배포, 확장될 수 있어 높은 유연성과 확장성을 제공합니다. 하지만 이를 위해서는 API 게이트웨이, 서비스 레지스트리, 로드 밸런싱 등의 다양한 기술이 필요하며, 전체 시스템의 복잡성을 관리하는 것이 중요합니다. MSA의 전체적인 흐름과 각 구성 요소의 역할을 이해함으로써 더 나은 아키텍처 설계와 운영이 가능해집니다.

0개의 댓글