SOA(Service Oriented Architecture)는 서비스 지향 아키텍쳐를 의미한다.
기존 애플리케이션의 기능들을 비지니스적인 의미를 가지는 기능 단위로 묶어 표준화된 호출 인터페이스를 통해 서비스로 구현하고,
이 서비스들을 기업의 업무에 따라 애플리케이션을 구성하는 소프트웨어 개발 아키텍쳐를 뜻한다.
SOA는 웹서비스의 등장으로 다양한 기술적 복합도를 낮출 수 있게되어 기술적인 대안으로 등장하였다.
SOA는 시스템 규모와 업무적 요구사항에 따라 3단계로 발전된다.
기존 시스템들을 서비스화하여 각 시스템들을 통합하는 단계이다.
Fundamental SOA는 시스템의 크기가 증가됨에 따라 서비스와 Front-end 사이에 연결이 복잡해진다.
시스템의 유연성이 떨어지며, 관리 및 중앙 통제가 어렵다.
이런 단점을 극복하기위해 Networked SOA는
Networked SOA에서 발전한 단계이다.
MSA와 SOA는 개념은 유사하지만 범위에서 차이가 있다.
SOA는 전사적인 아키텍쳐 접근 방식이며, MSA는 애플리케이션 개발 팀내의 구현 전략이다.
각 구성요소와 통신하는 방법도 다르다.
SOA는 ESB를 사용하는 반면,
마이크로 서비스끼리는 언어의 제약이 없는 API를 통해 stateless 방식으로 통신한다.
마이크로 서비스의 API에는 언어의 제약이 없기 때문에 개발팀에서 사용하고 싶은 툴을 선택할 수 있다.
마이크로 서비스의 내결합성과 유연성이 더 유연하다.