본문 바로가기
MSA

[MSA] MSA란 무엇인가?

by 백곰IT 2021. 7. 15.

MSA는 Micro Service Architecture의 약자로 '작은 단위의 서비스 구조'라는 뜻이다. 기존에 사용하던 구조는 모놀리스(Monolith) 아키텍처를 주로 사용하고 있다.

MSA를 알아보기 전에 모놀리스(Monolith) 아키텍처를 먼저 알아보고 MSA에 대해 살펴보도록 하자.

1. 모놀리스 아키텍처(Monolith Architecture)

먼저 모놀리스의 뜻을 살펴보면 '하나로 되어있는' 정도로 해석이 된다. 모놀리스 아키텍처는 '하나로 되어있는 구조'로 되어있는 시스템이다.

아래의 그림으로 모놀리스 아키텍처로 구성된 시스템을 간단한 예를 살펴보자.

1) 다양한 서비스들이 '애플리케이션' 하나에 전부 모여있음

2) 각 서비스 실행할 경우 하나로 모여있는 서버로 요청

3) 서버에서 요청을 처리

 

1.1 모놀로스 아키텍처의 장점

 - 간단한 배포 방식
 - 개발 워크플로우 용이
 - 테스트 단순화
 - 코드의 재사용 용이

 

1.2 모놀로스 아키텍처의 단점
 - 높은 결합도
 - 혼란스로운 경계선(소유권)

 

2. 마이크로서비스 아키텍처(MicroService Architecture)

마이크로서비스는 도메인(서비스)을 기준으로 독립된 구조로 된 시스템이다.

아래의 그림으로 마이크로서비스 아키텍처로 구성된 시스템을 간단한 예를 살펴보자.

1) 비즈니스 도메인을 기준으로 독립적으로 구성된 서비스
2) 서비스들은 독립적인 배포가 가능
3) 서비스들은 네트워크를 통해 서로 통신
4) 서비스별로 데이터베이스 소유

 

2.1 마이크로서비스의 특징

1. 독립적인 배포 가능성
 - 다른 서비스에 영향을 주지 않고 배포가 가능하다는 뜻 - 느슨한 결합(Loosely Coupled)을 보증
2. 비즈니스 도메인을 중심으로 하는 모델링
 - 도메인을 중심으로 서비스를 생성
 - 기존 모놀리스와 달리 다른 서비스의 영향을 주지 않을 수 있음
3. 데이터 소유권 문제
 - 다른 데이터베이스에 접근이 필요하면 해당 데이터베이스를 소유하고 있는 서비스를 통해 요청
4. 마이크로 서비스의 장점
 - 독립적인 특성으로 인해 확장성, 견고성
 - 개발시 서비스(업무) 별로 방해받지 않고 자신의 업무에 집중할 수 있음
 - 언어, 플랫폼, 데이터베이스 등 종류에 상관없이 조합 가능
5. 마이크로 서비스가 야기하는 문제점
 - 다수의 네트워크 통신으로 예측이 힘들고 패킷 손실이 야기될 수 있음
 - 서비스를 분산할 수로 높은 비용, 시스템의 복잡도 상승, 고도의 기술이 필요
6. 사용자 인터페이스
 - 마이크로 서비스를 사용 시 UI도 고려해야 됨
7. 기술
 - 장점중 하나인 [언어, 플랫폼, 데이터베이스 등 종류에 상관없이 조합 가능]과 같이 기술의 제한 없이 구축 가능
8. 규모
 - 마이크로라는 단어에 구애받지 말자.(코드의 양:다양한 언어로 사용 가능하기 때문에 코드의 양은 무의미)
 - 1.점진적인 마이그레이션을 통해 서비스를 분산하자.
 - 2.적합한 서비스 간의 경계를 정의하자.
9. 소유권
 - 기술 조직으로 분리하여 서비스 관리

 

2.2 결합도와 응집력

마이크로 서비스 아키텍처의 가장 중요한 요소는 결합도와 응집력이다.

* 응집력 높고 결합도 낮은게 안정적이다.

1. 응집력(Cohesion)
 - 관련된 것끼리 묶인것
 - 변경시 함께 바뀜
2. 결합도(Coupling)
 - 다른 것과 연관된 것
 - 결합된 서비스 전체를 신경 써야 됨
 - 정보은닉 필요
 - 결합도 종류

   * 구현 결합도 : 데이터베이스를 공유
   * 시간적 결합도 : 동기, 비동기 등 호출 실행 시간에 관련된 결합도
   * 배포 결합도 : 모놀리스 형식이기 때문에 배포 시 모든 것을 함께 배포하는 것
   * 도메인 결합도 : 서비스 도메인 간의 연결되어 있음(물건을 사면 물건 재고는 없애고 판매자 잔고는 오르고 구매자 잔고는 내리고 등등이 연결됨)

 

2.3 대표 기법 : 도메인 주도 설계(DDD-Domain Driven Design)

도메인을 중심으로 서비스를 모델링이다.
1.집계(Aggregate)
 - 서비스(도메인)을 적절하게 구분지은 것 - 주관적일 수 있음
2. 경계 컨텍스트(Bounded Context)
 - 하나 이상의 집계를 포함
 - 명시적인 책임을 수행
3.집계와 경계 컨텍스트를 마이크로 서비스에 매핑
 - 집계와 경계 컨텍스트 모두 서비스 경계(Service Boundary)가 될 수 있다.

728x90
반응형

'MSA' 카테고리의 다른 글

[MSA] 마이크로서비스 마이그레이션  (0) 2021.07.30

댓글