SOA (Service-Oriented Architecture : 서비스 지향 아키텍처) 정의, MicroService와의 차이점

mocaccino·2024년 10월 29일

백엔드로드맵

목록 보기
12/19

SOA(Service-Oriented Architecture : 서비스 지향 아키텍처) 란 무엇인가?

서비스라는 구성요소를 사용해 비즈니스 애플리케이션을 생성하는 소프트웨어 개발 방식
각 서비스는 비즈니스 기능을 제공하며, 플랫폼과 언어가 달라도 서로 통신할 수 있다.

개발자는 SOA를 사용해서 서로 다른 시스템 내의 서비스를 재사용하거나 독립적인 여러 서비스를 결합하여 복잡한 작업을 수행한다.

Example
조직 내의 여러 비즈니스 프로세스에서 사용자 인증 기능이 필요할 경우, 모든 비즈니스 프로세스에 대해 인증 코드를 재 작성하는 대신에, 단일 인증 서비스를 생성해서 모든 애플리케이션에서 재사용하도록 한다.

동작방식

SOA에서 서비스는 독립적으로 작동하고 소비자에게 기능 또는 데이터를 제공한다.
소비자는 정보를 요청하고 입력 데이터를 서비스에 보낸다.
서비스는 데이터를 처리하고 태스크를 수행한 다음 응답을 다시 보낸다.

Example
인증 서비스에서는 사용자는 서비스에 이름과 암호를 제공한다. 서비스는 이름과 암호를 확인하고 적절한 응답을 반환한다.

통신 프로토콜

  • SOAP(Simple Object Access Protocol)
  • RESTful HTTP
  • Apache Thrift
  • Apache ActiveMQ
  • JMS(Java 메세지 서비스)

MSA와의 차이점

MSA(Micro Service Architecture)는 SOA 아키텍처 스타일이 발전한 것이다. MSA는 SOA의 단점을 해결해서 소프트웨어가 최신 클라우드 기반 엔터프라이즈 환경과 더 잘 호환되도록 한다.

SOA는 더 넓은 엔터프라이즈 범위를 포괄한다. 여러 사업부가 공통의 데이터 공유 플랫폼에서 효율적으로 협업하게 된다. 반면 MSA는 더 좁은 범위에 적용된다.

Example
재고관리 서비스는 전자상거래 시스템에서 SOA 서비스로 제공된다. 하지만 MSA에서는 재고관리를 가용성 검사, 주문처리 및 회계와 같은 소규모 서비스로 나눌 수 있다.

MSA는 SOA의 어떤 한계를 해결하는가?

SOA는 대규모 엔터프라이즈 애플리케이션을 구축하는데 적합할 수 있지만 소규모 비즈니스별 애플리케이션을 확장하려면 더 많은 유연성이 필요하다. SOA 한계점은 다음과 같다.

  • 엔터프라이즈 서비스 버스(ESB)는 여러 서비스를 한곳에 연결하기 때문에 단일 장애 지점이 될 수 있다.
  • 모든 서비스는 공통의 데이터 레포지토리를 공유하기 때문에 서비스를 개별적으로 관리하기 어렵다.
  • 모든 서비스는 범위가 넓기 때문에 서비스 중 하나라도 장애가 발생하면 전체 워크플로가 영향을 받을 수 있다.

참고

https://aws.amazon.com/what-is/service-oriented-architecture/
https://aws.amazon.com/ko/compare/the-difference-between-soa-microservices/

profile
레거시문서를 줄이자. 계속 업데이트해서 최신화한다.

0개의 댓글