SOA와 마이크로서비스 – 차이점
SOA와 마이크로서비스의 주요 차이점
- SOA는 애플리케이션 서비스 재사용성에 중점을 두는 반면, 마이크로서비스는 분리에 더 중점을 둡니다.
- SOA는 본질적으로 모놀리식인 반면, 마이크로서비스는 풀스택입니다.
- SOA 애플리케이션은 수많은 비즈니스 작업을 수행하도록 구축되었지만 마이크로서비스는 단일 비즈니스 작업을 수행하도록 구축되었습니다.
- SOA에는 서비스 간 데이터 스토리지 공유가 포함되지만, 마이크로서비스에서는 각 서비스가 독립적인 데이터 스토리지를 가질 수 있습니다.
- SOA는 서비스 전반에서 리소스를 공유하도록 설계된 반면, 마이크로서비스는 독립적으로 작동할 수 있는 서비스를 호스팅하도록 설계되었습니다.
- SOA에서는 Archi구조적으로 DevOps와 Continuous Delivery가 인기를 얻고 있지만 아직 주류는 아니며, 마이크로서비스는 DevOps와 Continuous Delivery에 많은 중점을 두고 있습니다.
- SOA는 확장성이 낮은 아키텍처인 반면, 마이크로서비스는 확장성이 매우 높은 아키텍처입니다.
서비스 지향 아키텍처(SOA)란 무엇입니까?
SOA는 컴퓨터 소프트웨어 설계의 아키텍처 패턴입니다. 이 유형의 애플리케이션에서 구성 요소는 일반적으로 네트워크를 통해 통신 프로토콜을 통해 다른 구성 요소에 서비스를 제공합니다. 서비스 지향의 원칙은 제품, 공급업체 또는 기술과 무관합니다. SOA의 전체 형태는 서비스 지향 아키텍처입니다.
SOA는 다양한 네트워크에 걸쳐 있는 소프트웨어 구성 요소가 서로 작동하기 쉽게 해줍니다. SOA 아키텍처에 따라 구축된 웹 서비스는 웹 서비스를 더욱 독립적으로 만드는 경향이 있습니다.
마이크로서비스란 무엇입니까?
마이크로 서비스 서비스 지향 아키텍처 패턴으로, 애플리케이션이 다양한 가장 작은 독립 서비스 단위의 컬렉션으로 구축됩니다. 애플리케이션을 잘 정의된 인터페이스가 있는 단일 기능 모듈로 분해하는 데 중점을 둔 소프트웨어 엔지니어링 접근 방식입니다.
이러한 모듈은 서비스의 전체 수명 주기를 소유한 소규모 팀이 독립적으로 배포하고 운영할 수 있습니다.
"마이크로"라는 용어는 단일 개발 팀(5~10명의 개발자)이 관리할 수 있어야 하는 마이크로서비스의 규모를 나타냅니다. 이 방법론에서는 대규모 애플리케이션을 가장 작은 독립 단위로 나눕니다.
SOA와 마이크로서비스의 차이점
SOA와 마이크로서비스의 차이점은 다음과 같습니다.
SOA(서비스 지향 Archi강의) | 마이크로 서비스 |
---|---|
SOA 모델에는 해당 애플리케이션의 모든 서비스가 공유하는 단일 데이터 저장 계층이 있습니다. | 마이크로서비스 앱은 대부분 데이터베이스나 기타 유형의 스토리지를 필요한 서비스 전용으로 사용합니다. |
SOA 앱의 다양한 서비스 간 통신은 간단하고 직접적인 접근 방식을 사용합니다. | 마이크로서비스는 복잡한 API를 사용합니다. |
애플리케이션 서비스 재사용성 극대화에 중점을 두고 있습니다. | 디커플링에 더 중점을 둡니다. |
체계적인 변화를 위해서는 모놀리스의 수정이 필요합니다. | 체계적인 변화는 새로운 서비스를 만드는 데 도움이 됩니다. |
DevOps와 Continuous Delivery가 대중화되고 있지만 아직 주류가 되지는 않았습니다. | DevOps 및 Continuous Delivery에 중점을 둡니다. |
본질적으로 모놀리식 | 자연 속의 풀스택 |
여러 메시지 프로토콜을 지원합니다. | HTTP, REST 또는 Thrift API와 같은 경량 프로토콜을 사용합니다. |
서비스 전반에서 리소스를 공유하도록 설계되었습니다. | 독립적으로 작동할 수 있는 서비스를 호스팅하도록 설계되었습니다. |
구성요소 공유가 자주 포함됨 | 일반적으로 구성요소 공유는 포함되지 않습니다. |
서비스 간 데이터 저장소 공유가 필요합니다. | 각 서비스는 독립적인 데이터 저장소를 가질 수 있습니다. |
대규모 통합에 더 적합 | 소규모 웹 기반 애플리케이션에 더 적합합니다. |
ESB를 통해 통신 | API 레이어를 통해 통신 |
리소스 공유에 의존 | 결합을 위해 제한된 컨텍스트에 의존합니다. |
Less 배포의 유연성 | 빠르고 쉬운 배포. |
SOA의 기술 스택은 마이크로서비스에 비해 낮습니다. | 마이크로서비스 기술 스택은 매우 클 수 있습니다. |
사업 단위는 종속적입니다. | 사업 단위는 서로 독립적입니다. |
XNUMX~XNUMX개의 서비스로 구성된 SOA 앱입니다. | 마이크로서비스 앱에는 수십 개의 서비스가 있을 수 있습니다. |
SOA 애플리케이션은 수많은 비즈니스 작업을 수행하도록 구축되었습니다. | 단일 비즈니스 작업을 수행하도록 구축되었습니다. |
배포는 시간이 많이 걸리는 프로세스입니다. | 배포가 간단하고 시간이 덜 소요됩니다. |
비즈니스 로직 구성요소는 단일 서비스 도메인 내부에 저장됩니다. 단순 유선 프로토콜(XML JSON이 포함된 HTTP) API는 SDK/클라이언트를 통해 구동됩니다. | 비즈니스 로직은 서비스 간 별도의 레이어처럼 도메인 엔터프라이즈 서비스 버스 전반에 걸쳐 존재할 수 있습니다. |
통신을 위해 ESB(Enterprise Service Bus)를 사용합니다. | 덜 정교하고 간단한 메시징 시스템을 사용합니다. |
소프트웨어 크기는 기존 소프트웨어보다 큽니다. | 마이크로서비스에서는 소프트웨어의 크기가 작습니다. |
I/O를 처리하기 위해 여러 오버헤드가 있는 멀티스레드 | 단일 스레드는 주로 비잠금 I/O 처리를 위해 이벤트 루프 기능과 함께 사용됩니다. |
모놀리스 수정에 필요한 체계적인 변화 | 마이크로서비스에서 시스템의 변화는 새로운 서비스를 창출하는 것 |
애플리케이션 서비스 재사용성 극대화에 중점을 둡니다. | 디커플링을 강조합니다. |
공통 거버넌스 및 표준. | 사람들의 협력과 선택의 자유에 더욱 초점을 맞춘 편안한 거버넌스입니다. |
배포 프로세스에는 시간이 많이 걸립니다. | 배포가 쉽고 시간이 덜 걸립니다. |
Less 확장 가능한 아키텍처. | 확장성이 뛰어난 아키텍처. |
SOA란? Archi강의?
서비스 지향 아키텍처는 소프트웨어 설계 스타일입니다. 아키텍처는 두 부분으로 분류됩니다.
- 기능적인 측면과
- 서비스 품질 측면.
두 가지를 자세히 살펴보겠습니다.
기능적 측면
기능적 측면에는 다음이 포함됩니다.
교통편: 이 구성 요소는 서비스 소비자의 서비스 요청을 서비스 공급자에게 전달하고 서비스 응답을 서비스 소비자에게 전달합니다.
서비스 통신 프로토콜: 서비스 제공자와 소비자가 서로 소통할 수 있도록 해줍니다.
예배 Descript이온: 호출에 필요한 서비스와 데이터에 대해 설명합니다.
예배: 실제 서비스입니다.
비즈니스 프로세스: 이 구성 요소는 비즈니스 요구 사항을 충족하기 위해 특정 규칙과 관련하여 사전 정의된 특정 순서로 호출되는 서비스 그룹을 나타냅니다.
서비스 레지스트리: 이 레지스트리에는 서비스 공급자가 서비스를 게시하는 데 사용하는 데이터에 대한 설명이 포함되어 있습니다.
서비스 품질 측면
서비스 품질에는 다음이 포함됩니다.
- 정책: 서비스 제공자가 서비스를 생성하고 소비자에게 제공하는 데 사용되는 프로토콜 집합입니다.
- 보안 : 이는 식별 및 인증 프로세스에 필요한 프로토콜 세트를 나타냅니다.
- 거래: 이는 일관된 결과를 보장합니다.
- 관리 : SOA의 이 구성 요소는 서비스를 관리하는 데 사용되는 속성 집합을 정의하는 데 도움이 됩니다.
마이크로서비스란? Archi강의?
이는 비즈니스 도메인을 위해 개발된 소규모 자율 서비스 모음으로 애플리케이션을 구축할 수 있는 아키텍처 개발 스타일입니다.
마이크로서비스 아키텍처로 개발된 전자상거래 애플리케이션의 예를 들어보겠습니다. 이 예에서 각 마이크로서비스는 단일 비즈니스 역량에 초점을 맞춥니다. 검색, 평가 및 리뷰, 결제는 각각 인스턴스(서버)를 가지고 서로 통신합니다.
이 모놀리식에서는 Archi즉, 모든 구성 요소가 단일 모듈로 통합됩니다. 하지만 마이크로서비스에서는 Archi기술적으로 이들은 서로 통신하는 개별 모듈(마이크로서비스)로 분산됩니다.
마이크로서비스 간의 통신은 요청과 응답의 각 쌍이 독립적인 상태 비저장 통신입니다. 따라서 마이크로서비스는 쉽게 통신할 수 있습니다. 마이크로서비스에서 Archi강의를 통해 데이터가 연합됩니다. 각 마이크로서비스에는 별도의 데이터 저장소가 있습니다.
SOA의 특징
SOA의 중요한 기능은 다음과 같습니다.
- SOA는 대규모 시스템의 어려운 통합 문제를 해결하는 인터페이스를 사용합니다.
- SOA는 XML 스키마를 사용하여 고객, 공급자 및 공급자와 통신합니다.
- SOA는 메시지 모니터링을 사용하여 성능 측정을 개선하고 보안 공격을 탐지합니다.
- 서비스를 재사용하므로 소프트웨어 개발 및 관리 비용이 약간 낮아집니다.
마이크로서비스의 특징
마이크로서비스의 필수 기능은 다음과 같습니다.
- 마이크로서비스 모듈은 느슨하게 결합되어 있습니다.
- 프로젝트 관리도 모듈화할 수 있습니다.
- 확장성 비용이 미미함
- 여러 기술을 애플리케이션의 여러 기능으로 사용하는 것은 매우 쉽습니다.
- 언젠가 애플리케이션에 액세스하게 될 장치 유형을 예측할 수 없는 진화하는 시스템에 이상적인 서비스입니다.
SOA의 장점
SOA의 장점/이점은 다음과 같습니다.
- 모든 서비스를 편집하고 업데이트하는 것은 쉽습니다.
- 서비스는 동일한 디렉터리 구조를 가지므로 소비자는 매번 동일한 디렉터리에서 서비스 데이터에 액세스할 수 있습니다.
- 서비스는 공통 언어를 사용하여 다른 애플리케이션과 통신합니다. 즉, 플랫폼과 독립적입니다.
- 서비스는 일반적으로 본격적인 애플리케이션에 비해 크기가 작습니다. 따라서 독립 서비스를 디버그하고 테스트하는 것이 더 쉽습니다.
- SOA를 사용하면 기존 시스템의 서비스를 재사용하고 교대로 새 시스템을 구축할 수 있습니다.
- 새로운 비즈니스 요구 사항을 충족시키기 위해 새로운 서비스를 추가하거나 기존 시설을 업그레이드할 수 있습니다.
- 서비스의 성능과 기능을 향상시키고 시스템을 쉽게 업그레이드할 수 있습니다.
- SOA는 다양한 외부 환경을 조정하거나 수정할 수 있습니다.
- 기업은 기존 애플리케이션을 교체하지 않고도 애플리케이션을 개발할 수 있습니다.
- 수많은 코드에 비해 독립적인 서비스를 테스트하고 디버깅할 수 있는 안정적인 애플리케이션을 제공합니다.
마이크로서비스의 장점
마이크로서비스 사용의 장점/이점은 다음과 같습니다.
- 개발자가 이해하기 쉬운 보다 쉬운 아키텍처 패턴
- IDE가 더 빨라져 개발자의 속도와 생산성이 향상됩니다.
- 웹 컨테이너가 더 빠르게 시작됩니다. 이는 배포 및 개발 프로세스의 속도를 높이는 데 도움이 됩니다.
- 이를 통해 팀은 다른 모든 팀과 독립적으로 서비스를 개발, 배포 및 확장할 수 있습니다.
SOA의 단점
서비스 지향 아키텍처를 사용하는 데에는 다음과 같은 단점이 있습니다.
- 모든 입력은 서비스로 전송되기 전에 유효성을 검사해야 합니다.
- SOA는 인력, 개발, 기술 측면에서 비용이 많이 드는 서비스입니다.
- 일부 웹 서비스는 메시지와 정보를 자주 보내고 받아야 하므로 하루에 백만 건의 요청에 쉽게 도달합니다.
- SOA에는 높은 투자 비용이 필요함
- 서비스가 다른 서비스와 상호 작용할 때 오버헤드가 더 커져 응답 시간이 늘어납니다.
- SOA 서비스는 GUI(그래픽 사용자 인터페이스) 애플리케이션에 적합하지 않으므로 SOA에서 대량의 데이터 교환이 필요할 경우 더욱 복잡해집니다.
마이크로서비스의 단점
마이크로서비스의 단점/단점은 다음과 같습니다.
- 모놀리식 애플리케이션을 구축하기 위해 개발되었으므로 분산 애플리케이션 개발을 위한 명시적인 지원을 제공하지 않습니다.
- 테스트가 더 어렵다
- 개발자는 서비스 간 통신 메커니즘을 구현해야 합니다.
- 여러 서비스에 걸쳐 있는 사용 사례를 구현하려면 팀 간의 조정이 필요합니다.
- 다양한 비즈니스 작업을 위해 항상 다양한 서버 공간을 유지해야 하므로 마이크로서비스는 비용이 많이 듭니다.
어느 Archi강의가 더 낫나요?
SOA는 대규모 복잡한 비즈니스 애플리케이션을 위한 이상적인 아키텍처 방법입니다. 다양한 애플리케이션과의 통합이 필요한 환경에 가장 적합합니다.
그러나 잘 정의된 처리 흐름이 있는 워크플로 기반 애플리케이션은 SOA 아키텍처 패턴의 도움으로 구현하기 어렵습니다. 따라서 작은 애플리케이션도 미들웨어 메시징 구성 요소가 필요하지 않기 때문에 SOA에 이상적이지 않습니다. 반면, 마이크로서비스 패턴은 더 작고 잘 분할된 웹 기반 시스템에 적합합니다.