Link Search Menu Expand Document

마이크로서비스 아키텍처 : 패턴과 핵심 기술

MSA의 장점

  1. 빠른 Delivery
  2. Polyglot Architecture 지원
  3. 실험과 혁신 가능
  4. 탄력적이고 선택적인 확장
  5. 대체가능성
  6. 기술 부채의 경감

빠른 Delivery

각 서비스는 독립적으로 개발되고 느슨하게 결합

서비스는 작기 때문에 코드 수정에 대한 영향 범위가 상대적으로 작음

  • 빠른 영향도 파악, 빠른 빌드, 빠른 테스트

각 서비스들은 네트워크를 통한 Interface로 느슨히 결합됨

  • 서비스 간 자율적인 배포 가능

Polyglot Architecture 지원

전통적 개발 환경은 조직의 표준 기술을 만들고 모든 조직에 강제

특정 Task에 가장 적절한 기술을 적용 가능

각 서비스는 자신만의 고유한 언어/프레임워크 선택 가능

실험과 혁신 가능

최근 비즈니스 상황에서는 기술의 혁신이 필수적

Monolith 환경에서는 단순한 기술 실험도 어려움

  • DB/Framework 변경은 물론 언어의 버전 업도 영향도와 비용 문제로 인하여 어려운 작업

마이크로서비스는 작은 코드 베이스, 서비스 간 느슨한 결합으로 새로운 기술들을 쉽게 실험해 볼 수 있음

탄력적이고 선택적인 확장

작은 서비스 단위로 확장 가능

Monolith는 전체 Scale Out이 필요하여 비효율적

각 서비스는 코드베이스가 작아 확장 비용이 상대적으로 저럼

대체가능성

언어/프레임워크를 완전히 새롭게 개발하거나 오픈소스/커머셜 솔루션으로 대체 가능

  • 각 서비스가 작고 서비스 간에 느슨하게 연결되어 있기 때문

기술 부채의 경감

S/W도 나이를 먹고 관리하지 않으면 기술 부채가 쌓임

MSA는 서비스 크기가 작아 품질 관리에 용이

품질 향상을 위한 코드 개선 시 영향도 작음

  • 지속적인 개선 작업이 조직의 문화로 자리잡을 수 있음

MSA의 단점

컴퓨팅 자원의 사용이 Monolith보다 비효율적

  • 성능: 내부 호출보다 느리다
  • 메모리: JVM 등 중복적인 자원 사용

운영 관리가 어려움

모니터링 대상 증가

배포 대상 서비스 증가 및 기술의 다변화

다양한 장애 상황 발생

단위 테스트 컴포넌트 테스트 난이도 증가

DB 트랜잭션 처리 어려움

서비스 간 Polyglot Data Store 사용

분산 환경에서 트랜잭션 어려움

트랜잭션(Transaction)?

Query가 실행되면 모든 과정이 수행되거나 모두 수행되지 않는 작업수행의 논리적 단위이다.

트랜잭션은 4가지 특성을 가지고 있는데 앞 글자를 따 ACID 특성이라고 한다.

  1. 원자성 (Atomicity)
    • 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장
  2. 일관성 (Consistency)
    • 트랜잭션 수행 전, 후에 데이터 모델의 모든 제약 조건을 만족하는 것을 보장
  3. 격리성 (Isolation)
    • 트랜잭션 수행시 다른 트랜잭션이 끼어들지 못하도록 보장
    • 이로 인하여 deadlock이 발생할 수 있으므로 주의
  4. 지속성 (Durability)
    • 성공적으로 수행된 트랜잭션은 영원이 반영되도록 보장

MSA의 특징