참고/MSA

[MSA] 기본원칙

상국이 2021. 6. 27. 15:05
728x90

MSA?

작고, 독립적으로 배포 가능한 서비스들의 모임으로 구조화하는 서비스 지향 아키택처로 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 개발 및 테스트를 더 쉽게 해준다. 규모가 작은 자율적인 팀들이 팀별 서비스를 독립적으로 개발, 전개, 규모 확장을 할 수 있게 함으로써 병렬로 개발할 수 있게 한다

 

1) DDD (Domain Driven Design)

업무 영역별로 시스템을 분리합니다. DDD의 주 목적은 핵심 도메인과 관련 로직에 집중하는 것입니다. 이렇게 함으로써 애플리케이션이 감당못할 수준으로 변모하는 것을 막을 수 있습니다.

 

 

2) 구현 내용 은닉

마이크로 서비스는 전체 시스템의 부분체로서 함께 작동하기 위한 독립적인 라이프 싸이클을 가지는 작은 서비스들입니다. 

한 서비스를 타 시스템과는 독립적으로 역량을 증가시키기 위해서는 구현 내용을 숨기는 것이 중요합니다. 경량의 통신을 사용하여 REST 프로토콜을 HTTP 기반하에 사용할 수 있습니다.

이렇게 내부와 외부의 구현 내용을 분리하여 상세내용을 가져올 수 있습니다.

 

 

3) 중앙 집중 탈피

모놀리틱 구현물은 일반적으로 전 시스템을 아우르는 데이타 영속성을 위해 단 하나의 데이타베이스를 가집니다. 이로 인해 시스템은 오랜 동안 변경하기가 복잡해집니다. 

마이크로 서비스에서는 각자의 데이타베이스를 가질수 있고 별도의 인스턴스로 구성하거나  완전히 다른 데이타베이스를 사용할 수 있습니다.

 

 

4) 장애에 대한 차단

마이크로 서비스 기반의 구조는 모놀리틱 구조에 비해 더 견고합니다. 만약 하나의 마이크로 서비스에서 데이타 릭이나 데이타 베이스 연결 오류가 나도 전체 시스템에는 영향을 주지 않고 해당 마이크로 서비스만 영향을 받습니다.

모놀리틱에서는 하나의 오류가 전체 시스템을 망칠 수 있습니다.

 

 

5) 지속적인 배포

고전적인 모놀리틱 배포 환경에서는 릴리즈 아티팩트들이 분산되어 있지 않기 때문에 수작업으로 잡을 빌드하기가 상대적으로 수월합니다. 마이크로 서비스 아키텍처에서는 배포 단위수가 증가하기 때문에 자동 배포에 대한 솔루션이 필요합니다.

젠킨스나 CHEF 같은 도구를 사용하여 자동으로 빌드하고 배포가 가능한 프로세스를 잡을 수 있습니다. 

728x90