서비스 지향 프로그래밍
Service-oriented programming서비스 지향 프로그래밍(SOP)은 '서비스'를 컴퓨터 작업의 단위로 삼아 통합 비즈니스 애플리케이션과 미션 크리티컬 소프트웨어 프로그램을 설계·실행하는 프로그래밍 패러다임이다. 서비스는 비즈니스 프로세스의 단계를 나타낼 수 있으며, 따라서 이 패러다임의 주요 애플리케이션 중 하나는 "내부에서 통합"할 수 있는 독립형 또는 복합 비즈니스 애플리케이션의 비용 효율적인 제공이다.
소개
SOP는 본질적으로 SOA(서비스 지향 아키텍처)를 촉진하지만 SOA와 같지 않다. SOA가 "서비스"를 사용하는 시스템 간 통신에 중점을 두는 반면, SOP는 인메모리 서비스를 업무 단위로 사용하여 민첩한 애플리케이션 모듈을 구축할 수 있는 새로운 기술을 제공한다.
SOP의 인메모리 서비스는 웹 서비스 운영으로 투명하게 외부화될 수 있다. 언어 및 플랫폼 독립적인 웹 서비스 표준 때문에 SOP는 기존의 모든 프로그래밍 패러다임, 언어 및 플랫폼을 수용한다. SOP에서 프로그램 설계는 잘 정의된 서비스 인터페이스에 걸친 서비스 호출, 논리적 라우팅 및 데이터 흐름 설명의 의미 체계를 중심으로 회전한다. 모든 SOP 프로그램 모듈은 서비스로 캡슐화되며 서비스는 이 서비스 스택 계층에 사실상 제한이 없는 계층적 방식으로 다른 중첩된 서비스로 구성될 수 있다. 또한 복합 서비스는 SOP에 특정되고 고유한 프로그래밍 구조를 포함할 수 있다. 서비스는 웹 서비스 표준 또는 인메모리 플러그인 메커니즘을 통한 독점 API를 통해 액세스되는 다른 시스템에서 외부화된 구성요소가 될 수 있다.
SOP는 시퀀싱, 선택 및 반복을 위한 기본 프로그래밍 구조를 지원하지만, 데이터 목록 조작, 데이터 통합, 서비스 모듈의 자동화된 멀티스레딩, 선언적 컨텍스트 관리 및 s의 동기화를 위한 기본적 기능을 제공하는 다수의 새로운 프로그래밍 구성 요소와 차별화된다.빈민굴 SOP 설계는 프로그래머가 서비스 실행을 의미 있게 동기화하여 정확함을 보장하거나 서비스 모듈을 자동화된 커밋/롤백 동작으로 트랜잭션 경계로 선언할 수 있도록 한다.
의미론적 설계 툴과 런타임 자동화 플랫폼을 구축하여 SOP의 기본 개념을 지원할 수 있다. 예를 들어 서비스 객체를 작업 단위로 자동 생성하여 컨텍스트를 관리하는 서비스 가상 머신(SVM)은 XML에 저장되고 디자인 타임 자동화 툴에 의해 생성되는 SOP 프로그램 메타데이터를 기반으로 실행되도록 설계할 수 있다. SOA 용어에서 SVM은 서비스 생산자 및 서비스 소비자 둘 다이다.
기본 개념
SOP 개념은 프로그래밍 통합과 애플리케이션 논리에 대한 의미론적 접근방식의 견고한 기초를 제공한다. 이 접근법에는 다음과 같은 세 가지 중요한 이점이 있다.
- 의미론적으로 복합 비즈니스 애플리케이션 생성에 대한 추상화 수준을 높여 변화에 대한 대응성을 크게 높일 수 있다(즉, 비즈니스 민첩성).
- 단일 개념으로 통합 및 소프트웨어 구성 요소 개발 기법의 통일성을 유도하여 통합의 복잡성을 현저하게 감소시킨다. 이러한 통합 접근 방식을 통해 데이터를 복제할 필요 없이 "내부 통합"이 가능하므로 전체 솔루션의 비용과 복잡성이 크게 감소됨
- 세분화된(업무 단위) 수준에서 애플리케이션의 다중 스레드 및 가상화 자동화
다음은 SOP의 몇 가지 핵심 개념이다.
캡슐화
SOP에서 인메모리 소프트웨어 모듈은 웹 서비스 운영으로 온디맨드 외부화가 가능한 잘 정의된 서비스 인터페이스를 통해 엄격하게 캡슐화된다. 이러한 최소한의 캡슐화 단위는 기존 및 기존 소프트웨어 자산 전반뿐만 아니라 다른 메모리 내 서비스 모듈 내에서 재사용 가능성을 최대화한다. SOP는 정보 은닉에 서비스 인터페이스를 사용함으로써 SOA에서 사용되는 서비스 지향 설계 원칙을 확장하여 인메모리 서비스 모듈 간 우려의 분리를 달성한다.
서비스 인터페이스
SOP의 서비스 인터페이스는 입출력 데이터 구조가 잘 정의된 소프트웨어 작업을 기술하는 인메모리 객체다. 서비스 인터페이스는 패키지로 그룹화할 수 있다. SOP 서비스 인터페이스는 WSDL 운영으로 외부에서 처리될 수 있으며 WSDL을 사용하여 단일 서비스 또는 서비스 패키지를 설명할 수 있다. 나아가 서비스 인터페이스는 공유 속성을 기반으로 하나 이상의 서비스 그룹에 할당할 수 있다.
SOP에서 서비스 인터페이스 메타데이터에 저장된 런타임 속성은 서비스 가상 머신(SVM)과의 계약 역할을 한다. 런타임 속성 사용의 한 예는 선언적인 서비스 동기화에서이다. 서비스 인터페이스는 완전히 동기화된 인터페이스로 선언될 수 있으며, 이는 해당 서비스의 단일 인스턴스만 특정 시간에 실행될 수 있음을 의미한다. 또는 실행 시 키 입력의 실제 값에 기초하여 동기화할 수 있으며, 이는 키 입력 데이터에 대해 동일한 값을 가진 해당 서비스의 두 서비스 인스턴스가 동시에 실행될 수 없다는 것을 의미한다. 또한 동기화는 동일한 서비스 그룹에 속하는 서비스 인터페이스 간에 선언될 수 있다. 예를 들어 'CreditAccount'와 'DebitAccount'라는 두 서비스가 동일한 동기화 서비스 그룹에 속해 계정 이름 입력 필드에서 동기화되면, 동일한 계정 이름을 가진 'CreditAccount'와 'DebitAccount'의 두 인스턴스가 동시에 실행되지 않는다.
서비스 인보커
서비스 호출자가 서비스 요청을 한다. SVM과 같은 SOP 런타임 환경에서 컴퓨터 메모리를 건널 때 소비자와 생산자 사이에 사용되는 통신 프로토콜뿐만 아니라 서비스 생산자의 위치를 추상화하는 플러그형 인메모리 인터페이스다. 생산자는 동일한 서버 머신의 프로세스 외부 또는 네트워크로 연결된 서버 머신의 집합에 걸쳐 가상화할 수 있다. SOP에서 서비스 호출자의 사용은 위치 투명성과 가상화의 핵심이다. 서비스 인보커 계층의 또 다른 중요한 특징은 컴퓨터 간에 통신할 때 대역폭과 처리량을 최적화하는 능력이다. 예를 들어, "SOAP Invoker"는 웹 서비스 표준을 사용하는 컴퓨터 간의 원격 통신을 위한 기본 서비스 호출기 입니다. 예를 들어, 더 나은 보안과 더 효율적인 대역폭 사용을 위해 생산자와 소비자가 전용 API를 통해 통신하기를 원하는 경우 이 인보커는 동적으로 교환될 수 있다.
서비스 수신기
서비스 수신기는 서비스 요청을 수신한다. SVM과 같은 SOP 런타임 환경에 대한 수신 서비스 요청에 대한 통신 프로토콜을 추상화하는 플러그형 인메모리 인터페이스다. 이 추상 계층을 통해 SOP 런타임 환경은 모든 전통적인 프로그래밍 환경이나 애플리케이션 서비스의 메모리 주소 내에 사실상 내장될 수 있다.
서비스 구현
SOP에서 서비스 모듈은 복합 서비스 또는 원자 서비스로 구현될 수 있다. SOP 패러다임을 통해 구축된 서비스 모듈은 외향적인 성격을 가지고 있으며 SOAP나 독점 프로토콜과 같은 표준을 통해 투명하게 외부화될 수 있다는 점에 유의해야 한다.
의미 기반 접근법
SOP의 가장 중요한 특징 중 하나는 완전한 의미 기반 프로그래밍 접근방식을 지원할 수 있다는 것이다. 더욱이, 이러한 의미 기반 접근방식은 서비스 인터페이스와 서비스 모듈 정의를 저장하기 위한 완전한 메타데이터 중심 계층 위에 구축된 시각적 환경으로 계층화할 수 있다. 더욱이, SOP 런타임이 메타데이터 계층을 해석할 수 있는 SVM에 의해 지원된다면, 자동 코드 생성의 필요성이 없어질 수 있다. 그 결과 개발 중에 엄청난 생산성 향상, 테스트의 용이성 및 구축에 있어 상당한 민첩성이 확보된다.
서비스 구현: 복합 서비스
복합 서비스 구현은 SOP 기법과 개념에 기초한 서비스 모듈의 의미적 정의다. 복합 서비스의 블랙박스 인터페이스 정의 내부를 보면, 서로 연결되어 있고 SOP 프로그래밍 구성에 연결된 다른 서비스 인터페이스를 볼 수 있다. 복합용역은 내부의 모든 서비스("내부 서비스")가 다른 원자 또는 복합용역일 수 있다는 재귀적 정의를 가지고 있다. 내부 서비스는 포함된 동일한 복합 서비스를 재귀적으로 참조할 수 있다.
프로그래밍 구성
SOP는 시퀀싱, 선택 및 반복을 위한 기본 프로그래밍 구성과 내장된 고급 동작을 지원한다. 또한, SOP는 복합 서비스의 내부 서비스에 걸친 자동 데이터 매핑, 변환, 조작 및 흐름을 위한 의미론적 구조를 지원한다.
시퀀싱
복합 서비스("내부 서비스")의 정의 내부의 서비스는 내장된 활성화 포트로 다른 내부 서비스의 내장 성공 또는 실패 포트의 의미적 연결을 통해 암묵적으로 시퀀싱된다. 내부 서비스가 성공적으로 실행되면, 성공 포트에 연결된 모든 내부 서비스가 다음에 실행될 것이다. 내부 서비스가 실패하면 장애 포트에 연결된 모든 서비스가 다음에 실행된다.
선택
논리적 선택은 데이터 기반 분기 구조와 기타 구성 가능한 구조를 통해 이루어진다. 일반적으로 구성 가능한 구조는 다른 연결된 서비스의 입출력 형태를 가정할 수 있는 입력과 출력이 있는 SOP 플랫폼에 내장된 서비스다. 예를 들어, 서비스의 출력 데이터를 필터링하는 데 사용되는 구성 가능한 구조는 판매 주문, 구매 주문서 또는 기타 데이터 구조의 목록을 수집하여 필터 구성의 해당 인스턴스의 인터페이스에 저장된 사용자 선언 필터 속성을 기반으로 데이터를 필터링할 수 있다. 이 예에서 필터링할 구조물은 필터 구성의 특정 인스턴스(instance)의 입력이 되고 필터링된 데이터를 나타내는 동일한 구조가 구성 가능한 구성의 출력이 된다.
반복
복합 서비스를 루프에 선언할 수 있다. 루프는 반복 사이에 선택적으로 내장된 지연으로 고정된 횟수로 구속될 수 있으며, 루프 복합 서비스 내부의 "성공한 서비스 종료" 또는 "실패한 서비스 종료" 구조를 사용하여 동적으로 종료할 수 있다. 또한, 서비스 인터페이스는 자동 준비 시 2개 이상의 입력 구성요소와 함께 제공되는 경우, 루프 또는 "예측" 모드에서 자동으로 실행될 수 있다. 이 동작은 하나의 서비스의 데이터 목록 구조가 하나의 데이터 구조(즉, 비-경색)를 입력으로 하는 서비스에 접속하는 설계 시 지원된다. 복합 서비스 인터페이스의 런타임 속성이 병렬로 "예측"을 지원한다고 선언되면, 런타임 자동화 환경은 자동으로 루프를 다중 스레드하여 병렬로 실행할 수 있다. SOP 프로그래밍 구조가 내장된 고급 기능을 제공하는 방법을 보여주는 사례다.
데이터 변환, 매핑 및 변환
데이터 매핑, 변환 및 변환 구조를 통해 내부 서비스 간에 데이터를 자동으로 전송할 수 있다. 내부 서비스가 활성화되고 모든 입력 종속성이 해결되면 내부 서비스가 실행될 준비가 된다. 복합 서비스 내에서 준비된 모든 내부 서비스는 "하이퍼사이클"이라는 병렬 버스트에서 실행된다. 이는 SOP에서 자동 병렬 처리가 지원되는 수단 중 하나이다. 복합 서비스의 정의는 내부 서비스 의존성에 대한 암묵적 지시 그래프를 포함한다. SOP의 런타임 환경은 가능하면 내부 서비스를 자동으로 인스턴스화하고 병렬로 실행함으로써 이 지시된 그래프를 기반으로 실행 그래프를 만들 수 있다.
예외처리
예외 처리란 자바에서 런타임 오류다. SOP의 예외 취급은 단순히 내부 서비스의 고장 포트를 다른 내부 서비스 또는 프로그래밍 구조에 연결함으로써 이루어진다. "실패한 퇴장" 및 "성공한 퇴장" 구조는 예외 처리에 사용되는 구조물의 예다. 서비스의 고장 포트에 대해 조치를 취하지 않을 경우, 외부(상위) 서비스가 자동으로 실패하며 실패한 내부 서비스로부터의 표준 출력 메시지가 부모의 표준 출력까지 자동으로 거품이 일 것이다.
트랜잭션 경계
복합 서비스를 거래 경계로 선언할 수 있다. SOP의 런타임 환경은 트랜잭션 경계로 사용되는 복합 서비스 객체에 대한 계층적 컨텍스트를 자동으로 생성하고 관리한다. 이 컨텍스트는 복합 서비스가 성공적으로 실행되면 자동으로 커밋되거나 롤백된다.
용역보상
보상 서비스라고 불리는 특별한 복합 서비스는 SOP 내의 어떤 서비스와도 연관될 수 있다. 트랜잭션 경계로 선언된 복합 서비스가 예외 처리 라우팅 없이 실패하면 SOP 런타임 환경은 이미 성공적으로 실행된 모든 내부 서비스와 관련된 보상 서비스를 자동으로 발송한다.
서비스 구현: 원자력 서비스
원자력 서비스는 서비스 네이티브 인터페이스(SNI)를 통한 SOP 런타임 환경의 내장 메모리 확장이며, 기본적으로 플러그인 메커니즘이다. 예를 들어, SOP가 SVM을 통해 자동화된 경우, 서비스 플러그인은 관련 서비스가 소비될 때 SVM에 동적으로 로드된다. 서비스 플러그인의 예로는 인메모리 서비스 입력 데이터를 웹 서비스 SOAP 요청으로 즉시 변환하여 서비스 생산자에게 게시한 다음 해당 SOAP 응답을 서비스의 인메모리 출력 데이터에 변환할 수 있는 SOAP 통신 플러그인이 있을 것이다. 서비스 플러그인의 또 다른 예로는 데이터 액세스, 수정 및 쿼리 작업을 지원하는 표준 데이터베이스 SQL 플러그인이 있다. 원자력 서비스 및 서비스 플러그인의 근본적인 중요성을 확립하는 데 도움이 될 수 있는 또 다른 예는 서비스 인보커를 서비스 플러그인으로 사용하여 SOP 플랫폼의 여러 인스턴스 간에 서비스를 투명하게 가상화하는 것이다. 이러한 고유한 구성 요소 레벨 가상화를 "서비스 그리드 가상화"라고 하며, 이를 기존의 애플리케이션 또는 프로세스 레벨 가상화와 구별하기 위해 가상화라고 한다.
교차 절단 우려
SOP는 SOP 기법을 사용하여 구축된 모든 응용프로그램에 대해 교차 절단 우려를 지원할 수 있는 중요한 기회를 제공한다. 다음 절에서는 이러한 기회 중 일부를 정의한다.
서비스 계측기
SOP 런타임 환경은 모든 서비스에 대해 체계적으로 내장되고 최적화된 프로파일링, 로깅 및 계량 기능을 실시간으로 제공할 수 있다.
선언적 및 상황에 맞는 서비스 캐싱
서비스 인스턴스의 선언된 키 입력 값에 기초하여, 특정 복합 서비스의 컨텍스트에서 실행할 때 시간에 민감하지 않은 내부 서비스의 출력은 SOP 런타임 환경에 의해 캐시될 수 있다. 특정 키 입력 값에 대해 서비스가 캐시되면 SOP 런타임 환경은 서비스를 소비하는 대신 서비스 캐시에서 키 입력에 해당하는 캐시된 출력을 가져온다. SOP 애플리케이션 개발자에게 이 내장된 메커니즘을 사용하면 백엔드 시스템의 부하를 상당히 줄일 수 있다.
서비스 트리거
SOP는 특별한 종류의 복합 서비스인 트리거 서비스를 다른 서비스에 연결하기 위한 메커니즘을 제공한다. 해당 서비스가 소비되면 SOP 플랫폼은 트리거링 서비스 입력의 인메모리 복사본과 관련된 트리거 서비스 인스턴스를 자동으로 생성하고 소비한다. 이 소비량은 트리거링 서비스 실행에 영향을 주지 않는다. 서비스 트리거는 트리거링 서비스의 활성화, 실패 또는 성공 완료 시 실행되도록 선언할 수 있다.
서비스 간 통신
서비스 요청 이벤트와 공유 메모리는 서비스 호출 기능 외에도 서비스 간 통신을 위해 제공되는 SOP 내장 메커니즘 중 두 가지다. 서비스 소비는 SOP에서 이벤트로 간주된다. SOP는 "대기" 구성을 통해 하나 이상의 다른 서비스 소비 이벤트가 특정 입력 데이터 값으로 발생할 때까지 기다릴 필요성을 선언한 실행 중인 복합체의 사전 유입을 초래하는 상관관계 기반 이벤트 메커니즘을 제공한다. 복합 서비스의 실행은 서비스가 대기 구조와 관련된 특정 상관 관계 키 입력과 함께 소비되는 경우에도 계속된다. SOP는 또한 서비스의 입출력 구조와 유사한 잘 정의된 데이터 구조에 접근하고 업데이트할 수 있는 접근 제어 기능이 있는 공유 메모리 공간을 제공한다. SOP 내의 공유 메모리 메커니즘은 서비스 인터페이스를 통해 프로그래밍 방식으로 접근할 수 있다.
서비스 재정의
SOP에서 커스터마이징은 Service Reverrides라는 창의적인 기능을 통해 관리된다. 이 기능을 통해 서비스 구현은 런타임에 가능한 많은 구현 중 하나에 의해 정적 또는 동적으로 재정의될 수 있다. 이 특징은 객체 지향 프로그래밍에서 다형성과 유사하다. 배치 당시 서로 다른 SOP 애플리케이션 설치 전반에 걸쳐 관련 오버라이드 그룹의 활성화를 관리하기 위해 가능한 오버라이드 구현을 하나 이상의 오버라이드 구성 포트폴리오에 연결할 수 있다.
소비자 계정 프로비저닝
선택 서비스는 프리젠테이션(GUI) 계층 또는 기타 애플리케이션에 의한 외부 프로그램 소비를 위해 안전하게 배치될 수 있다. 일단 서비스 계정이 정의되면 SOP 런타임 환경은 소비자 계정 프로비저닝 메커니즘을 통해 자동으로 액세스를 관리한다.
보안
SOP 런타임 환경은 체계적으로 내장된 인증과 서비스 허가를 제공할 수 있다. 인가를 목적으로 SOP 개발 프로젝트, 소비자 계정, 패키지 및 서비스를 접근 통제가 가능한 자원으로 취급한다. 이러한 방식으로 SOP 런타임 환경은 내장 인증을 제공할 수 있다. 표준 또는 독점 허가 및 통신 보안은 서비스 재정의, 플러그인 호출자 및 서비스 수신기 모듈을 통해 사용자 정의된다.
가상화 및 자동 멀티스레딩
SOP의 모든 아티팩트는 잘 캡슐화된 서비스이고 공유메모리와 같은 모든 SOP 메커니즘은 배포 가능한 서비스로 제공될 수 있기 때문에 SOP 런타임 환경에 의해 대규모 가상화가 자동화될 수 있다. 또한, 복합 서비스의 계층적 서비스 스택과 그 내부 서비스와 관련된 다중 실행 그래프는 각 수준에서 SOP 런타임 환경에 대한 자동화된 다중 스레딩을 위한 엄청난 기회를 제공한다.
역사
서비스 지향 프로그래밍이라는 용어는 Alberto Silitti, Tullio Vernazza, Giancarlo Succi가 "소프트웨어 재사용: 방법, 기술, 도구." SOP는 위에서 설명한 바와 같이 실리티, 베르나자, 수찌가 제안한 용어의 사용의 일부 측면을 반영한다.
오늘날 SOP 패러다임은 주류 채택의 초기 단계에 있다. 이러한 채택을 촉진하는 네 가지 시장 요인이 있다.
- 멀티코어 프로세서 아키텍처: 4GHz 이상의 프로세서 클럭 속도 증가와 관련된 열 분산 문제로 인해 인텔과 같은 주요 프로세서 벤더는 지속적으로 증가하는 성능을 제공하기 위해 멀티코어 아키텍처로 눈을 돌렸다. "무료 점심 식사는 끝났다" 기사를 참조하십시오. 이러한 설계 변경으로 소프트웨어 모듈 및 애플리케이션 개발 방식이 변경된다. 멀티 코어 프로세서를 활용하기 위해서는 애플리케이션을 동시에 작성해야 하며 동시 프로그램 작성은 어려운 작업이다. SOP는 자동화된 멀티스레딩을 위한 내장 기회를 제공한다.
- 애플리케이션 가상화: SOP는 모든 서비스 모듈의 서비스 구성요소의 위치 투명성에 대한 내장된 마이크로 제어를 촉진한다. 이를 통해 SOP 런타임 플랫폼의 클러스터 또는 그리드에 걸쳐 애플리케이션 구성 요소(전체 애플리케이션 프로세스와 비교)를 자동적이고 세분화하여 가상화할 수 있다.
- 서비스 지향 아키텍처(SOA)와 통합 및 복합 애플리케이션에 대한 수요: 초기에는 SOA 채택이 약간의 지연으로 SOA 채택 곡선을 따를 것이다. SOA를 통해 생성된 서비스는 SOP를 통해 쉽게 조립하고 소비할 수 있기 때문이다. 웹 서비스가 확산될수록 SOP의 의미적 성격을 이용하는 것이 타당하다. 한편 SOP는 SOP에 내재되어 있기 때문에 SOP는 주류 시장에 SOA를 제공할 수 있는 비용 효율적인 방법을 제공한다.
- SaaS(Software as a Service): 현재 SaaS 플랫폼의 기능은 대기업에서 요구하는 커스터마이징 및 통합 복잡성을 해결할 수 없다. SOP는 통합과 맞춤화의 복잡성을 크게 줄일 수 있다. 이는 SOP를 차세대 SaaS 플랫폼으로 끌어올릴 것이다.
참고 항목
외부 링크
- http://nextaxiom.com
- DOI.org "서비스 지향 프로그래밍: 소프트웨어 재사용의 새로운 패러다임"
- https://web.archive.org/web/20090505205415/http:///blog.itaniumsolutions.org/2008/01/
- http://in.sys-con.com/node/467329