MSA란

박세건·2024년 7월 19일
0

기술 학습

목록 보기
9/11

MSA(Microservice Architecture) 기술 스택

마이크로서비스 아키텍처(Microservice Architecture, MSA)를 구현할 때 일반적으로 사용되는 기술 및 스택에 대해 알아보겠습니다. 각 기술은 MSA의 특성과 요구사항에 맞게 유기적으로 연계되어 사용됩니다.


1. 서비스 간 통신

역할

  • 마이크로서비스 간 느슨한 결합을 위한 통신 수단.

사용 기술

  • REST API: HTTP 기반의 간단하고 직관적인 통신 방식.
  • gRPC: 고성능, 직렬화된 바이너리 데이터를 사용하는 통신.
  • Message Broker: RabbitMQ, Apache Kafka 등으로 비동기 메시징 지원.
  • Service Mesh: Istio, Linkerd 등으로 서비스 간 통신을 효과적으로 관리.

2. 서비스 디스커버리

역할

  • 동적으로 생성/삭제되는 마이크로서비스를 식별하고 상태를 관리.

사용 기술

  • Consul: 분산형 서비스 디스커버리 및 상태 관리.
  • Zookeeper: 분산형 코디네이터.
  • Eureka: Spring Cloud 기반 서비스 디스커버리 도구.
  • Etcd: 경량화된 분산 키-값 저장소.

3. API Gateway

역할

  • 클라이언트와 마이크로서비스 간 단일 진입점 역할.
  • 인증, 권한 관리, 트래픽 라우팅, 부하 분산 등의 기능 제공.

사용 기술

  • Kong: 고성능 오픈소스 API Gateway.
  • Nginx: 경량화된 고성능 리버스 프록시 서버.
  • Spring Cloud Gateway: Spring 기반의 유연한 API Gateway.
  • Zuul: Netflix 오픈소스 API Gateway.

4. 컨테이너 및 오케스트레이션

역할

  • 마이크로서비스의 독립적인 배포/운영.

사용 기술

  • Docker: 애플리케이션을 컨테이너로 패키징하여 실행 환경 제공.
  • Kubernetes: 컨테이너 오케스트레이션 및 자동화.
  • Swarm: Docker 네이티브 오케스트레이션 도구.
  • Nomad: 경량화된 컨테이너 오케스트레이션 도구.

5. 모니터링 및 로깅

역할

  • 서비스 상태, 성능, 로그, 분산 트레이싱 정보를 수집하고 분석.

사용 기술

  • Prometheus: 모니터링 및 경고 도구.
  • Grafana: 시각화 및 대시보드 생성.
  • ELK Stack: Elasticsearch, Logstash, Kibana를 통한 로그 분석.
  • Zipkin, Jaeger: 분산 트레이싱 도구.

6. CI/CD

역할

  • 마이크로서비스의 빠른 빌드, 테스트, 배포 자동화.

사용 기술

  • Jenkins: 오픈소스 CI/CD 도구.
  • GitLab CI/CD: GitLab 내장 CI/CD 솔루션.
  • GitHub Actions: GitHub 통합 CI/CD 도구.
  • CircleCI: 클라우드 기반 CI/CD 서비스.

7. 프로그래밍 언어 및 프레임워크

역할

  • 다양한 요구사항에 맞춘 마이크로서비스 개발.

사용 기술

  • Java: Spring Boot, Quarkus, Micronaut.
  • Node.js: Express.js, Nest.js.
  • Python: Flask, FastAPI.
  • Go: Gin, Fiber.
  • .NET: ASP.NET Core.

8. 데이터베이스

역할

  • 각 마이크로서비스의 데이터 관리.

사용 기술

  • RDBMS: MySQL, PostgreSQL.
  • NoSQL: MongoDB, Cassandra.
  • In-Memory DB: Redis, Memcached.

9. 메시징 및 이벤트 스트리밍

역할

  • 비동기 통신과 이벤트 스트리밍 지원.

사용 기술

  • RabbitMQ: 메시지 브로커.
  • Apache Kafka: 고성능 이벤트 스트리밍 플랫폼.
  • Amazon SQS, SNS: AWS 기반 메시징 서비스.

10. 서비스 메시

역할

  • 서비스 간 통신 관리.

사용 기술

  • Istio: 트래픽 관리, 보안, 모니터링.
  • Linkerd: 경량 서비스 메시.
  • Consul Connect: HashiCorp의 서비스 메시 솔루션.

MSA 구현 시 주요 고려사항

MSA를 성공적으로 구현하려면 각 기술의 역할과 상호 작용을 이해하고, 서비스 간 통신, 데이터 관리, 배포 프로세스 등에 대한 체계적인 접근이 필요합니다. 기술 스택은 프로젝트의 요구사항에 따라 유연하게 선택하며, 각 도구의 장단점을 잘 분석하여 활용하는 것이 중요

profile
멋있는 사람 - 일단 하자

0개의 댓글