MSA vs SOA

김현성
3 min readAug 23, 2020

--

Software Architecture는 소프트웨어를 구성하는 요소와 요소 간의 관계를 정의한 전체 조망을 위한 청사진이다.

또한 소프트웨어 설계자, 개발자 그리고 사용자 등 이해 관계자들이 기술 구조를 이해하고 논의할 수 있는 소통의 도구 역할을 담당한다.

Photo by Kaleidico on Unsplash

소프트웨어는 코드라는 형체가 있지만 보이지 않기 때문에, 더 정확하고 명확하게 설계되어야 한다.

SOA

서비스를 중심으로 업무를 대입하는 아키텍처 스타일입니다. MSA가 주목 받기 전에 중복되는 프로세스나 업무들을 하나의 서비스 단위로 개발하여 각 서비스가 호출 가능한 상태로 만드는 목적으로 만들어짐.

중복되는 프로세스나 업무를 서비스 단위로 전환

SOA 특징

1.서비스 계약

서비스 소비자는 서비스 이용하기 위하여 규칙을 준수해야 한다.

2. 가용성

서비스의 가용성 보장을 위해, SW 적으로 Time out 기능 구현 제안함. 라우팅 혹은 Circuit Break로 구현가능함

3.보안

서비스끼리 호출할 때 권한 확인이 필요함

4.트랜잭션

  • 분할된 서비스들에서 발생하는 트랜잭션들에 대한 일관성되어야 함
  • READ, WRITE 데이터베이스 분리에서 발생하는 일관성 문제

5.서비스관리

  • 서비스가 많아짐으로 발생하는 문제를 관제할 수 있어야 함
  • 문제가 있는 서비스에 대한 흐름제어

SOA와 MSA 공통점

SOA와 MSA는 기능 중심의 모듈 재사용보다 상위 수준의 서비스 수준의 재 사용성에 초점 맞추다는 공통점이 있다.

기능 중심 재사용성 < 서비스 수준의 재사용성

SOA와 MSA 차이점

  • 서비스의 공유

서비스 재사용성 강조하는 한 가지 작은 서비스에 집중한다. 그리고 SOA는 서비스를 최대한 공유하려고 ESB 같은 걸 도입하지만 MSA는 최대한 독립적으로 구성하도록 디자인한다.

SOA: 최대한 서비스 공유 < MSA: 최대한 독립적

  • 서비스의 상대적인 크기

사용자 관리 프로그램에서 SOA라면 사용자를 관리하기 위한 비지니스 전체를 하나로 작성하는 것을 목적으로 하지만, MSA는 사용자 정보관리, 사용자 계약 관리 등 상세하게 나눠서 관리한다.

SOA: 비지니스 중심 > MSA:작은 서비스 하나

  • 서비스의 오너십

하나의 작은 팀에서 관리한다. 서비스의 개발 부터 운영까지 오너십과 권한을 갖는다.

  • 기술구조

SOA는 EBS라는 공통된 채널를 통하여 서비스를 제공하지만 MSA는 개별적인 API로 서비스 제공한다.

--

--