[개념정리] SOA와 MSA 차이점
* 공부와 업무 정리를 위해 포스팅 합니다.
* 정확하지 않는 내용이 있을 수 있으니 참고해주시면 감사하겠습니다.
<SOA, MSA 란?>
1. SOA (서비스 지향 구조)
1) 서비스가 서로 통신하는 거대한 서비스 모음.
2) SOA 프레임워크는 모든 구성 요소를 보는 서비스로서, 소프트웨어 구조를 사용하는 시스템을 설계하는 데 사용.
3) 통신은 일반적으로 데이터 전달을 위해 사용했던 SOA에서 제공되며, 두 개 이상의 서비스를 통신하고 여러 활동을 완료할 수 있음.
4) SOA 특징
- Loosely coupled (느슨한 결합)
- Reusable (재사용성)
- Composable (구성 가능)
- Autonomic (자율성)
- Standardized (표준화)
2. MSA (마이크로서비스 구조)
1) 대다수 서비스를 필요로 하고 작은 서비스 또는 공유 가능한 요소들로 분해.
-> 모든 기능이 단일 프로세스로 정립되는 것을 '모놀리스'라고도 함. (모놀리스 > SOA > MSA)
2) 다양한 프로그래밍 언어와 데이터 저장소에서 작성하는 다양한 접근 방식으로 애플리케이션과 통신을 개발하기 위해 사용.
3) MSA 특징
- Business capabilities (사업 역량)
- Products (제품)
- Smart End Point (스마트 엔드 포인트)
- Automation (자동화)
- Evolutionary (혁신)
<SOA 장점>
1. 재사용성
- 재사용되도록 서비스가 설계되고, 다양한 애플리케이션에서 사용될 수 있음.
2. 확장성
- SOA는 애플리케이션의 쉬운 확장을 위해 고려되었고, 서비스가 시스템의 영향없이 추가될 수도 삭제될 수 있음.
3. 유연성
- SOA는 조직을 새로운 사업 요구사항을 쉽게 변화나 적응을 가능하게 하고, 서비스로서 시스템 영향없이 교체하거나 업데이트할 수 있음
4. 상호운용성
- SOA는 다양한 기술과 플랫폼의 통합을 허용하므로, 다양한 시스템과 애플리케이션 연결을 더 쉽게 만듦.
5. 비용 효율성
- SOA는 장기적으로 비용 효율적이며 개발 시간을 감소시키고 애플리케이션 관리를 더 쉽게 만듦.
6. 느슨한 결합
- SOA는 서비스 사이에 느슨한 결합을 촉진하고, 이는 서비스는 서로 종속적이지 않는다는 것을 뜻함.
- 이로 인해 시스템의 유연성, 확장성과 유지보수성이 향상됨.
<SOA 단점>
1. 복잡성
- SOA는 특히 큰 규모의 시스템과 여러 서비스를 처리할 때 설계/구현/관리를 위해 복잡할 수 있음.
- 이는 전문 기술과 자원이 필요하고, 개발 시간과 비용이 증가될 수 있음.
2. 성능
- 서비스는 대기시간과 오버헤드가 발생할 수 있으며 시스템 성능에 부정적으로 영향을 미칠 수 있음.
- 서비스와 인프라 간 주의 깊은 설계와 최적화가 필요.
* In computer science, overhead is any combination of excess or indirect computation time, memory, bandwidth, or other resources that are required to perform a specific task.
It is a special case of engineering overhead - wikepidia
* 즉, 오버헤드는 특정 기능을 수행하는데 드는 간접적인 시간, 메모리 등 자원을 말함.
3. 보안
- 서비스는 네트워크를 통해 접근하기 때문에 보안이 중요하고 데이터 보안을 위해 추가 조치를 취해야 함.
- 보안 조치를 신중하게 설계/구현해야 함.
4. 테스트
- 테스트 서비스는 복잡해질 수 있고 모든 서비스가 함께 올바른 동작을 보장하는 것은 어려울 것임.
- 전문적인 테스팅 도구와 기법이 필요하고 테스팅 시간과 비용이 증가할 수 있음.
5. 거버넌스
- 확립된 표준화와 모범사례에 따라 서비스가 설계/개발/배포를 위해 적절한 거버넌스가 필요.
- 이를 위해서 포괄적인 거버넌스 프레임워크와 규정 준수 및 책임 문화 필요.
<MSA 장점>
1. 확장성
- 마이크로서비스는 쉽게 수평적으로 확장이 가능하여 시스템 성능에 영향없이 증가된 트래픽과 사용자 요청을 처리할 수 있음.
2. 민첩성
- 마이크로서비스는 팀이 서로 독립적으로 서비스를 개발하고 배포하므로 변화하는 사업 요구사항을 빠르게 적응할 수 있음.
3. 복원력 (Resilience)
- 마이크로서비스는 내결함성을 위해 설계되었고 이는 하나의 서비스가 실패하더라도 나머지 시스템에 영향을 주지 않음.
4. 재사용성
- 마이크로서비스는 여러 애플리케이션을 재사용할 수 있어서 개발 시간과 비용을 줄이고 조직의 일관성을 향상시킬 수 있음.
5. 기술 다양성
- 마이크로서비스는 다양한 서비스를 위해 다양한 기술과 플랫폼을 사용하므로, 팀이 각 서비스를 위해 가장 좋은 기술을 선택할 수 있도록 함.
6). 지속적인 전달 (Continuous Delivery)
- 마이크로서비스는 서로 독립적으로 배포와 업데이트를 할 수 있기에 지속적인 전달과 출시 시간이 단축됨.
7. 쉬운 유지관리
- 마이크로서비스는 각 서비스가 더 작고 종속성이 적기 때문에 모놀리식 애플리케이션보다 유지 관리가 더 쉬움.
8. 협업 증가
- 마이크로서비스는 팀이 독립적으로 일하게 하고 효과적으로 협업을 하기에 향상된 생산력과 개발 주기가 빨라짐.
<MSA 단점>
1. 복잡성
- 마이크로서비스는 모놀로식 애플리케이션에 비해 높은 수준의 복잡성을 도입.
- 이 복잡성은 증가된 개발 시간과 비용과 전문적인 기술과 자원이 필요.
2. 분산 시스템
- MSA는 분산된 시스템 구축을 포함하고 이는 대기 시간, 네트워크 오버헤드와 통신 복잡성이 증가될 수 있음.
3. 데이터 관리
- 다양한 서비스 간 데이터 관리는 어려울 수 있고 조직은 효과적인 데이터 관리와 동기화 전략을 구현해야 함.
4. 테스팅
- 마이크로서비스 테스트는 복잡하고 시간이 많이 소요될 수 있기에 조직은 모든 서비스가 올바르게 함께 작동하기 위해 효과적인 테스팅 전략을 구현해야 함.
5. 배포 및 인프라 관리
- 특히, 다수의 서비스를 다룰 때, 마이크로서비스를 배포와 관리하는 것은 어려울 수 있음.
- 효과적인 배포와 인프라 관리 전략을 가져야 함.
6. 보안
- 마이크로서비스는 분산되었기 때문에, 보안이 중요하며 안전한 데이터를 위해 추가적인 조치를 취해야 함.
7. 거버넌스
- 서비스가 설계/개발/확립된 표준화와 모범사례에 따라 배포되는 적절한 거버넌스 필요.
Reference
- 서비스 지향(SOA)과 마이크로 서비스 아키텍처(MSA)의 차이점
Difference between service-oriented (SOA) and Micro service Architecture (MSA) - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
- https://medium.com/@SoftwareDevelopmentCommunity/what-is-service-oriented-architecture-fa894d11a7ec
What Is Service-Oriented Architecture?
A Look At the Nuts and Bolts of Service-Oriented Architecture
medium.com