[Back-end] SOA 패턴

Geun·2022년 4월 24일
0

Back-end

목록 보기
65/74

SOA

SOA(Service Oriented Architecture)는 서비스 지향 아키텍쳐를 의미한다.
기존 애플리케이션의 기능들을 비지니스적인 의미를 가지는 기능 단위로 묶어 표준화된 호출 인터페이스를 통해 서비스로 구현하고,
이 서비스들을 기업의 업무에 따라 애플리케이션을 구성하는 소프트웨어 개발 아키텍쳐를 뜻한다.

SOA는 웹서비스의 등장으로 다양한 기술적 복합도를 낮출 수 있게되어 기술적인 대안으로 등장하였다.

SOA 구조

SOA는 시스템 규모와 업무적 요구사항에 따라 3단계로 발전된다.

Fundamental SOA

기존 시스템들을 서비스화하여 각 시스템들을 통합하는 단계이다.

Networked SOA

Fundamental SOA는 시스템의 크기가 증가됨에 따라 서비스와 Front-end 사이에 연결이 복잡해진다.
시스템의 유연성이 떨어지며, 관리 및 중앙 통제가 어렵다.

이런 단점을 극복하기위해 Networked SOA는

  • SOA 시스템의 가운데 서비스 허브를 두어 서비스의 중앙 통제력 및 유연성을 강화한다.
  • Intermidary 서비스가 ESB(라우팅, 변환, 로깅, 서비스 통제)에 위치한다.

Process Oriented SOA

Networked SOA에서 발전한 단계이다.

  • Business Flow가 있을 경우에만 적용된다.
  • 서비스의 조합을 통한 업무의 구현을 BPM을 이용한다.
  • 업무변화에 민첩하게 반응한다. (Agile이 가능하다.)

다른 아키텍쳐와 비교

Monolithic에 비교해서

  • 출시 일정 단축 및 유연성이 향상된다.
  • 신규 시장에서 레거시 인프라를 활용가능하다.
  • 더 효율적인 애자일 개발 방식으로 비용을 아낄 수 있다.
  • 손쉽게 유지관리할 수 있다.
  • 확장성을 가지고 있다.
  • 안정성이 강화된다.

MSA에 비교해서

MSA와 SOA는 개념은 유사하지만 범위에서 차이가 있다.
SOA는 전사적인 아키텍쳐 접근 방식이며, MSA는 애플리케이션 개발 팀내의 구현 전략이다.

각 구성요소와 통신하는 방법도 다르다.
SOA는 ESB를 사용하는 반면,
마이크로 서비스끼리는 언어의 제약이 없는 API를 통해 stateless 방식으로 통신한다.
마이크로 서비스의 API에는 언어의 제약이 없기 때문에 개발팀에서 사용하고 싶은 툴을 선택할 수 있다.
마이크로 서비스의 내결합성과 유연성이 더 유연하다.


참고자료

https://azderica.github.io/01-architecture-soa/

0개의 댓글