본문 바로가기
개발/MSA

SOA와 MSA: 현대적 IT 아키텍처의 비교와 선택

by 난중후니 2024. 1. 25.
728x90
반응형

SOA란?

여러 서비스로 구성된 소프트웨어 아키텍처 패러다임을 의미합니다.
서비스 인터페이스를 통해 소프트웨어 구성 요소의 재사용성과 상호 운용성을 가능하게 하는 방법을 정의합니다.

SOA에서 서비스란 비지니스 서비스를 의미합니다.
ex) 회원정보 서비스, 인증 서비스, 재고 관리 서비스 등...

SOA가 등장하게 된 원인

  1. 기업 환경의 복잡성 증가

기업 환경의 복잡성이 증가하면서 모놀리식 아키텍처의 불편함과 해결할 수 없던 허들 발생하였습니다.
이로 인해 기존의 시스템들간에 정보를 교환하거나 통합하는 것이 점점 어려워졌습니다.

  1. 비즈니스의 빠른 변화

경쟁 환경, 규제, 고객의 요구 등 다양한 요인으로 비즈니스는 빠르게 변화하게 되었습니다.
빠른 변화에 대응하기 위해 IT 시스템도 빠르게 조정하고 변경할 수 있어야 했습니다.

  1. 재사용성과 표준화의 중요성 인식

소프트웨어의 개발과 유지보수 비용을 절감하기 위해 재사용 가능한 컴포넌트와 서비스의 중요성이 강조되기 시작했습니다.
또한, 여러 시스템과 애플리케이션 간의 상호 운용성을 위한 표준화의 필요성도 부각되었습니다.

특징

  1. 서비스별로 나누어진 구조

애플리케이션을 개발할 때 전체 애플리케이션을 여러개의 서비스로 나누고 각각의 서비스를 독립적으로 개발하는 것을 의미합니다.
이전에는 데이터 계층, 비즈니스 계층, 뷰 계층과 같이 통칭하여 개발 하였지만 SOA에서는 각각의 서비스에 대한 데이터 계층, 비즈니스 로직, 뷰에 대한 모듈을 가지고 있고 각 서비스 간의 의존성이 최소화 되었습니다.

ex) 사용자 관리, 상품 관리, 결제 관리 등...

2. 표준 인터페이스 기반

서비스가 제공하는 인터페이스는 표준 기술로 구현되어야 하며, 서비스를 사용하고자 하는 사람이 서비스 규약만 가지고도 해당 서비스를 호출할 수 있어야 합니다.

3. 느슨한 결합

SOA의 서비스는 느슨하게 결합되어야 하며, 데이터 모델이나 정보 시스템과 같은 외부 리소스에 대한 종속성이 최대한 낮아야 합니다.

4. 재사용

한 번 만든 서비스는 여러 애플리케이션에서 재사용 가능합니다.

5. 유연성

변경 요구사항에 빠르게 대응할 수 있습니다.

6. 확장성

새로운 기능 추가로 인해 기존 서비스에 영향이 최소화됩니다.

모놀리식 아키텍처와 SOA

모놀리식

  • 하나의 어플리케이션이 하나의 서버에 배포
  • 단일 코드베이스
  • 싱글/멀티 모듈 방식으로 개발은 가능하지만, 근본적으로 하나의 프로세스

SOA

  • "서비스" 단위로 개발하고 서비스 간 규격호된 프로토콜(인터페이스)를 사용하여 통신
  • 대개 동일한 기술 스택들을 가지고 서비스들을 개발하며, 각 서비스들간의 재사용이 목적
  • ESB(Enterprise Service Bus)라는 개념을 통해, 요청에 대해 어떤 서비스들을 호출할 지 캡슐화 된 Layer 존재
  • 서비스간 통합을 강조

공통점

  • Shared DB 사용
  • 대개 원 코드베이스
  • 모듈 / 서비스 간 규격화된 호출 방식 사용

SOA 만의 특징, 차이점

  • 독립적으로 배포 가능
  • 비즈니스 로직에 따라, 어떤 서비스를 호출 할 지 결정하는 Layer 존재
  • 트랜잭션 구현을 별개로 해야 함
  • ESB의 관리(중앙집중식)
  • 동일 플랫폼(ex: JVM)에서 서비스 간 호출을 하다보니 성능 이슈 존재

SOA와 MSA

공통점

  • 개발의 단위를 "서비스"로 인지
  • 다른 서비스와 독립적으로 개발, 배포 가능

MSA만의 특징, 차이점

  • 비즈니스 로직(서비스)의 재사용 지양(서비스 간 결합도를 낮추는 것이 목표)
  • 낮은 결합도로 애자일한 대응 가능
  • 각 서비스는 각 서비스의 특성에 맞는 최적의 기술스택을 독립적으로 선택 가능
  • 서비스 간 자유로운 방식으로 통신 가능(Http, gRPC ...)
728x90
반응형

댓글