본문 바로가기
개발/MSA

[MSA] MSA(마이크로 서비스 아키텍처)는 무엇인가?(개념, 장단점, 조건 등)

by 궁즉변 변즉통 통즉구 2024. 5. 26.
반응형

MSA 배경

  • 비즈니스 Agility(민첩성): 비즈니스의 경쟁력을 위해서 끊임없고 빠른 비즈니스 변화를 IT기술을 활용해서 추구.
    예전에는 IT기술이 비즈니스를 후방에서 지원하는 서비스였지만 이제는 비즈니스의 근본적인 혁신을 위해 비즈니스의 주체를 IT에 맡긴다(DX)
  • 기술적으로는 결국 배포 빈도가 빠르다(ex. 아마존: 2014년, 초단 1.5회 배포를 한다)
    ⇒ 그만큼 서비스가 계속 개선하고 변화하고 있다는 의미다
  • IT선진회사들은 안정적이고 빈번하게 배포를 하기 위한 방법이 무엇일까?? 를 고민하기 시작했고, 기술적인 변화를 주도하기 시작.
    1. 클라우드 인프라: 원하는 시점에 필요한 만큼 빠르게 인프라 제공, 사용한만큼 비용 지불, 사용빈도에 따라 자동 Scale Out/In 처리
    2. 클라우드 인프라에 적합한 어플리케이션(CloudNative): Scale Out에 어떤 구조가 더 효율적인가?? 어플리케이션 전체가 확장되는 구조(모노리스) → 필요한 영역만 확장하는것이 효율적!! ⇒ 마이크로 서비스 = CloudNative 어플리케이션

출처: https://tmdrl5779.tistory.com/179

 

MSA 개념

일반적인 레거시 시스템(모놀리식 아키텍처)

- 어플리케이션이 한 덩어리로 단일 프로세스로 실행
- 한 덩어리로 수정되고 한 덩어리로 배포 됨 => 하나가 실패하면 전체 어플리케이션의 실패

- 객체간의 의존 관계 파악이 어려움, 시스템 전체 구조 파악 어려움
-
의존 관계가 큼으로 팀간 커뮤니케이션 측면의 비효율 발생

- 특정 부분 버그 발견 시 전체 릴리즈 중지 됨 ⇒ 배포에 부담, 개발자의 배포 자산감 떨어짐

- 규모 커질 수록 전체 빌드 및 결합에 많은 시간 걸림

- 사이즈가 큰 아티팩트로 이식성에 문제 될 수 있음(컨테이너 및 서버리스 등 적용 불가)

 

MSA(마이크로 서비스 아키텍처) 

- 어플리케이션이 여러 개의 서비스로 분리되고 각자 독립적인 기능 제공
- 각 서비스가 사용하는 저장소의 분리로 완전한 격리 
- 독립적으로 수정, 배포, 확장 가능 

 

MSA의 장점과 고려사항

장점 고려 사항
책임이 명확한 작은 서비스 단위로 빠른 어플리케이션 릴리즈 가능 서비스 간의 통신 지연
빠르고 유연한 어플리케이션 변경 및 유지/관리
(비즈니스 변경 및 신기술 적용 용이)
분산 배치된 데이터 동기화
작은 단위의 Scale Out 가능

분산 컴퓨팅 환경의 운영 및 감시 비용
(서비스 단위로는 단순하지만 전체 시스템적으로는 복잡성 증가)
서비스 분리에 따른 장애 영향 최소화 시스템 전체 설계의 일관성 및 통일성
DDD 설계 활용으로 책임 범위, 서비스 간 의존관계가 명시적 임 서비스 모델링 기법의 학습 난이도

 

모놀리식 아키텍처 vs MSA 비교

 

MSA 성공을 위한 조건

- MSA를 통해 비즈니스 Agility를 높이기 위해서는 여러 영역의 기술 뿐만 아니라 조직, 개발문화, 프로세스 등의 변화도 필요

출처: https://www.msaschool.io/operation/planning/planning/

 

변화 영역 내용
인프라 - 안정적이고 유연하고 빠른 인프라 구성, 온 디맨드 확장, 탄력성 등 지원
- Public Cloud, IaC, 컨테이너 등
자동화 - 개발 도구 자동화, 테스트 자동화, CI/CD 자동화 등
어플리케이션 설계 방식 - MSA, DDD, 데이터 중복 허용, Eventual Consistency(결과적 일관성), 비동기 통신 등
- 기존 데이터베이스 중심의 설계방식(정규화, 트랜잭션, 프로시저)에서 벗어나야 함
조직 - 기능 및 업무 단위 자율적인 권한과 책임 부여, DevOps 조직
- 조직간 커뮤니케이션 구조(신속하고 신뢰를 기반으로한 협업)
개발 문화 - 공유, 협업, 학습, 자율, 책임을 통한 지속적인 성장과 진화 
- 실패에 대한 개인의 잘못이 아닌 프로세스의 문제를 파악하는 기회로 활용
개발 프로세스 - 점진적, 반복적, 빠른 피드백과 반영의 개발 프로세스, Agile 프로세스

- MSA만 적용한다고 해서 선진 기술 조직이 되는 것은 아니다. 조직/문화/프로세스를 함께 변경했기 때문에 MSA가 가능한 것이다. 

- 빅뱅 방식으로 한번에 모든 것을 바꾸기는 리스크가 많이 크고 점진적인 적용이 필요(스트랭글러 패턴)
   점진적인 적용으로 기술적 성숙도 뿐만 아니라 조직의 성숙도도 함께 향상되어야 함

- 모든 시스템이 MSA가 필요한 것은 아님(= 모든 비즈니스가 Agility, 신기술, 탄력성, 확장성 등이 필요한 것은 아님)
   백오피스 시스템 같은 경우 성능, 내고장성, 비용, 안정성 등이 더 중요할 수 있음

 

 

MSA 성숙도

- 모놀리식  ->  매크로(Macro) 서비스  ->  미니(Mini) 서비스  ->  마이크로(Micro) 서비스

출처: https://www.inflearn.com/course/%EC%8B%A4%EB%AC%B4-msa-%EC%9D%B4%EC%95%BC%EA%B8%B0

 

반응형

댓글