답변:
액터 모델-동시 계산을위한 수학적 모델이며 마이크로 서비스는 서비스 지향 아키텍처의 구현입니다. 유사점은 우연의 일치입니다.
액터 모델을 기반으로 마이크로 서비스를 구축하고 액터 모델로 일부 마이크로 서비스 아키텍처를 모델링하는 것이 가능하지만 이것이 동등한 것은 아닙니다. "마이크로 서비스 시스템"을 "이메일 시스템"으로 바꾸면 여전히 유효합니다. "액터 모델"을 "CSP (Communicating 순차적 프로세스)"로 바꾸면 CSP와 액터 모델 시스템이 서로 모델링 될 수 있으므로 "참"도됩니다.
액터 모델이 주어지면 마이크로 서비스 나 SOA 또는 이메일을 사용하여 구현할 수 있지만, 실제로 비교하기 위해 동일한 추상화 레벨에있는 것은 아닙니다.
또한 액터 모델은 버퍼를 강조하므로 (마이크로 서비스 세계에서는 메시지 큐로 생각할 수 있음) 일부 액터 / 마이크로 서비스는 기본적으로 비동기 통신이 가능하지만 준비가되지 않을 수 있습니다.
즉, 액터 모델과 비교하면 매우 높은 수준의 고려에서 창의적인 통찰력을 얻을 수 있지만 대부분 사과 대 오렌지입니다.
SOA / 마이크로 서비스의 수학적 모델을 액터 모델과 비교하는 것이 목표라면, 1) SOA에 대한 수학적 모델에 합의 된 것이 없으며 , 2) 모델에는 일반적으로 목적이 포함 되기 때문에 사소하지 않습니다 . 그리고 SOA / 마이크로 서비스 모델링은 행위자 모델의 목적과 다를 가능성이 높습니다. 여기서 SOA 모델링 시도의 한 예입니다 .
물론, 마이크로 서비스로 액터 모델 시스템을 생성하고 각 서비스를 액터로 호출 할 수 있습니다 (액터 모델이 무엇인지에 대한 엄격한 정의 참조). 그러나 이것이 일반적인 의미에서 둘 사이에 의미있는 관계가 있다는 것을 의미하지는 않습니다.
마이크로 서비스는 각 관심 영역을 자체 배포 가능한 아티팩트 (실행 파일, 스크립트, JAR, WAR 등)로 분할하여 소프트웨어를 구성하는 방법입니다. 예를 들어 필요한 곳에 더 많은 인스턴스를 배포하여 확장 할 수있는 유연성을 제공합니다. 사용자가 장바구니에 물건을 추가하는 것보다 카탈로그를 보는 데 더 많은 시간을 소비한다고 가정하십시오. 하나는 배치 가능한 아티팩트가 카탈로그 기능을 처리하고 다른 하나는 장바구니 기능을 처리합니다. 더 많은 카탈로그 서비스 사본을 실행하여로드를 처리 할 수 있습니다.
또한 내부 변경과 분리합니다. 제품 데이터를 저장하기 위해 관계형 데이터베이스에서 문서 데이터베이스로 이동한다고 가정 해 봅시다. 장바구니 서비스를 변경할 필요가 없습니다.
액터 모델은 배포 가능한 아티팩트보다 낮은 수준이며 서비스를 구현 한 객체 유형에 대해 더 자세히 설명합니다. 위의 예를 계속하면 시스템에 쇼핑 카트가 액터로 표시 될 수 있으므로 모든 사용자의 쇼핑 카트는 별개의 액터이며 메시지는 항목을 추가하고, 항목을 제거하고, 현재 컨텐츠에 응답하고, 배송을 추가하고, 체크 아웃하도록 지시합니다 이 경우에도 마이크로 서비스가 있으며 액터 모델로 구현됩니다.
주요 차이점은 세분성 중 하나라고 말하고 싶습니다.
액터 모델의 경우 액터가 OOP에서 하나의 오브젝트에 해당하는 경향이 있다는 점에서 상대적으로 세분화됩니다.
마이크로 서비스의 경우 단일 마이크로 서비스가 많은 수의 액터 또는 오브젝트로 구성 될 수 있다는 점에서 비교적 거칠다.
현대 웹이 훨씬 더 큰 세분성 ( "매크로 서비스")으로 동일하다는 것을 상상하기 위해 상상력을 너무 많이 늘릴 필요는 없습니다. (예를 들어, HTTP 서버는 매크로 서비스, 데이터베이스 서버는 매크로 서비스, 웹 브라우저는 매크로 서비스 등입니다.)
의사 소통을하는 격리 된 부분과 거의 같습니다. 변경되는 조각의 크기 (따라서 조각의 수)입니다.
마이크로 서비스는 여러 복제본을 생성하여 수평 적으로 확장되며, 각 복제본은 상태 비 저장 서비스 로 인해 요청을 처리 할 수 있습니다. 그들은 무국적의 본질로 인해 실패에 대해 탄력적입니다.
액터는 로드가 적거나 사용 가능한 리소스가 더 많은 파티션으로 이동하여 확장합니다. 그들은 상태 가 양호 합니다. 액터 프레임 워크에 따라 다른 액터가 동적으로 회전하거나 액터의 핫 백업을 항상 유지하여 기본 액터의 장애를 처리 할 수 있기 때문에 장애에 대해 탄력적입니다.
다시 말하지만 마이크로 서비스는 상태 저장이 가능하지만 마이크로 서비스의 설계 원칙에 위배됩니다.