Microservice Architecture 란?
 - 애플리케이션을 자율적인 다수의 서비스로 분리하여 개발
 - 각자 별도의 프로세스에서 실행되며 가벼운 매커니즘으로 통신하는 작은 애플리케이션
 - 작은 서비스들은 각자의 비즈니스 기능을 담당, 자동화된 절차에 독립적인 배포
 - 각 서비스는 다른 프로그래밍 언어나 서로 다른 데이터 저장기술을 사용 가능


MSA 특징

 MSA가 Monolithic의 문제를 해결
 - 작은 서비스 단위로 확장 가능
 - 일부의 장애가 시스템 전체 장애로 이어지지 않음
 - 서비스 단위로 자율적 배포 가능
 - 결과적으로 빠르게 변화하는 비즈니스 환경에 민첩하게 대응 가능


 서비스를 통한 컴포넌트 화
 - MSA에서는 서비스 단위를 컴포넌트로 정의
 - 서비스는 응집도 높게 설계되어야 함
 - 서비스 간에는 명확한 인터페이스가 필요

 비즈니스 역량에 따른 조직 구성
 - Conway의 법칙 : 시스템을 설계하는 조직은 그 조직의 소통 구조를 닮은 아키택처를 만든다.

 프로젝트보다 제품에 집중
 - 기존에는 개발(SI)과 운영(SM)이 분리되어 있음 -> 개발/운영 전체 라이플을 관리
 - 단순 기능의 집합을 개발하여 넘기는 것이 아닌 가치를 전달할 수 있는 계기가 됨

 똑똑한 End Point, 단순한 Pipe
 - 도메인 로직은 각 서비스 내에 응집도 높게 유지
 -  각 서비스 간의 연결은 HTTP API, MQ 등 사용 

 분산된 거버넌스
 - 중앙에 강력한 표준이나 절차의 준수를 강요하지 않음
 - 스스로 효율적인 방법론과 도구, 기술을 찾아 적용 (Like 지방자치제도)

 분산된 데이터 관리
 - 해당 서비스의 데이터 각자 관리
 - 서로 다른 데이터 저장기술을 사용 가능
 - 각 서비스는 API를 통해서만 다른 서비스의 데이터에 접근
 - 트랜잭션 처리 어려움, 결과적 일관성의 적용

 인프라 자동화 
 - CI/CD 등

 장애 방지 설계
 - 일부 서비스 장애가 전체 시스템 장애로 전파되는 것을 막는 것이 핵심
 - 장애 발생이 고객에게 미치는 영향을 파악하는 것이 중요


MSA 장점
 - 빠른 Delivery : 독립적 개발, 각 서비스의 네트워크를 통한 느슨한 결합
 - 탄력적 선택적 확장 : 작은 서비스 단위로 확장, 코드베이스가 작아 상대적으로 비용이 저렴
 - Polyglot Architecture 지원 : 특정 Task에 적절한 기술을 적용 가능, 고유한 언어/Framework 선택 가능
 - 실험과 혁신 가능 : 작은 코드 베이스, 서비스간 느슨한 결합으로 기술을 쉽게 실험 가능
 - 기술 부채 경감 : SW는 나이를 먹는다. Monolith는 강한 결합도 떄문에 코드 수정 어려움. ex) 은행권

MSA 단점
 - 컴퓨팅 자원의 사용이 Monolith 보다 비효율적
 - 성능 : 내부 호출보다 느림
 - 메모리 : jvm 등 중복적인 자원 사용..은 개선이 됨 (서버 자원 비용 절감등을 이유로)
 - 운영관리가 어려움 (모니터링 대상 증가, 다양한 장애 상황 발생 등)
 - 기술의 다변화 및 단위 테스트 컴포넌트 테스트 난이도 증가
 - DB 트랜잭션 처리 어려움, 분산환경에서 트랜잭션 어려움

 

MSA 도입 조건

 사업/조직적 측면

 - 중장기적 Business benefit을 올릴 수 있다는 합의 (시간이 오래 걸리기 때문)

 - 고위 경영진의 강력한 Commitment 및 용기

 - 단순 기술 도입이 아닌, 조직과 프로세스의 개선 작업 필요 (에자일 개발론 등)

 - DevOps 문화가 정착이 되어야 함

 

 기술적 측면

 - Rapid Provisioning (클라우드, 인프라 자동화, Docker/Kubernetes)

 - 정교한 Monitoring 및 장애관리 (다양한 레벨의 실시간 모니터링)

 - 자동화 된 배포 (End to end 배포 파이프라인 구축)


질문

 어떤 부분부터 분리를 해야 하는가?

 - 비즈니스 변화에 민첩하게 대응해야 하는 기능

 - 빈번한 빌드/배포

 - 유연한 수평 확장이 필요한 기능

 - But 중요도가 낮은 것 부터 하는 것이 좋다. (넷플릭스도 전환에 7년이 소요됨)

 

+ Recent posts