일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 재택근무
- 자바
- 스프링
- 패스트캠퍼스
- 데이터베이스
- 리눅스
- js
- java
- DesignPattern
- 국비
- 디자인
- 패스트캠퍼스후기
- 자바예제
- 웹
- String
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
- javabasic
- linux
- Spring
- ncs
- 디자인패턴
- 직장인인강
- 패캠챌린지
- 자바기본
- DB
- 직장인자기계발
- 자바연습문제
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online강의
- java기초
- 자바기초
- Today
- Total
FIF's 코딩팩토리
SOA(Service Oriented Architecture) 개념 한번에 정리 본문
1. SOA(Service Oriented Architecture)란?
기존 애플리케이션들의 기능들을 비즈니스적인 의미를 가지는 기능 단위로 묶어서 표준화된 호출 인터페이스를 통해 서비스라는 소프트웨어 컴포넌트 단위로 재조합한 후, 이 서비스들을 서로 조합(Orchestration)하여 업무 기능을 구현한 애플리케이션을 만들어내는 소프트웨어 아키텍처.
- 기존의 시스템이 각각의 독립된 업무 시스템으로 개발되었던 반면 SOA는 기업의 전체 업무가 하나의 거대한 SOA시스템으로 구성이 된다.
-> 각각의 시스템 기능들을 업무 기준으로 주요 기능들로 묶어서 플랫폼에 독립적인 인터페이스(예를 들어 XML/HTTP, CORBA, SOAP)를 구현하여 외부로 서비스를 제공한다.
2. SOA의 기본적인 개념
새로운 업무를 구현할 때 새롭게 시스템을 신규 개발하는 것이 아니라 이미 제공되어 있는 기존의 서비스들을 조합하여 하나의 업무를 구현할 수 있다.
소프트웨어의 재사용성과 레고웨어의 연장선…
급격한 비즈니스 환경의 변화에 따라 비즈니스 요구를 민첩하게 IT 시스템에 반영해야 하는 필요성이 생겼고, 각 업무별로 독립된 시스템의 형태로 개발되어 있는 업무 시스템들을 통합하기 위해 SOA가 대두되었다.
SOA는 “서비스와 이를 조합하여 애플리케이션을 구성하는 것”
* ”서비스”와 서비스를 구성하는 방법”?
-서비스란?
플랫폼에 종속되지 않는 표준 인터페이스(CORBA나 웹서비스)를 통해서 기업의 업무를 표현한 Loosely Coupled하고 상호 조합 가능한 소프트 웨어 이다.
현대의 SOA에서 서비스의 플랫폼 종속성은 SOAP 기반의 웹서비스 또는 XML을 통해서 구현된다.
서비스를 표현하는데 있어서 가장 중요한 특징은 “기업의 업무를 표현한다”는 것.
-서비스 구성
서비스 인터페이스 : EJB나 Java Object의 비즈니스 메서드
서비스 규약 : 서비스를 사용하기 위한 규약, 데이터 포맷, 변수형 서비스를 호출하기 위한 인자, 인터페이스, 이름 등의 정의되는 Contract
서비스의 구현체 : Implementation
현대의 SOA에서는 대부분이 웹서비스를 표준 인터페이스로 사용하기 때문에 서비스 Contract는 WSDL로 정의된다.
-Application frontend
최종 사용자에게 보이는곳. 일반적인 웹사이트, 기업 포탈, X-인터넷 클라이언트, 4GL클라이언트, ajax, flex등
* SOA 아키텍처
-Fundamental SOA : 가장 큰 목적은 시스템을 각각 서비스화 하는 것과 독립되었던 시스템을 통합하여 하나의 시스템으로 운영한다는데 목적이 있다.
서비스화 : 서비스 인터페이스로 대부분 SOAP기반의 웹서비스를 사용. 솔루션 중에는 이러한 웹서비스를 제공하는 서비스 어뎁터가 제공된다.(SAP, Siebel어뎁터, SALT 등)
-Networked SOA(유연성과 통제 추가) : 서비스화 해서 통합한 SOA시스템은 시간이 지날수록 덩치가 커진다. 그에 따라 서비스간 호출 관계는 더 복잡해지게 되며, 서비스 내용이 변경됨에 따라 서로 간의 의종성에 의해서 서비스 간의 수정이 필요하게 된다. 이렇게 되면서 서비스의 변화가 더 어려워지게 되는데 결과적으로 업무에 대해 “경직성”을 유발하게 된다. 이것을 해결하기 위해서 모든 서비스들을 중앙에 하나의 버스를 두고 그를 통해 관리함으로써 서비스간 연결의 복잡도를 해소한다. 이 버스가 바로 ESB(Enterprise Service Bus)이다. ESB는 서비스에 대한 모니터링과 Intermediary 서비스 기능의 제공, 위치에 대한 투명성을 제공한다.
-Process Oriented SOA(민첩성 추가) : 복잡한 업무 프로세스들을 BPM기반으로 구현한 SOA.
각 서비스를 조합하는 것을 BPM으로 구현함으로써 업무의 조합이 별도 코딩 없이 BPM 툴로 이루어지고, 업무프로세스가 바뀌었을 때 BPM 툴에서 업무프로세스를 조정하는 것만으로도 빠르게 비즈니스 요구사항에 대응할 수 있다.
* 서비스 구현
EAI : 시스템 간의 통합을 목적으로 하는 솔루션. SOA와는 다르게 Tightly Coupled되고, IT 시스템 간의 통합을 지원한다.
SOA 통합에서 다루기 힘든 트랜잭션이나 보안에 대한 내용을 해결해 준다.
EAI 솔루션에도 IT 시스템 간의 연계 흐름을 정의하기 위해서 BPM이 사용된다.(IC-BPM, HC-BPM)
-UDDI(Universally unique identifier : 범용 고유 식별자) : SOA시스템에서 이미 개발된 서비스를 재사용하기 위해서 서비스를 검색할 수 있어야 하는데 웹서비스에서는 UUID로 구현한다.
'기타 ' 카테고리의 다른 글
폰 노이만과 새로운 컴퓨터의 탄생 (0) | 2019.08.09 |
---|---|
최초의 버그와 최초의 컴파일러 (0) | 2019.08.09 |
미들웨어(Middleware)개념 정리 (0) | 2019.06.19 |
CICD/젠킨스 정리 (0) | 2019.06.17 |
Git과 Git Hub 사용법 정리 (0) | 2019.06.11 |