마이크로서비스 패턴 1장

백종현·2024년 4월 29일
0
post-custom-banner

마이크로서비스 패턴 책 1장

모놀리틱 구조에서 애플리케이션의 규모가 커질수록, 관리가 어려워지고, 결함이 영향을 많이 미치게 된다. 또한, 테스트 실행이나 디버깅에 많은 시간을 미치기 때문에 배포가 오래 걸리는 현상이 발생한다. 뿐만 아니라, 각 서비스의 의존성 때문에 팀의 크기는 커지게 되고 팀의 효율성이 떨어진다.

애플리케이션의 확장 종류

  • 다중 인스턴스에 고루 요청 분산 (수평 확장)
  • 요청 속성별 라우팅 (샤딩)
  • 기능에 따른 애플리케이션 분해 (마이크로서비스)

'마이크로서비스' 에 대해 이야기해보자.

마이크로서비스 장점

  • 크고 복잡한 애플리케이션을 지속적으로 전달/배포할 수 있습니다.
  • 서비스 규모가 작아 관리하기 쉽습니다.
  • 서비스를 독립적으로 배포/확장할 수 있습니다.
  • 마이크로서비스 아키텍처 덕분에 팀이 자율적으로 움직입니다.
  • 결함 격리가 잘됩니다.
    • 장애 격리
  • 새로운 기술을 실험하고 도입하기 쉽습니다.

마이크로서비스 단점

  • 딱 맞는 서비스를 찾기가 쉽지 않습니다.
    • 서비스를 잘못 분해 시 결합도 높은 서비스로 이루어짐
  • 분산 시스템은 너무 복잡해서 개발, 테스트, 배포가 어렵습니다.
    • 분산 시스템의 복잡성 증대
    • 운영 복잡도 증가
    • 아래와 같은 서비스가 필요
      • 쿠버네티스: 도커 오케스트레이션 플랫폼
      • 오픈시프트: 컨테이너 기반 소프트웨어의 배포 및 관리를 위한 레드헷의 제품
      • 스핀네이커: 멀티 클라우드 기반의 연속 배포(CD)에 초점을 맞춘 오픈 소스 플랫폼
  • 여러 서비스에 걸친 기능을 배포할 때에는 잘 조정해야 합니다.
  • 마이크로서비스 아키텍처 도입 시점을 결정하기가 어렵습니다.

마이크로서비스 아키텍처 패턴 언어

  • 애플리케이션 아키텍처 패턴

    • 모놀리식 아키텍처
    • 마이크로서비스 아키텍처
  • 마이크로 서비스 패턴

    • 인프라 패턴 : 인프라 문제
    • 애플리케이션 인프라 : 개발 영향있는 인프라 문제
    • 애플리케이션 패턴 : 개발자가 맞닥드리는 문제
  • 애플리케이션을 여러 서비스로 분해하는 패턴 (ex: DDD)

  • 통신 패턴 (ex. IPC)

  • 트랜잭션 관리를 위한 일관성 패턴 (ex. 분산 트랜잭션 -> 사가 패턴)

  • 데이터 쿼리 패턴 (ex. CQRS, API 조합 패턴)

  • 서비스 배포 패턴 (ex. 컨테이너, 서버리스 배포)

  • 관측성 패턴 (ex. 헬스체크, 로그수집, 분산추적, 예외추적, 애플리케이션 지표, 감사로깅)

    • 애플리케이션의 동작을 파악할 수 있는 패턴
  • 서비스 테스트 자동화 패턴

    • 서비스가 조화로운지 확인하는 방법
  • 횡단 관심사 처리 패턴

    • 공통 관심사(ex. DB 자격증명 매개변수 전달)를 재사용하는 패턴
  • 보안 패턴 (ex. API Gateway에서 사용자 검증)

마이크로 서비스 : 프로세스와 조직

  • 규모가 큰 팀보다 규모가 작은 여러 팀이 효율
  • 지속적 전달/배포

마이크로서비스 아키텍처를 도입하면 아키텍처, 조직, 개발 프로세스가 모두 변화...

출처: "마이크로서비스 패턴" 중에서
크리스 리처드슨

profile
노력하는 사람
post-custom-banner

0개의 댓글