서비스 지향 아키텍처 (SOA)

서비스 지향 아키텍처란?

SOA는 서비스라고 불리는 소프트웨어의 모듈식 단위 모음으로 응용 프로그램을 구축하는 현대식 소프트웨어 아키텍처 패러다임입니다. SOA에서 서비스는 자립적이고 모듈식이며 느슨하게 결합됩니다. 이 접근법을 통해 완전 모놀리식 응용 프로그램과 달리 개별 구성요소를 업데이트할 수 있는 복잡하고 분산된 응용 프로그램을 구축할 수 있습니다. 통상적인 SAP 소프트웨어 스택에는 서비스, 플랫폼 서비스 및 미들웨어로 구성되는 응용 프로그램 소프트웨어가 포함됩니다. 이러한 서비스는 고성능 하드웨어 또는 가상 머신에서 실행됩니다.

고성능 하드웨어에서 실행 중인 응용 프로그램 소프트웨어, 미들웨어, 기본 소프트웨어(위에서 아래로) 계층이 있는 일반화된 SOA 소프트웨어 스택.

일반화된 SOA 소프트웨어 스택.

SOC (서비스 지향 통신)

SOA 기반 응용 프로그램은 서비스 지향 통신을 위한 서비스 지향 인터페이스를 사용하여 메시지를 통해 정보를 교환하는 기능을 제공하고 사용합니다. SOA에서 서비스는 클라이언트 또는 서버의 역할을 수행합니다. 각 클라이언트 또는 서버 서비스는 소프트웨어에서 구성요소로 구현됩니다. 클라이언트와 서버 구성요소 간 연결 지점을 클라이언트/서버 포트라고 하며, 이는 서비스 지향 인터페이스를 구성합니다.

두 개의 서비스 지향 응용 프로그램은 메시지를 사용하여 서로 통신합니다.

메시지를 사용한 서비스 지향 통신.

정보 교환을 용이하게 하기 위해 클라이언트 및 서버 구성요소는 publish-subscribe, request-response, fire-forget 등 다양한 서비스 지향 통신 패턴을 사용합니다. 이러한 패턴은 비동기적이거나 비주기적일 수 있으며, 이는 SOC의 주요 특징입니다. 이벤트 기반 모델링은 Stateflow® 및 SimEvents®를 사용하여 수행할 수 있습니다. 또한, Simulink®의 Messages & Events 라이브러리를 통해 메시지 기반 통신을 사용하는 응용 프로그램을 위한 C++ 코드를 모델링하고 시뮬레이션하며 생성할 수 있습니다.

방법(request-response 및 fire-forget), 이벤트 및 필드를 포함한 서비스 지향 통신 인터페이스 패턴.

서비스 지향 통신 인터페이스 패턴.

SOA 워크플로

모델 기반 설계 워크플로에서는 다음과 같은 작업을 수행하여 서비스 지향 응용 프로그램을 구축할 수 있습니다.

  • Requirements Toolbox™로 요구사항 지정
  • System Composer™로 SOA 작성
  • Simulink에서 서비스와 구성요소 모델링 및 시뮬레이션
  • 재사용을 위해 기존 서비스 및 구성요소 가져오기
  • Embedded Coder®C++ 프로덕션 코드 생성
  • 전체 SOA 응용 프로그램 통합
  • SOA 응용 프로그램을 에지 기기 및 클라우드에 배포

SOA 확장성

서비스는 재사용할 수 있으며 업그레이드할 수 있습니다. 이를 통해 소프트웨어 엔지니어는 OTA(무선) 업데이트를 지원해 항상 최신 상태를 유지할 수 있는 시스템을 비롯해 애자일 원칙을 사용하여 확장 가능한 서비스 지향 응용 프로그램을 구축할 수 있습니다.

인시던트 발생 후 복구 시간을 단축하기 위한 일련의 단계와 관련 툴을 보여주는 소프트웨어 정의 차량 워크플로.

인시던트 발생 후 복구 시간을 단축하기 위한 소프트웨어 정의 차량 워크플로.

SOA의 활용 사례

자율성, 연결성, 전동화를 통합한 소프트웨어 정의 시스템의 경우 SOA는 기본 프레임워크로써 중요한 역할을 합니다. SOA는 또한 자동차, 항공우주, 산업 자동화 및 IoT, 의료기기, 로보틱스 산업에서 복합 시스템, 다중 에이전트 시스템, 이산 이벤트 시스템, 분산 시스템을 구축하기 위한 용도로도 사용됩니다.

이러한 산업을 지원하기 위해 SOA 및 서비스 지향 통신에 기반한 소프트웨어 아키텍처 프레임워크, 미들웨어 표준, 통신 프로토콜이 등장했습니다. 이러한 프레임워크 및 표준의 예로는 AUTOSAR Adaptive, DDS, ROS/ROS2, FACE, SOME/IP, MOSA, MQTT, OPC UA 등이 있습니다.

자동차에서의 SOA

SDV(소프트웨어 정의 차량)가 등장함에 따라 SOA는 자동차 산업에서 가장 널리 사용되고 있습니다. SDV는 신호 기반 응용 프로그램과 서비스 지향 응용 프로그램을 차량 컴퓨터 및 구역 제어기와 함께 최신 EE 아키텍처에 통합합니다. 개발자는 System Composer 및 Simulink를 사용하여 SOA를 모델링하고 시뮬레이션하며, C++ 프로덕션 코드를 생성한 후 에지 기기 및 클라우드에 모듈식 서비스로 배포할 수 있습니다. 또한, 차량의 라이프사이클 동안 무선 소프트웨어 업데이트를 통해 이러한 서비스를 업그레이드하여 고객 경험을 향상할 수도 있습니다. SOA는 위에서 다룬 산업 표준 외에도 사내 프레임워크에 통합되었습니다.

클라우드에 연결된 AUTOSAR Classic 소프트웨어 스택과 AUTOSAR Adaptive 소프트웨어 스택을 보여주는 자동차 예.

자동차 예: AUTOSAR Classic 및 Adaptive 소프트웨어 스택

항공우주 및 국방에서의 SOA

항공우주 및 국방 산업에서는 MOSA(Modular Open Systems Approach) 표준화 이니셔티브의 일부인 FACE™(Future Airborne Capability Environment) 표준에 SOA가 등장합니다. FACE에서는 서비스 지향 통신을 위해 TSS(Transport Services Segments)를 사용합니다. Simulink 및 DDS Blockset을 사용하면 FACE 표준을 위한 응용 프로그램을 모델링 및 시뮬레이션하고, DDS TSS를 위한 FACE IDL을 가져오고, FACE TSS 통신을 시뮬레이션하고, FACE 응용 사례를 위한 C++ 프로덕션 코드를 생성하여 배포할 수 있습니다.

IDL 가져오기, 인터페이스 데이터 사전 보기 및 편집, 알고리즘 모델링, C++ 코드 생성, FACE 응용 사례 배포를 보여주는 FACE IDL 기반 워크플로

가져오기부터 배포까지의 FACE IDL 기반 워크플로.

참조: System Composer, Simulink, Stateflow