실전 MSA 경험 공유 세미나 메모

murkgom·2022년 5월 27일
0
post-custom-banner

https://okky.kr/article/1229709

Why MSA?

  • 특정 트래픽이 몰리는 service만 scale out하기 용이
  • 부분적인 변화에 용이(그 부분만 재배포)
  • 레거시 개선에 용이(점진적으로 적용하면 되니까)
  • 스타트업 등에서 부분부분 작게 출시 가능
  • 실패 비용도 적을 수 있음(한 서비스당)
  • 기술 선택에 제약이 없음(polyglot 가능)

MSA의 단점

  • Transaction 처리의 어려움
    - 데이터의 안정성, 신뢰성이 최우선인 곳은 적용이 어려울 수 있음
  • 러닝 커브
  • 이해도(나중에 다른 사람이 업무 로직 따라가볼 때 등)
  • 테스트 및 모니터링의 어려움

MSA Pattern

DB 관련

  • CQRS : view 테이블 활용...
  • Saga : vuex 느낌(transaction을 별도 관리)
  • Shared : 통합 DB

API Gateway 관련

  • Server Side : Router 필요. Scale-out 매커니즘 필요
  • Client Side : Registry한테 사용 가능한 Instance를 쿼리로 질의
  • Circuit breaker : 한 인스턴스에서 응답이 없을 경우, 그 연결을 끊어 다른 인스턴스에서 에러 처리할 수 있도록 하는..?
  • BFF(Backend For Frontend) : api와 ui 사이를 mapping해주는 역할..?

MSA 적용 경험

  1. 도메인 관점에서 비즈니스 로직 구분(포스트잇으로 워크샵까지 해가면서 ㄷㄷ)
  2. Actor, 데이터, 숨겨진 이벤트 등 여러 관점에서 한 번 더 구분
  3. 관리자 서비스는 Monolithic & 모든 DB 접근 권한
  4. 외부 통신만 담당하는 서비스 배치
  5. 리스크가 큰 프로세스(계약 & 결제 등)는 하나의 Service로 묶어 Transaction 처리

기타

istio

Fault Injection을 통해 실제 환경 기반 장애 대응 테스트에 용이

토이 프로젝트

기능 구현보다는 전체 아키텍쳐 및 통신 등의 패턴 학습에 중점을 둘 것

낯선 용어들

  • event sourcing, event storming
  • service mesh : https://bcho.tistory.com/1292
  • spring cloud gateway
  • envoy proxy
  • akamai : 웹 캐싱 서비스를 제공하는 B2B 솔루션 회사
  • sonar qube
  • [모니터링] elk, kiali, prometheus, grafana
  • mini service(hybrid service?)
post-custom-banner

0개의 댓글