서비스 지향 아키텍처(Service Oriented Architecture, 약칭 SOA 「에스오에이」혹은 「소아」로 발음)란 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상에 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론이다. 업무 처리 변화를 시스템에 빠르게 반영하고자 하는 수요를 대응하기 위해 2004년부터 IT 업계에서 주목을 하고 있다.

목차

  [숨기기

[편집]정의

  • 토마스 얼은 그의 저서 SOA 서비스 지향 아키텍처에서 서비스지향 아키텍처(SOA)를 다음과 같이 정의하고 있다. 최신 SOA는 공개, 기민성, 확장, 연합, 자립적 요소들로 구성된 조합가능한 아키텍처, 서비스 품질, 다양한 벤더, 상호 운영성, 서비스 발견 그리고 잠재적으로 재사용 가능한 서비스들이 웹서비스로 구현된다. SOA는 비지니스 로직과 기술을 추상화하여, 이 도메인 간에 느슨한 결합을 유도한다. SOA는 과거 플랫폼의 진화물로서, 전통적인 아키텍처의 특징들을 고스란히 가지고 있으며, 명확한 원칙을 가지고 SOE를 지원하며 서비스 지향을 촉진한다. SOA는 엔터프라이즈 환경을 이상적으로는 표준화하지만, 치밀한 사전 계획에 의한 이전 필요성과 현재도 진화하고 있는 기술에 대한 지원만이 이러한 목적을 달성할 수 있다.
  • 책 “Enterprise SOA(Dirk Krafzg, Karl Banke, Dirk Slama)”에서는 서비스 지향 아키텍처를 “애플리케이션 프론트엔드, 서비스, 서비스 리포지토리, 서비스 버스의 주요 개념에 바탕을 둔 소프트웨어 아키텍처이다. 서비스는 계약, 하나 이상의 인터페이스, 그에 대한 구현으로 이루어진다.”라고 정의 하고 있다.
  • W3C의 Web Service Architecture Working Group에서 활동하고 있는 Hao He 박사는 “상호 작동하는 시스템 사이를 느슨하게 연결하려는 목적을 가진 아키텍처(Service Oriented Architecture is an architectural style whose goal is to achieve loose coupling among interacting software agents)”라고 정의 하고 있다.

[편집]구성요소

[편집]서비스

  • 명확한 기능적인 의미를 지닌 소프트웨어 컴포넌트로, 고차원의 비즈니스 개념을 캡슐화 하고 있는 것을 말한다. [1]
  • SOA의 관점에서 서비스는 인터페이스를 통해 자신이 가진 비즈니스 프로세스를 처리할 수 있는 컴포넌트로 정의된다. 서비스는 인터페이스와 구현 부분으로 구성된다. 서비스가 가지는 특징을 다음과 같이 3가지로 요약할 수 있다. [2]
    • 서비스의 인터페이스는 플랫폼에 독립적이다.
    • 서비스는 동적으로 검색될 수 있으며, 호출될 수 있다.
    • 서비스는 self-contained하다. 즉, 자신의 상태를 스스로 유지한다.

[편집]메시지

SOA를 이루는 두 번째 중요한 개념은 메시지이다. 서비스 제공자와 서비스 사용자는 메시지를 통해 서로 통신한다. 서비스 제공자는 서비스 명세를 통해 자신이 가진 서비스의 인터페이스를 공개하는데, 이 명세 내에는 서비스가 제공하는 기능과 이를 이용하기 위해 사용자와 주고 받아야 하는 메시지의 형식이 정의되어 있다. SOA 관점에서 서비스는 플랫폼 독립적이어야 하므로, SOA에서 정의되는 메시지는 특정 기술에 독립적이어야 한다.[2]

[편집]특징

  • 서비스는 발견이 가능하고 동적으로 바인딩된다. [2]
  • 서비스는 컴포넌트와 같이 독립된 모듈이다. [2]
  • 서비스의 플랫폼간 상호 운용이 가능하다. [2]
  • 서비스는 느슨하게 연결된다. [2]
  • 서비스는 네트워크 주소로 접근 가능한 인터페이스를 갖는다. [2]
  • 서비스는 위치 투명성을 제공한다. [2]
  • 서비스의 조립이 가능하다. [2]
  • 서비스는 자기 치유(self-healing)를 지원한다.[2]

[편집]참고문헌

  1.  엔터프라이즈 SOA
  2. ↑           네이버블로그

[편집]관련도서

  • SOA 서비스 지향 아키텍처 - 저자 : 토마스 얼, 출판사 : 성안당
  • SOA 서비스 지향 아키텍처 - 저자 : 에릭 마크스 & 마이클 벨, 출판사 : 엠플래닝
  • 엔터프라이즈 SOA - 저자 : 더크 크래프지그 & 칼 방케 & 더크 슬라마, 출판사 : 태극미디어
  • SOA, What & How: A Road to SOA - 저자 : 전병선, 출판사 : 와우북스

[편집]관련기술


출처 - http://ko.wikipedia.org/wiki/%EC%84%9C%EB%B9%84%EC%8A%A4_%EC%A7%80%ED%96%A5_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98#cite_note-atrri1-2






"SOA" 

영림원소프트랩 개발설계실 김진환 과장 

1. 들어 가는 말 
모든 기업은 비즈니스 영속성을 전제로 존재한다. 그렇다면 불확실성이 높고 빠르게 변하는 경영 환경에서 기업이 살아남기 위해 갖추어야 할 기본 소양은 무엇인가? 해답은 지속적인 혁신이다. 당면한 비즈니스 문제 해결뿐만 아니라 장기적인 관점에서 공고한 기반을 다지기 위해서는, 시시각각 변화하는 역동적인 시장 요구사항에 민첩하게 대응할 수 있는 인프라를 구축하는 것이 진정한 비즈니스 혁신의 핵심 요소라 할 수 있다. 이에 실시간 기업, 경영혁신, 차세대 시스템 등의 여러 가지 개념이 생겨났으며, 이 중 SOA(Service Oriented Architecture, 서비스지향 아키텍처)는 단연 IT업계 최대의 화두로 떠올랐다. SOA는 1996년Gartner 그룹에 의해 최초 소개되었다. Web Service ebXML (electronic business XML) 등의 모태 개념인 SOA는 비표준 맞춤형 어플리케이션 표준 프로세스 기반 아키텍처로 Gartner 보고서에 따르면 2006 년까지 전 세계 비즈니스 어플리케이션의80% 이상이 SOA를 기반으로 개발 될 것이라고 전망 되고 있다. 
이 글에서는 SOA의 기본 개념, SOA의 등장 배경에 대하여 살펴보고, 최신 SOA의 필요성과 비즈니스 어플리케이션 측면에서의 SOA역할에 대해 간략히 살펴 보고자 한다. 

2. SOA의 등장배경 
초기의 프로그램들은 기계어(어셈블리어)를 이용하여 작성되었으나, FORTRAN과 같은 고급 언어가 등장함에 따라 프로그램을 쉽게 작성 할 수 있게 되었다. 그러나 초기의 프로그래밍 언어들은 문제마다 접근법이 각각 다르고 대형 프로그램을 개발하기가 복잡한 문제를 안고 있었다. 이러한 문제는 구조적 프로그래밍 언어의 정의된 제어구조, 코드블록, 순환호출 및 지역 변수를 지원하는 부프로그램 함수를 이용해서 해결해 왔으나 문제 해결 방식이 직관적이지 못해 현재에는 객체라는 직관적인 방법을 도입한 객체지향적 프로그래밍언어(C++, Java, C#)를 통해 프로그램을 개발하고 있다. 객체지향적 프로그래밍 언어의 출현 이후에는 코드의 재사용을 위한 다형성, 잘 정의된 인터페이스를 통해 이진 형식으로 재사용을 위하여, 컴포넌트개발방법론(CBD : Component Based Development)에 대한 연구가 진행 되었다.CBD에서는 문제 해결을 위해 소프트웨어 블록(Component)을 통한개발, Component의 생성, 통합, 재사용을 고려한 개발을 해오게 된다. 
분산컴포넌트는 플랫폼, 운영체제, 소프트웨어 등의 환경 제약 없이 분산환경에서 개별적, 독립적으로 실행 될 수 있는 컴포넌트(CORBA, COM+. EJB 등)를 말한다. 이상적인 분산환경에서는 사용자들이 분산 컴포넌트의 이용에 어떠한 제약도 없어야 하며, 이를 위해서 분산컴퓨터환경은 아래조건을 충족해야 한다. 

■ 개발언어에 상관없이 서비스제공 
■ 플랫폼 독립적 컴포넌트 
■ 쉽고 간단한 서비스의 유지보수 

그러나 CORBA, COM+, EJB 등은 자신의 프레임워크에서 독립적이지 못하다. 이에 반해 SOA는 표준화 된 인터페이스와 XML을 이용한 인터페이스 노출로 개발 언어에서 독립, Messaging Protocol을 이용한 약결합으로 쉽고 간단한 유지보수, 
플랫폼에 보다 유연한 웹기반으로 플랫폼에서 독립함으로써 SOA가 등장하였다. 

3. SOA의 기본 개념 

SOA는 소프트웨어 아키텍처의 일종이다. 따라서, SOA를 이해하기 위해서는 이를 구성하고 있는 요소들을 파악할 필요가 있는데, 이 장에서는 먼저 SOA와 서비스를 정의하고 이를 기반으로 구성요소들을 살펴보도록 한다. 

1) SOA의 정의 

사실 SOA는 이미 CORBA나 DCOM등의 분산 객체 기술에서 그 기본 개념이 사용되었으나, 기술적인 문제(기술적인 미성숙 및 공개 표준의 부재)와 비즈니스 문제들(주요 소프트웨어 벤더들 간 협력의 부재)로 인하여 그리 큰 주목을 받지 못했다. 하지만 XML 기반의 웹 서비스 기술이 등장하면서 SOA는 새롭게 조명을 받고 있다. W3C는 SOA를 "호출 가능한 컴포넌트의 집합"으로 정의 하고 있다. 여기서 컴포넌트는 그 인터페이스의 정의 내용이 공개(publish), 발견(discovery)이 가능한 것을 의미한다. 
하지만 CBDI는 이 정의에 대해 두 가지 문제점을 지적하고 있다. SOA가 단순한 컴포넌트의 집합이 아니라는 점과, 정의 자체가 아키텍처의 구성 방법 보다는 이미 정의되어 있는 컴포넌트만을 염두 해두고 있다는 점이다. 따라서 CBDI는 SOA를 "애플리케이션의 기능들을 사용자(consumer)에 적합한 크기(granularity)로 공개한 서비스들의 집합으로 제공하고 사용되게 하는 정책(policy), 적용(practice), 또는 프레임워크(framework)"로 정의하고, 이 때 서비스는 "단일한 표준기반의 인터페이스 형태를 사용하여 구현과 독립적으로 추상화되며, 호출(invoke)되고, 공개(publish)되며, 발견(discover)할 수 있는 것"이라 정의하였다. 즉, SOA란 서비스라 불리는 분할(decomposition)된 애플리케이션 조각들을 단위로 느슨하게 연결해 하나의 완성된 애플리케이션으로 만드는 아키텍처이다. 

2) SOA의 구성요소 
SOA의 기본 구성요소는 아래와 같다. 

- 서비스 사용자(Service Consumer) : '서비스 제공자'에 의해 제공되고 있는 하나 이상의 서비스를 사용한다. 
- 서비스 제공자(Service Provider) : '서비스 사용자'가 호출시 입력하는 값을 가공하여, 그에 해당하는 결과를 제공한다. 경우에 따라 '서비스 제공자'는 또 다른 '서비스 제공자'의 서비스를 사용하는 '서비스 사용자'가 될 수도 있다. 
- 서비스 레지스트리(Service Registry) : 서비스에 대한 설명 정보(descriptions)를 저장하고 있다. '서비스 제공자'는 자신이 제공하고 있는 서비스를 등록하고, '서비스 사용자'는 자신의 원하는 서비스를 발견하여 사용한다. 

SOA의 기본 요소는 서비스, 메시지 그리고 서비스 발견 등이 있다. 

가. 서비스(Services) 

SOA의 관점에서 서비스는 인터페이스를 통해 자신이 가진 비즈니스 프로세스를 처리할 수 있는 컴포넌트로 정의된다. 서비스는 인터페이스와 구현 부분으로 구성된다. 서비스가 가지는 특징을 다음과 같이 3가지로 요약할 수 있다. 

- 서비스의 인터페이스는 플랫폼에 독립적이다 
- 서비스는 동적으로 검색될 수 있으며, 호출될 수 있다. 
- 서비스는 self-contained하다. 즉, 자신의 상태를 스스로 유지한다. 

서비스의 탄생으로 인해 자체적으로 소프트웨어를 만드는 기업은 점차 사라지고, 향후에는 만들어져 있는 소프트웨어를 서비스 단위로 구입하여 사용하는 패러다임이 대세를 이룰 것으로 예상된다. 

나. 메시지 (Messages) 

SOA를 이루는 두 번째 중요한 개념은 메시지이다. 서비스 제공자와 서비스 사용자는 메시지를 통해 서로 통신한다. 서비스 제공자는 서비스 명세를 통해 자신이 가진 서비스의 인터페이스를 공개하는데, 이 명세 내에는 서비스가 제공하는 기능과 이를 이용하기 위해 사용자와 주고 받아야 하는 메시지의 형식이 정의되어 있다. SOA 관점에서 서비스는 플랫폼 독립적이어야 하므로, SOA에서 정의되는 메시지는 특정 기술에 독립적이어야 한다. 

다. 서비스 발견(Discovery) 

서비스 발견이란 서비스 사용자가 서비스 레지스트리로부터 자신의 원하는 서비스 제공자를 찾는 작업을 말한다. 이를 위해서는 서비스 레지스트리는 서비스를 등록하고 발견하는 기능을 제공해야 한다. SOA의 관점에서 서비스 레지스트리는 다음과 같은 요구사항을 만족해야 한다. 
- 서비스의 확장성(scalability) 보장 
- 서비스 사용자와 제공자의 분리 (decoupling) 
- 서비스의 동적인 변경 기능 제공 (hot update) 
- 서비스 사용자를 위한 검색 기능 제공 (동적인 검색 기능 포함) 

3) SOA의 특징 

SOA가 가지고 있는 중요한 특징을 정리하면 다음과 같다. 

- 서비스는 발견이 가능하고 동적으로 바인딩 된다. 
- 서비스는 컴포넌트와 같이 독립된 모듈이다. 
- 서비스의 플랫폼간 상호 운용이 가능하다. 
- 서비스는 느슨하게 연결된다. 
- 서비스는 네트워크 주소로 접근 가능한 인터페이스를 갖는다. 
- 서비스는 위치 투명성을 제공한다. 
- 서비스의 조립이 가능하다. 
- 서비스는 자기 치유(self-healing)를 지원한다. 

4) SOA의 이점 

SOA는 기업 내의 어플리케이션 아키텍처를 보다 유연하고 확장 가능하도록 구성할 수 있게 하는 패러다임이다. 이러한 특징으로 인해 기업은 SOA를 통해 다음과 같은 이점을 얻을 수 있다. 

- 기존 자산을 최대한 이용할 수 있게 한다. 
- 빠른 시장 접근이 가능케 한다. 
- 전반적인 IT 비용을 절감해준다. 
- 위험관리를 용이케 한다. 
- 끊임없는 비즈니스 프로세스의 진보를 이루게 한다. 
- 프로세스 중심의 아키텍처를 유지할 수 있게 한다. 

5) SOA 와 Web Services 

SOA와 웹 서비스의 관계는 많은 자료에서 언급하고 있다. 일반적으로 그 내용은 거의 유사하지만 제시하는 기관마다 약간의 시각차이가 존재하고, 특히 SOA를 정의하는 관점에 따라서도 차이가 존재한다. 여기서는 여러 자료를 토대로 SOA와 웹 서비스의 관계를 도출하고 구체적으로 웹 서비스를 통해 SOA를 구현하는 방법까지 정리하였다. 

가. SOA와 웹 서비스의 관계 

SOA는 웹 서비스 개념보다 먼저 출현하였으며, 웹 서비스 보다 포괄적인 개념이다. SOA는 소프트웨어 개발 패러다임에 가깝고, 웹 서비스는 이러한 SOA의 패러다임을 실현하기 위한 다양한 기술 구현 사례라고 할 수 있다. 이름에서 알 수 있듯이 SOA는 아키텍처이다. 웹 서비스와 달리 특정 기술의 집합이 아니다. SOA는 기술적인 것을 초월할 뿐만 아니라 기술로부터 독립적이다. 비즈니스 환경에서 SOA의 순수한 아키텍처적인 정의는 "호출 가능한 잘 정의된 인터페이스를 갖는 독립된 기능의 서비스로 정의한 애플리케이션 아키텍처"이다. 반면, 웹 서비스는 기술의 집합이며 SOA의 개념을 보다 구체화한 것이다. 웹 서비스는 단순히 SOA를 구현한 것만은 아니다. 웹 서비스는 SOA 구현의 Best Practice라고 할 수 있다. 왜냐하면 SOA의 근본적인 철학을 고스란히 실현할 수 있도록 플랫폼 독립적인 프로토콜과 기술을 채택했기 때문이다. 웹 서비스가 HTTP, XML, SOAP, WSDL, UDDI 등의 프로토콜을 채택한 것은 SOA의 기본적인 요구사항을 만족하기 위해서라고 할 수 있다. 이들 기술은 특정 컴퓨팅 기술에 중립적이며, de-facto 표준에 가깝다. 
웹 서비스는 SOA를 개념 수준에서 구현이 가능한 현실로 끌어올리는데 중요한 역할을 한다. 현재도 웹 서비스를 이루는 기술표준들은 진화하고 있으며, 이들이 보다 견고해짐에 따라 SOA를 채택하기 위한 위험요소도 점차 제거될 것으로 기대된다. 

나. 웹 서비스를 이용한 SOA의 구현 

SOA에서 기본적으로 요구하는 컴퓨팅 관련 사항과 웹 서비스의 대응 기술은 다음과 같다. 
- SOA는 플랫폼 독립적인 방식으로 호출될 수 있는 서비스로 구성된다 - XML, SOAP 
- 서비스는 플랫폼, 프로그래밍 언어에 독립적인 인터페이스를 갖는다. - WSDL 
- 서비스는 표준체계에 의해 등록이 가능하며, 동적으로 발견 가능하다. - UDDI 
웹 서비스는 W3C SOAP 1.2 표준을 통해 서비스 사용자와 제공자 사이의 통신을 구현한다. 아래 그림은 SOAP를 통한 서비스 호출을 나타낸다. 


웹 서비스에서 사용하는 서비스 기술의 표준은 WSDL(Web Services Definition Language)이다. WSDL은 서비스 사용자와 제공자가 주고 받을 메시지를 XML로 정의하며, 모든 프로그래밍 언어에 독립적으로 작동한다. 




웹 서비스에서 사용하는 서비스 공개, 저장 및 발견의 표준은 UDDI(universal description, discovery, and integration)이다. UDDI는 서비스 공개, 저장, 발견을 위한 기본적인 인터페이스를 정의하고 있으며, 이는 웹 서비스를 발견하고 공개하기 위해 표준 SOAP메시지를 정의한 서비스 레지스트리(registry)이다. 아래 그림은 UDDI가 동작하는 패턴을 보여주는데, 서비스 레지스트리의 역할을 UDDI가 수행한다. 

< UDDI의 동작 패턴> 


4. SOA의 필요성 

앞서는 SOA의 기술적인 측면에서 특징과 기본 구조에 대해 간략히 살펴 보았다. 이번 장에서는 기업의 실무적인 측면에서의 SOA의 필요성을 살펴 보도록 하자. 
기업의 대규모IT 시스템이 가진 가장 큰 문제는 고비용으로 도입한 시스템을 극히 제한적인 용도로 그리고 제한적인 사람들만 이용한다는 것이다. 예를 들어, 직원 신원 정보를 담고 있는 정보시스템을 인력관리(HR) 부서의 직원만 사용 할 수 있고 다른 직원은 그러한 시스템이 존재한다는 사실조차도 모른다는 가정하에, 회사에서 직원들의 성과를 적극 관리하기 위해 CIM(Corporate Incentive Management)을 도입해서 직원정보시스템과 연동하고자 한다면 방법은 비싼 비용을 지불하고 직원정보시스템과 CIM을 연동하기 위한 별도의 커넥터를 개발하는 것이다. 그리고 향후 또 다른 시스템이 직원 정보시스템과 연동을 원한다면, 그리고 그 방법이 CIM과 연동했던 방법과 다르다면 어떻게 할 것인가? 이처럼 시스템 도입과 활용문제는 기업 내에 존재하는 아주 전형적인 통합(Integration)과 관련된 문제이다. 그리고 이 전형적인 문제를 해결하기 위해 기업들은 엄청난 비용과 시간을 투자하고 있다. SOA는 바로 이러한 문제를 적은 비용으로 쉽게 해결 할 수 있다. 즉, 직원 정보시스템이 외부에 제공 할 수 있는 서비스를 정의하고 이를 WSDL(Web Service Description Language) 같은 표준 XML 인터페이스로 정의한다. 그리고 WSDL 인터페이스를 통해 들어오는 요청을 기존 직원정보시스템과 연동 시키기 위한 부분을 개발해 준다. 바로 이 부분에서 Web Service가 요청되는데 JSP/Servlet, 혹은ASP와 같은 웹어플리케이션으로 쉽게 개발이 가능하다. 
WSDL의 장점은 표준화 된 방법으로 시스템이 제공하는 서비스를 비교적 자세히 기술 할 수 있다는 것이다. 즉, WSDL 표준을 이해하는 그 누구라도 이 서비스를 이용할 수 있다는 것이다. 위의 두 과정을 통해 직원정보시스템은 누구나 쉽게 접근할 수 있고 이용 가능한 서비스가 될 수 있는 것이다. 또한 향후 제3의 시스템을 직원정보시스템과 연동시키더라도 추가 비용을 소요하지 않아도 더욱 많은 이용 가치를 가지므로 회사입장에서는 많은 비용절감 효과를 볼 수 있다. 
그런데 여기서 한 가지 의문점을 제기 할 수 있다. 즉, '왜 Web Service 를 이용해야 하는가?'이다. 물론 J2EE, .Net, CORBA 같은 방법도 이용할 수 있지만 이 같은 기술을 이용하면 또 다른 문제점을 야기 할 수 있기 때문이다. 예를 들어 모든 인터페이스를 Java 인터페이스를 통해 정의하고, RMI(Remote Method Invocation)로 연동 부분을 개발 했다고 가정하면 제3의 시스템이 직원 정보시스템과 연동하고자 해도 이 시스템은 .Net으로만 개발되어 Java와는 통신이 어렵다. 따라서 이 문제를 해결하기 위해서 추가 비용과 개발이 필요하다는 결론에 이른다. 결국 SOA에서의 Web Service 사용은 서비스 이용에 따른 연동문제와 비용을 최소화 하고자 하는 취지에 가장 현실적인 답이 되는 것이다. 

5. 맺음말 – 기업에서의 SOA 

조직은 단순한 개인의 총합이 아니라 이미 유기체로서 작동하는 하나의 실체와 같다. 따라서 환경 변화에 능동적으로 적응하고 대처하기 위해서는 기업도 개인과 마찬가지로 지속적인 대응 및 업그레이드 시스템 구축이 필요하다. 이처럼 SOA는 적정 시점에, 적정 인력에게, 적정한 콘텐츠를 제공함으로써, 주어진 상황에서 최선의 의사결정을 할 수 있고 경쟁자보다 빨리 비즈니스 기회를 발굴하며 혁신적인 아이디어를 촉진할 수 있도록 만들어주는 일련의 프로세스 및 행동 방식으로 정의할 수 있다. 
SOA의 도입은 그 자체가 목적이 아니라 기업의 비즈니스 목표를 달성하기 위한 수단이라는 점을 분명히 인지하여야 한다. 기업은 무작정 SOA를 도입하기보다는 산업별 기업의 핵심 업무에 맞춘 도입 기대효과 예측 및 목적을 분명히 해야 한다. 예컨대, 금융계의 차세대 시스템의 핵심은 시스템 다운 타임이 없이 물 흐르듯 이어지는 금융 서비스를 고객에게 제공하는 것이 가장 큰 목적이 될 것이다. 제조업의 경우 제품 수명 주기관리(PLM) 솔루션과의 연계를 통한 관리 업무 효율 극대화, 텔레커뮤니케이션 업계의 경우 경쟁사 보다 신규 서비스를 신속하게 제공하여 매출을 극대화하는 것이 SOA도입의 가장 큰 효과이자 목적이 될 것이다. 
SOA 도입 시 단기적인 효과를 기대하기보다는 장기적인 시각을 가지고 접근하여야 한다. 지금까지 대부분의 IT 인프라 프로젝트들은 내부의 유지비를 효과적으로 줄여서 TCO 감소를 통한 총생산성의 향상을 유도했다. 하지만 IT 자산의 재사용 및 서비스간 연결이 쉽지 않아 각 프로젝트마다 새로운 인프라 요소의 추가 및 통합을 필요로 하여 시간이 지날수록 비즈니스 민첩성과 IT 자산의 유연성을 떨어뜨렸다. 이에 반해 SOA 기반의 인프라는 내부의 비용을 줄여 단기간의 생산성을 높이기 보다, 장기적인 시각으로 기업이 새로운 비즈니스 기회를 포착하여 신규 서비스 프로젝트나 새로운 서비스의 창출 등의 새로운 비즈니스 요구가 있을 시 IT 자원의 재사용과 유연한 데이터 흐름을 보장하여 경쟁사보다 신속한 타임투마켓(Time to Market)을 가능하게 한다. 즉 내부보다는 외부에서 수익을 창출하는 형태이며, 시간이 지날수록 그 생산성은 향상된다.

기업은 SOA의 핵심이 기업 애플리케이션에 포함된 개별적인 기능들을 변화하는 비즈니스의 요구에 따라 신속하게 조립 및 재사용할 수 있고 상호운영이 가능한 표준기반 서비스로 구성하는 IT 전략이라는 점을 감안하여, 충분한 컨설팅 기간을 거쳐 각 산업별 기업의 특성에 맞춘 `맞춤형' SOA를 구현하는 지혜를 보여야 할 것이다. 
21세기 경영의 핵심은 `기업의 변화 능력제고'에 있다. GE의 잭 웰치가 지적했듯이 변화에 대한 신속한 적응능력, 이것이 향후 급변하는 환경 속에서도 변하지 않는 기업의 핵심역량이다. 이제는 급변하는 시장환경에서 기업의 IT환경이 얼마나 비즈니스의 요구에 민첩하게 대응할 수 있는 최적의 SOA의 도입방안에 대하여 고민하여야 할 것이다. 

[출처] SOA|작성자 자라미



출처 - http://blog.naver.com/clickspace/120026142040



'Web > Common' 카테고리의 다른 글

BEA 시스템즈  (0) 2012.01.18
RIA(Rich Internet Applications)  (0) 2012.01.17
웹 서비스(Web Service)  (0) 2012.01.16
Sun ONE  (0) 2012.01.13
HTTP1.0과 1.1 차이점  (0) 2011.12.29
Posted by linuxism
,


웹 서비스(Web Service)는 네트워크 상에서 서로 다른 종류의 컴퓨터
간에 상호작용을 하기 위한
 소프트웨어 시스템이다.
웹 서비스는
서비스 지향적 분산 컴퓨팅 기술의 일종이다.
웹 서비스 프로토콜 스택은
 SOAP, WSDL, UDDI 등으로 이루어진다.

모든 메시징에
 XML이 사용되어 상호운용성이 높다.

기존의 분산 컴퓨팅 기술들인 CORBA, DCOM, RMI과 비교했을 때 주된 차이점은 다음과 같다.

  • 느슨한 연결(loose coupling)
  • 이진 부호화(바이너리 인코딩)가 아닌 XML 유니코드 부호화를 사용한다.
  • 객체 지향(object-oriented)이 아닌 메시지 지향(message-oriented)이다.
     

웹 서비스라는 명칭을 가지고 있지만 월드 와이드 웹과 혼동하여서는 안
된다.
 월드 와이드 웹은 사람과 컴퓨터 간의 상호작용을 위한 시스템인 데 반해, 웹 서비스는 컴퓨터와 컴퓨터 간의 상호작용을 위한 시스템이다.

분산 컴퓨팅을 실현할 수 있는 신기술로 등장하여 큰 기대감에
매스미디어에서 여러 번 다루어져서 인지도는 증가하였다.
하지만, 시장에서의 실효성 때문에 많이 보급되지 않았다.
아직 관련 기술의 표준화가 더디어 보급은 늦어지고 있다.
하지만 최근에
 서비스 지향 아키텍처(SOA)가 각광을 받으면서
그 기반 기술인 웹 서비스 또한 주목을 다시 받고 있다.

웹 2.0과 함께 SOAP을 이용하지 않는 REST 스타일 웹 서비스도
등장하여 많은 주목을 받고 있다. 웹 2.0의 한 분야로 웹 서비스를
이용하여 여러 웹 서비스를 조합하여 웹 애플리케이션이나 서비스를
구축하는 것을
 매시업이라고 부른다. 현재 이러한 분야는 새로운
사업으로까지 확장해 나가고 있다.
 

목차

  [숨기기

[편집]스펙

[편집]1세대

[편집]2세대

[편집]주요 스펙

[편집]보안 스펙

[편집]같이 보기


 

출처 - http://ko.wikipedia.org/wiki/%EC%9B%B9_%EC%84%9C%EB%B9%84%EC%8A%A4 






JAX-RS(Java™ API for RESTful Web Services)는 자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API이다.

SOAP기반의 SOA 연동은 자바 애플리케이션을 무겁게 한다는 비판과 함께, 최근 웹 애플리케이션의 경향인 AJAX기반으로 JSON이나 RSS와 같이 간결한 프로토콜을 사용한 연동이 보편화되면서 쉽게 구현할 수 있도록 Java EE에 JAX-RS 라는 사양이 포함되고 있다.

[편집]버전 역사

JAX-RS API 역사
JAX-RS version발표자바 플랫폼중요한 변화
JAX-RS 1.02008년 9월 예정Java EE 6JSR 311

[편집]구현 플랫폼

[편집]바깥고리








Anyframe Core 3.2.0은 Apache CXF 2.1.3 버전을 이용하여 웹 서비스 기능을 제공하고 있다. 

웹 서비스란 인터넷 네트워크를 통하여 다수의 기존 어플리케이션 시스템을 표준화된 기술로서 상호 작용 시키고, 이러한 표준 기술을 이용하여 모든 비즈니스를 가능하게 한다. 

웹 서비스는 언제, 어디에서나 원하는 정보나 서비스를 제공해 주는 역할을 하며 기존의 다른 소프트웨어처럼 완벽한 정의를 지정하여 구성하는 것이 아니라 서로 주고받는 데이터 표준에 대한 정의를 규정함으로써 매우 유연하고 이질적인 운영시스템, 이질적인 프로그램 언어 간의 커뮤니케이션 차이를 극복해 주는 연결고리 역할을 수행한다. 
Web Service Architecture Working Group. W3C (Web Services Glossary, Web Services Architecture 등 자료 조회 가능)에서는 Web Services를 다음과 같이 정의하고 있다. 
"A Web service is a software system designed to support interoperable machine-to-machine interaction 
over a network. It has an interface described in a machine-processable format (specifically WSDL). 
Other systems interact with the Web service in a manner prescribed by its description 
using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction 
with other Web-related standards."
위의 영문 정의를 해석해보면, 다음과 같다. 
네트워크를 통해 상호 운용성있는 기계 대 기계 상호작용을 지원하기 위해 설계된 소프트웨어 시스템으로, WSDL이라는 형태로 정의된 인터페이스를 가지며, SOAP 메시지를 사용하여 타 시스템들은 웹 서비스와 상호 작용할 수 있다. 웹 관련 표준들과 협력하며 전형적으로 HTTP를 사용한 XML 직렬화를 통해 전송한다.

Web Services 개념

Architecture

기본적으로 웹 서비스(Web Services)는 3가지 역할(Service Provider, Service Broker, Service Consumer)로 구성된 아키텍처 모델에 따라 구현된 기술이다.

  • 웹 서비스의 3가지 역할
  • Role
    설명
    Service Provider특정 서비스 스펙을 구현한 서비스를 제공한다.
    Service Broker (Service Registry)서비스 등록 및 검색, 저장, 관리를 통해 Service Provider가 제공하는 서비스를 Service Consumer에게 연결한다.
    Service Consumer (Service Requester)Service Broker를 통해 특정 서비스를 찾고, Service Provider에게 해당 서비스를 요청하고 사용한다.

  • 웹 서비스 시나리오
  • 순서
    Role
    설명
    1
    서비스 제공자(Service Provider)자신의 비즈니스 정보 및 제공할 서비스 정보, 그리고 이를 이용할 수 있는 방법 등에 대한 정보를 WSDL 파일로 작성한다.
    2
    서비스 제공자(Service Provider)자신의 서비스 WSDL을 UDDI 레지스트리에 등록한다. 이때 등록되는 서비스는 UUID에 기반한 고유 ID를 부여받게 된다.
    3
    서비스 요청자(Service Consumer)UDDI 레지스트리에서 분류 및 식별 체계와 같은 여러 검색 조건을 통해 필요한 서비스를 검색하여 찾는다. 해당 서비스가 찾아지면, 그 서비스에 대한 WSDL 파일을 받게 된다.
    4
    서비스 요청자(Service Consumer)WSDL 정보를 이용해 Service Provider와 연결하여 서비스를 제공받게 된다. 이때 실행 결과는 SOAP을 이용한 XML 문서 형태로 받는다.
  • 웹 서비스의 3가지 기본 기술요소
  • 기술요소
    설명
    WSDL
    웹 서비스를 표현하고 기술하는 언어 (서비스 표현)
    SOAP
    웹 서비스에서 사용되는 보편적이며 확장성 있는 메시지 프로토콜 (데이터 통신 프로토콜)
    UDDI
    필요한 서비스를 찾을 수 있는 웹 서비스 레지스트리 (서비스 등록, 검색)

SOAP(Simple Object Access Protocol)

SOAP(Simple Object Access Protocol)은 HTTP, HTTPS, SMTP등을 사용하여 XML 기반의 SOAP 메시지를 컴퓨터 네트워크 상에서 교환하는 형태의 프로토콜로써 웹 서비스의 기본적인 메시지 전송 수단 이다. XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조, 전송(transport), 상호 중립성(interaction neutrality)의 개념을 도입하였다.
  • SOAP 메시지 구조
  • SOAP 메시지는 루트 요소로 Envelope를 가지며, SOAP Header와 Body를 하위 요소로 가지고 있다. SOAP의 메시지 구조는 XML을 근간으로 Header와 Body를 조합하는 디자인 패턴으로 설계되었고, Body(필수사항)에는 전송될 메시지의 내용을 기술한다. (Header는 선택사항) 
  • SOAP 특징
  • 장점
    설명
    1
    SOAP은 기본적으로 HTTP 기반 위에서 동작하기 때문에, HTTP와 같이 프록시와 방화벽에 구애받지 않고 쉽게 통신 가능하다.
    2
    SOAP은 표준 전송 프로토콜인 HTTP 이외의 다른 전송 프로토콜들을 사용할 수 있다.
    3
    플랫폼 및 프로그래밍 언어에 독립적이다.
    4
    간단하고 확장 가능하며, (멀티파트 MIME 구조를 사용하여) 첨부를 통합하는 SOAP XML 메시지를 지원한다.

    단점
    설명
    1
    XML 포맷은 태그 형태로 구성되기 때문에 CORBA와 같은 미들웨어 기술과 비교해서 상대적으로 느리다. 
    (최근 네트워크 속도의 비약적인 발전과 성능 최적화 기술의 발전으로 대부분 해결됨)

WSDL(Web Services Description Language)

WSDL(Web Services Description Language)이란, 웹 서비스로 제공되는 서비스에 대한 정보를 기술하기 위한 XML 기반의 마크업 언어이다. 
즉, 원하는 서비스가 어디(Where)에 존재하며, 웹서비스로 무엇(What)을 할 수 있고, 또 이를 실행하기 위해서는 어떻게(How) 해야 하는가를 XML 형식으로 기술하여 제공하는 웹 서비스 기술 언어이다.
  • WSDL 문서 구조
  • <definitions>를 루트로 하여 추상적 정의(types/message/portType)와 구체적 정의(binding/service)로 나뉜다. 추상적 정의와 구체적 정의를 분리하여 기술함으로써, 서로 다른 서비스 구현시 서비스의 추상적 정의를 재사용할 수 있다.

  • WSDL 문서 구조 상세
  • WSDL의 주요 기술 내용에는 웹 서비스의 이름과 URI 정보, SOAP 메시지의 인코딩 방법, SOAP 메시지 전송을 위한 프로토콜 정보, 웹 서비스를 이용하는데 필요한 인터페이스 정보가 있다. WSDL의 구성 요소를 상세히 살펴보면 아래와 같다.


    WSDL 상세 구성 요소에 대한 설명은 다음과 같다.
    요소
    설명
    <service>Endpoint(실제 웹 서비스로 구현된 어플리케이션)의 물리적 위치를 정의하고 각 바인딩에 대한 포트 주소를 기술한다.
    <port>binding 정보와 address location을 정의한다.(WSDL 2.0에서는 <endpoint>로 변경됨)
    <binding>portType과 네트워크 프로토콜 매핑 정보를 정의한다. 즉, 어떤 통신 프로토콜을 통해서 통신을 할 것인지를 정의한다.
    <portType>인터페이스의 메소드들을 정의한다. Interface(WSDL 2.0에서 <interface>로 변경됨)
    <operation>서비스의 메소드에서 사용되는 요청(Request)/ 응답(Response) 메시지 정의
    <message>서비스가 사용하는 메시지를 정의한다. 메소드의 인자와 리턴 값을 선언한다. (WSDL 2.0에서는 <types>를 통해 XML 스키마 타입을 사용하여 기술)
    <types>문서에서 사용되고 있는 데이터 타입을 정의한다.

기술 표준

웹 서비스는 SOAP, WSDL, UDDI를 중심으로 한 기본 기술 표준을 제공하며 서비스의 품질을 높이기 위해 보안, 트랜잭션 처리, 신뢰성 있는 메시지 처리 등에 대한 다양한 확장 표준을 제공한다.
  • Security
  • 표준
    설명
    WS-Security무결성(Integrity)과 기밀성(Confidentiality), 인증(Authentication) 등을 강화하기 위한 SOAP 메시지 확장 메커니즘 규정. 크게는 WS-Policy, WS-Trust, WS-SecureConversation, WS-Federation, WS-Authorization을 포함한다.
    WS-Trust상호간에 웹 서비스가 안전하게 작동할 수 있도록 하기 위한 신용 관계의 유지 및 해지를 설정하는 신뢰 모델에 대한 표준이다.
    WS-SecureConversation메시지 교환시 보안이 어떤 방식으로 관리되는지를 명시한 security context에 대한 관리 표준이다.
  • Transaction
  • 표준
    설명
    WS-Coordination분산되어 있는 다양한 웹 서비스들이 트랜잭션에 참여할 수 있도록 액티비티를 생성 및 관리, 조정, 완료하는 메커니즘에 대한 표준 (Coordination Framework)이다.
    WS-TransactionAtomic 또는 Business 트랜잭션 프로토콜에 대한 표준 (Coordination Protocols)이다.
  • Reliable Messaging
  • 표준
    설명
    WS-ReliableMessaging목적지까지 메시지가 확실하게 도착하는 메시징 신뢰도를 보장하기 위해, 분산된 웹 서비스들 간에 주고 받는 ACK (acknowledge) 메시지 등을 정의하는 표준이다.
    WS-Addressing웹 서비스 간 메시지를 전달하는 메커니즘을 제공하는 표준이다.

구현 기술

Java로 Web Services를 작성하는 방법을 제공하는 자바 API로는 JAX-RPC와 JAX-WS가 있으며, 이 외에 여러 가지 구현 기술들이 요구된다.

JAX-RPC vs. JAX-WS

JAX-WS 2.0이 JAX-RPC 1.1의 차후 버전으로 Web Services 구현 시 사용되는 표준 자바 API이다. 
* JAX-WS : Java API for XML-Based Web Services 
* JAX-RPC : Java API for XML-Based RPC(Remote Procedure call) 
  • JAX-RPC와 JAX-WS 비교표
  • JAX-RPC 1.1의 다음 버전인 JAX-RPC 2.0이 나오면서, RPC라는 용어 대신 메시지 지향 웹 서비스인 WS로 대체되어 JAX-WS 2.0으로 불리게 되었다.
    JAX-RPC 1.1
    JAX-WS 2.0
    Java 환경JDK 1.4/ J2EE 1.4 환경에서 사용되는 Web Services APIJava EE 5/Java SE 6 환경(탑재)에서 사용되는 Web Services API
    SOAPSOAP 1.1SOAP 1.1, SOAP 1.2
    XML/HTTPHTTP 바인딩 지원 안함 (SOAP 바인딩만 지원)HTTP 바인딩 지원 (SOAP없이 HTTP를 통해 XML 전송)
    WS-I Basic ProfileWS-I Basic Profile 1.0WS-I Basic Profile 1.1
    데이터 매핑 모델고유의 데이터 매핑 모델이 있음 (스키마 유형의 90% 커버) 커버되지 않는 것들은 javax.xml.soap.SOAPElement로 매핑JAXB (모든 XML 스키마를 100% 매핑함)
    인터페이스 매핑 모델지원 안함Java 5.0 기능 사용 및 비동기식 기능 도입
    동적 프로그래밍 모델지원 안함메시지 지향 및 동적 비동기식 기능 도입
    MTOM지원 안함JAXB를 통한 새로운 Attachment 스펙인 MTOM에 대한 지원을 추가
    핸들러 모델SAAJ 1.2에 기반SAAJ 1.3에 기반
  • JAX-RPC 1.1을 사용해야 하는 경우
  • Case
    설명
    1JDK 1.4를 계속 사용해야 하는 경우
    2SOAP 인코딩 메시지를 보내거나 RPC/encoded 스타일의 WSDL을 보내야 하는 경우
  • JAX-WS 2.0을 사용하는 경우
  • Layered Programming Model을 제공한다. 상위계층은 Annotation을 활용한 쉬운 개발이 가능하게 하며, 하위계층의 경우 API 기반의 섬세한 조정이 가능하다.
    Case
    설명
    1새로운 메시지 지향 API를 사용해야 할 경우
    2MTOM을 사용하여 첨부 데이터를 보내야 하는 경우
    3JAXB를 통해 XML 스키마를 더욱 잘 지원하기 위한 경우
    4웹 서비스 클라이언트에 비동기식 프로그래밍 모델을 사용하고 싶을 경우
    5SOAP 1.2 메시지를 처리할 수 있는 클라이언트와 서비스가 있어야 하는 경우
    6웹 서비스에서 SOAP을 배제하고 XML/HTTP 바인딩만 사용하고 싶을 경우
  • JAX-RPC 단점
  • 구버전인 JAX-RPC에는 다음과 같이 몇가지 단점이 존재한다.
    단점
    설명
    1제한된 XML Schema를 지원한다.
    2Java와 WSDL간의 매핑 지원이 부족하다.
    3어플리케이션 이식성이 낮다.
    4런타임(Runtime) 크기가 비대하다.
    5개발 방법이 매우 복잡하다.

XML Schema

XML 문서의 구조와 컨텐츠를 정의하는 파일을 가리키는 일반적인 용어로 DTD와 마찬가지로 문서의 구조를 정의하며, 문법, 어휘, 구조, 데이터 타입 등을 규정하는 모든 규칙들을 제공한다. 
* XML Schema Definition (XSD) : XML Schema를 작성하기 위한 XML Schema language
  • XML Schema vs. DTD
  • DTD의 문제점을 해결하기 위한 목적으로 XML Schema가 나왔다. XML Schema는 DTD보다 더 표현력이 풍부하고, 정확한 자료 구조를 제공하는 새로운 구조 정의 언어로, Web Services는 XML Schema를 사용한다.
    XML Schema
    DTD
    XML 문법으로 작성XML 문법 아님 (EBNF 문법 사용)
    namespace 지원namespace 지원 안함
    다양한 데이터 타입 지원, 데이터 타입 확장 가능제한적인 데이터 타입
    상속과 같은 객체 지향 개념 지원객체 지향 개념 없음
    개방적 컨텐츠 모델폐쇄적 컨텐츠 모델
  • XML Schema element 정의
  • <element  name="element 명"  type="데이터형" ref=""  form=""  
        minOccurs="" maxOccurs=""  default=""  fixed="" >
    각 속성 값에 대한 설명은 다음과 같다.
    속성
    설명
    nameelement의 명칭
    typeelement의 데이터 타입
    ref전역 element 선언을 참조하기 위해 사용
    minOccurselement의 최소 반복 횟수, default 값은 1
    maxOccurselement의 최대 반복 횟수, default 값은 1
    defaultelement의 값이 정의되지 않았을 때 할당되는 기본값
    fixedelement에 들어갈 고정값
  • XML Schema attribute 정의
  • <attribute name="" type="" ref="" form="" use="" default="" fixed="">
    각 속성 값에 대한 설명은 다음과 같다.
    속성
    설명
    nameattribute의 명칭
    typeattribute의 데이터 타입
    ref전역 attribute 선언을 참조하기 위해 사용
    form한정된 이름인지의 여부 (qualified/unqualified)
    use사용 조건 (optional/prohibited/required)
    defaultattribute의 값이 정의되지 않았을 때 할당되는 기본값
    fixedattribute에 들어갈 고정값

기타 구현 기술

  • JAXB(Java Architecture for XML Binding)
  • XML 스키마를 자바 클래스로 바인딩하기 위한 자바 API로 크게 2가지 기능을 제공한다. 그 기능은 바로 자바 객체를 XML로 마샬링(marshalling)하는 기능과 반대로 XML에서 자바 객체로 언마샬링(unmarshalling)하는 기능이다. 
    더욱 자세한 내용은 여기 를 참고하도록 한다.
  • MTOM(Message Transmission Optimization Mechanism)
  • SOAP 메시지와 함께 큰 바이너리 첨부 파일을 원시 바이트로 전송하여 메시지 크기를 줄이는 메커니즘으로 바이너리 데이터를 포함한 XML에 대한 메시지 전송을 최적화시킨다. 더욱 자세한 내용은 여기 를 참고하도록 한다.
  • SAAJ(SOAP with Attachments API for Java)
  • SOAP 메시지를 생성하고 파일 첨부하고 전송하는 방법을 제공하는 자바 API이다. 더욱 자세한 내용은 여기 를 참고하도록 한다.

Web Services Framework

많이 사용되는 웹 서비스 오픈 소스 프레임워크로는 Apache CXF, Apache Axis/Axis2, Spring Web Services 등이 존재하며 여러 프레임워크 중 사용하고자 하는 목적에 적합한 웹 서비스 프레임워크를 선정한다. 
Anyframe에서는 Apache CXF를 선정하였다.

Web Services Framework 종류

Web Service 구현 스타일은 크게 Contract-Last와 Contract-First가 있다. Contract-Last 스타일은 Java 소스 코드를 먼저 작성한 후에 WSDL을 자동생성하여 구현하는 방식(Code-First라고 불리기도 함)이고, Contract-First 스타일은 WSDL 파일을 먼저 작성한 후 Java 소스 코드를 작성하는 방식이다. 

Web Services Open Source Framework에는 여러 가지가 있는데 이 중 현재 가장 많이 쓰이고 있는 4가지에 대해서 소개한다.
  • Apache CXF
  • Contract-First 스타일과 Contract-Last 스타일 모두를 지원한다. 자세한 내용은 http://cxf.apache.org/ 를 참조한다.
  • Apache Axis
  • Axis2의 구버전으로 웹 서비스 개발 방식이 복잡하다. 자세한 내용은 http://ws.apache.org/axis/ 를 참조한다.
  • Apache Axis2
  • Apache Axis의 업그레이드 버전으로 구조 등이 새롭게 변경되었다. 기능적인 면에서 Apache CXF와 유사하다. 자세한 내용은 http://ws.apache.org/axis2/ 를 참조한다.
  • Spring Web Services
  • Contract-First 스타일의 웹 서비스 개발 방식만 지원한다. 자세한 내용은 http://static.springframework.org/spring-ws/site/ 를 참조한다.

Apache CXF 특징

여러가지 Web Services Framework 중 Apache CXF를 선정하게 된 이유는 다음과 같은 특징 때문이다.
특징
설명
JAX-WS 지원CXF에서는 JAX-WS API를 구현하고 있어서 웹 서비스 구현을 쉽게 하고 있다.
Spring IntegrationCXF는 Spring 2.X 이상을 지원하며 endpoint 설정이나 client injection 등 Spring과의 통합을 용이하게 한다.
Aegis DatabindingCXF는 JAXB, Aegis Databinding을 모두 지원한다. JAXB의 경우와 같이 Annotation 방식으로 사용할 필요가 없으며, List/Map/Date 등의 다양한 데이터 타입 사용이 매우 쉽다.
RESTful servicesAnnotation 설정 방식으로 RESTful 서비스 구현을 용이하게 한다.
WS-* SupportCXF는 다양한 웹 서비스 스펙(WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security)을 지원한다.
Apache Licensed아파치 라이센스 사용으로 활용에 자유롭다.
Celtix와 X-Fire 프로젝트의 합작품기능 보강 및 사용 편의성 면에서 새롭게 재구성된 부분이 많이 존재한다.
웹 서비스 표준 지원SOAP, the Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security
Frontend 모델 제공JAX-WS Frontend와 Simple Frontend를 제공한다.
사용 편의성간단한 API 사용으로 서비스 구현 가능, Tool(ANT Task 등)을 제공한다.
바이너리와 기존 프로토콜 지원XML/비-XML 타입 바인딩(JSON, CORBA)을 제공, 여러 전송 프로토콜을 지원할 수 있는 조립식 아키텍처를 제공한다.
비동기 방식 호출 가능비동기 방식의 호출이 가능(Asynchronous Invocation Model 제공)하다.
JDK 1.5 이상 지원Annotation 기능 등 여러 가지 이유 때문에 JDK 1.5 이상만 지원한다.

Tools

Apache CXF에서 여러가지 Tool을 제공함으로써 웹 서비스 구현 시 개발 편의성을 높여주고 있다. 아래에 언급된 Tool 이외에 Eclipse Plugin과 Maven Plugin 형태의 Tool도 제공되고 있다. Apache CXF를 다운로드 페이지 에서 Binary distribution을 내려 받고 압축을 풀면 루트 폴더 하위의 bin 폴더 내에 Tool이 존재한다. 
자세한 사항은 이곳 을 참고하도록 한다.
tool
설명
Ant Taskswsdl2java, java2ws를 위한 ant task를 제공한다.
Java to WSSEI 클래스와 관련 타입 클래스들로부터 WSDL document, wrapper bean 클래스, server/client side 소스 코드들을 생성한다.(CXF 2.1)
Java to WSDLSEI 클래스와 관련 타입 클래스들로부터 WSDL document를 생성한다.(CXF 2.0.x)
Maven Integration and Plugin관련 라이브러리를 배포해주는 Maven Repository들과 함께 빌드 툴로써 Maven을 사용할 수 있도록 Maven Plugin을 제공한다.
XSD to WSDLXSD(Schema 파일)를 통해서 WSDL document를 생성한다.
WSDL to JavaWSDL document로부터 서비스 구현에 필요한 annotation으로 작성된 Java 소스 코드와 어플리케이션을 빌드할 수 있는 ANT 기반 XML 파일을 생성한다.
WSDL to ServiceWSDL document로부터 HTTP 혹은 JMS 서비스 정의를 갖는 새로운 WSDL document를 생성한다.
WSDL to SOAPWSDL document로부터 SOAP binding 정보를 갖는 새로운 WSDL document를 생성한다.
WSDL to XMLWSDL document로부터 XML binding 정보를 갖는 새로운 WSDL document를 생성한다.
WSDLValidatorWSDL document나 WSDL URL이 well-formed document이고 Schema에 맞게 작성된 것인지 확인해주는 일을 한다.

Resources

  • 다운로드
  • 샘플 테스트 코드를 포함하고 있는 anyframe-remotingtest-src.zip 파일을 다운받은 후, 테스트 환경 설정 을 참조하여 위에서 제시한 예제 코드를 실행해 볼 수 있다. anyframe-remotingtest-src 프로젝트 내에서는 모든 테스트 케이스들이 하나의 프로젝트 내에 포함되어 있다. Web Services 관련 테스트 케이스는 src/test/java 소스 폴더의 anyframe.core.remoting.webservices 패키지 하위에 위치하고 있다. 각각의 테스트 케이스 클래스를 JUnit Test Framework을 이용하여 수행시키도록 한다.
    Name
    Download
    anyframe-remotingtest-src.zip
    Download

  • Test Case 구성
    • Web Services에 대한 Test Case는 대부분 RemotingTestCase 를 상속받아 구성하였다.
    • Test Case 내에서 서버 구동과 클라이언트 호출 부분이 함께 작성 되어 있다. Test Case 실행 시 먼저 setUp() 메소드가 호출되어 이 메소드 내에서 서버를 구동시킨다. 이후 testXXX() 메소드 내에서 클라이언트를 생성하여 서버 사이드의 서비스를 호출하여 테스트 케이스를 실행시킨다. 테스트 메소드 수행이 완료되면 상위 클래스인 RemotingTestCase의 onTearDown() 메소드를 통해 서버 실행을 중지시키는 역할을 수행한다.
    • 서버는 테스트 케이스별로 서로 다른 서버를 사용하게 된다. JAX-WS Frontend를 사용 시에는 JaxWsServer 를 이용하여 서버를 구동시키며, Simple Frontend를 사용 시에는SimpleServer 를 이용하여 서버를 구동시킨다. 그외 JAX-RS를 이용하여 RESTful Web Services를 구현 시에는 JaxRsServer 를 사용하고 Spring과 연계하여 서버 및 클라이언트를 구현하는 테스트 케이스에서는 JettyServer 를 이용하고 있다.
    • 특히 Spring 클라이언트를 통해 테스트하는 경우 RemotingTestCase 가 아닌 RemotingSpringTestCase 를 상속받아 테스트 케이스를 작성하였다.
  • Test Case 실행
    • 샘플 테스트 코드를 포함하고 있는 anyframe-remotingtest-src.zip 파일을 다운받아서 이클립스 프로젝트 형태로 테스트 케이스를 실행하고자 한다면, 테스트 환경 설정 을 참조하여 실행해 볼 수 있다.
    • 만약 Subversion에서 anyframe-remotingtest-src 프로젝트의 소스코드를 내려받아서 Maven을 이용하여 빌드를 수행하고자 한다면, Maven 2.0.9 이상의 버전을 설치하여 수행하도록 한다. Maven 2.0.4 이하의 버전을 사용하는 경우 테스트케이스 수행 시 에러가 발생할 수 있다.
  • 참고자료









웹서비스 참조 문서



'Web > Common' 카테고리의 다른 글

RIA(Rich Internet Applications)  (0) 2012.01.17
SOA(Service Oriented Architecture : 서비스 지향 아키텍처)  (0) 2012.01.16
Sun ONE  (0) 2012.01.13
HTTP1.0과 1.1 차이점  (0) 2011.12.29
HTTP  (0) 2011.12.29
Posted by linuxism
,

IT시장 '빅데이터'가 승부 가른다

[신년기획]2012년 엔터프라이즈 솔루션 시장 전망

임민철 기자 imc@zdnet.co.kr 2012.01.04 / AM 08:41 빅데이터분석모바일보안2012년신년기획기업 애플리케이션


글로벌 IT트렌드가 지난해 이어 글로벌 경쟁력을 화두로 짚는 가운데 우리나라가 육성에 힘을 쏟겠다던 소프트웨어(SW) 분야 전망도 관심거리다. IT이슈가 기술과 산업간 '융합'에 초점을 맞추려는 움직임을 보이면서 SW를 별도 주제로 한 분석 사례는 띄지 않더라도 주요 조사업체와 분석기관들이 제시한 키워드가 SW를 뼈대로 삼고 있음을 부정하기 어렵다. 

 

이에따라 지디넷코리아는 지난해 몇몇 조직이 IT트렌드를 분석해 제시한 올해 주목할 SW분야 키워드를 살폈다. SW와 관련성이 큰 ▲빅데이터와 분석 ▲기업 애플리케이션 ▲기업 입장의 모바일 대응 전략을 중심으로 요약했다. 

 

해당 내용은 조사업체 가트너(2012년 주목할 10대 전략기술), 컨설팅업체 딜로이트(연방정부가 주목할 10대 기술동향), 클라우드 스토리지 서버 업체 EMC(2012년 IT 10대 예측), 시스템통합(SI) 업체 삼성SDS(2012년 IT 8대 메가트렌드), 정부산하기관 정보통신산업진흥원(NIPA, 2012년 IT산업 10대 이슈)과 한국정보화진흥원(NIA, 2012년 IT 트렌드 전망 및 정책방향)이 선정한 IT 기술 전망 가운데 SW 관련 내용을 분석한 것이다. 

 

■빅데이터 

 

가트너, 딜로이트, EMC, NIPA, NIA, 삼성SDS 모두 새해 IT기술 전망으로 빅데이터 또는 분석을 언급했다. 가트너는 '차세대 분석기술'과 '빅데이터'를, 딜로이트는 '실분석(Real Analytics)' 개념을, EMC는 '빅데이터 전문가'와 '빅데이터 분석학'을, NIPA는 '빅데이터'를, 삼성SDS는 '소셜 분석'을 키워드로 제시했다. 

 

▲ 유럽 입자 물리학 연구소(CERN)가 스위스 제네바 부근에 세운 대형강입자충돌기(LHC) 내부 설비 일부. 입자 충돌실험 직후 발생하는 막대한 데이터를 저장하기 위해 거대한 컴퓨팅 성능과 데이터스토리지가 필요하다. 과학실험으로 발생되는 '빅데이터' 사례.

빅데이터는 PC나 워크스테이션 기반 업무 환경이 유닉스 등 서버와 연결된 기존 인터넷에 모바일기기와 통신기능을 갖춘 사물이 연결되면서 발생하는 데이터 폭발 현상의 산물을 가리킨다. 가트너는 데이터 크기와 그 복잡한 형식, 전송속도와 분석기술이 기존 관리 능력을 넘어서고 있어 변화에 대응할 기술을 확보, 개발해야 한다고 예고했다. 

 

하드웨어 측면에서 빅데이터를 안정적으로 처리하는 네트워크 기술과 효율적으로 보관하는 스토리지 기술도 관건이지만, 소프트웨어 측면에서는 데이터 자체를 경제적 자산으로 활용해야 한다는 '빅데이터 전략'이 화두로 자리잡을 전망이다. 이같은 빅데이터 전략의 한 축을 맡는 역할에 데이터관리시스템 환경의 분산처리, 비즈니스 애널리틱스, 소셜 미디어 분석 기술 등이 제시되는 추세다. 

 

빅데이터를 빠르고 안전하게 처리하기 위해 평범한 서버용 하드웨어를 이용해 분산프로그래밍 모델로 쓰는 기술 '맵리듀스'가 데이터관리시스템 영역에서 주목받고 있다. 더불어 데이터를 분석하기 위해 단일 데이터웨어하우스(DW)를 구성하는 방식 대신 필요에 따라 여러 데이터 소스에서 정보를 모아 쓰는 논리적 DW가 자리잡을 전망이다. 

 

■분석 

 

더불어 향후 분석기술은 의사결정과 협업을 지원하는 부문으로 집중 발전이 예상된다. 

 

유연한 의사결정을 위해 단순 정보가 아닌 시뮬레이션, 예측, 최적화 등이 필요할 것으로 보인다. 더 많은 데이터를 관리하고 더 많은 의사결정이 필요한 조직들 입장에서 전반적인 확실성이 감소 추세며, '실분석'을 통해 조직이 목표한 결과를 이룰 수 있도록 지원할 분석 기술과 리더가 필요하다고 딜로이트는 지적했다. 

 

▲ 예측분석, 고급분석, 비즈니스분석은 빠른 시장 대응과 경제적 실익을 위한 의사결정도구로 주목받고 있다. 텍스트, 이미지, 영상, 음성같은 콘텐츠와 산업장비, 생산설비 센서 등이 수집하는 정보 등 구조화되지 않은 데이터를 분석 대상으로 한다.

EMC는 빅데이터를 분석하는 '데이터과학'이 기업 경쟁력을 높이거나 과학 연구를 돕고 공공정책을 세우는 데 필요한 도구라는 인식을 키워가는 추세라고 분석했다. 이에 데이터과학자라 불리는 분석전문가 수요가 늘 것으로 내다보고 있다. 

 

여기에 다른 조직의 전망과 마찬가지로 분석기술을 통해 정보에 기반한 가치창출 시대가 열린다는 시각도 포함돼 있다. 국가정보화전략위원회에 따르면 공공부문에 빅데이터를 활용할 경우 국내 10조7천억원 이상의 경제효과가 예상된다. NIA는 빅데이터가 "데이터의 사회 경제적 활용 시대"를 열 것이며 "정부가 정보의 창조적 활용을 체계적으로 준비"해야 함을 지적했다. 

 

■기업 애플리케이션과 IT 비용 

 

딜로이트는 전사적 자원 관리(ERP)에 대한 부정적인 시각이 있으나 계속 발전을 예상했다. 이미 클라우드 컴퓨팅이 대두되고 기업 모바일 환경을 고려하는 사용자들이 들어가면서 엔터프라이즈 애플리케이션 사용 방식이 급변을 예고한 상황이지만 ERP는 계속될 것이라고 딜로이트는 전망했다. 오라클과 SAP같은 엔터프라이즈 애플리케이션 업체들이 계속 ERP역할을 강화시키는 전략을 구사해 나가면서 정보 분석, 모빌리티, 소셜 등을 보완하는 플랫폼 개발에 나설 것이란 관측이다. 

 

▲ 비즈니스 애플리케이션들이 전문가 환경을 벗어나 현업 사용자들을 위한 용도로 확장된다. 클라이언트 역할을 데스크톱뿐아니라 모바일 단말기까지 맡게 되면서 인프라 복잡성과 보안 이슈가 늘고 이에 따른 비용 증가에 대응할 IT관리 시나리오가 요구된다.

또 클라우드 안에서 모든 것이 '서비스' 형태로 발전하고, 기업 안팎을 넘나드는 소셜 컴퓨팅과 '아웃사이드 인 아키텍처' 투자로 IT 부서 역할이 달라지는 추세다. 기존 기업들이 변화에 대응하는 방식은 중앙 IT담당부서가 많은 경비를 들여 의사결정을 위한 투명성을 제공하는 것이었다면, 향후 연단위가 아닌 수주, 수개월 이내 결과를 제시할 수 있는 '올모스트-엔터프라이즈 애플리케이션' 모델이 더 많이 요구될 것으로 보인다. 

 

이를 위해 애플리케이션을 개발하는 조직은 모듈식 개발, 빠른 도입, 비용절감을 실현하기 위해 기존 관리, 조달 프로세스 문제를 해결할 필요성이 높아갈 것이다. EMC는 클라우드로 구현된 자동화로 인해 IT서비스 비용이 줄고 이에 따라 더 많이 기술을 소비하는 경향이 나타날 것이라고 예견했다. 

 

NIA는 올해 나타난 IT트렌드 가운데 모바일오피스를 초기단계에 머무른 것으로 진단하고 향후 기업IT 환경에 발전, 활성화 노력이 요구된다고 지적했다. 스마트폰 이용이 늘자 앞다퉈 시스템을 구축한 기업들이 실용성, 활용도 측면에 미흡함을 드러내 향후 앱 개발과 활용을 살려야 한다는 분석이다. 

 

■기업 입장의 모바일 대응 전략 

 

가트너는 오는 2014년까지 앱스토어에서 애플리케이션 다운로드가 700억건을 넘어설 것이라고 전망했다. 애플리케이션 시장이 성장하면서 기업이 제공하던 서비스를 사용자가 받아들이기만 하는게 아니라 적극적으로 요구하고 개선할 수 있는 환경을 만들어 갈 것이라고 덧붙였다. 애플리케이션 장터는 그 과정에 서비스 제공자와 사용자를 이어주는 중개역을 한다. 기업들이 이런 환경변화에 준비할 수 있는 능력을 확보해야 한다고 조언했다. 

 

▲ 기업들이 광범위한 모바일 우선 전략을 채택함으로써 시간과 공간에 제약을 둬온 기존 업무 시나리오에 변화를 가속한다. 모바일오피스를 고려시 대개 자체 모바일 앱 개발이 전제된다. (사진: 지멘스PLM소프트웨어 아이패드용 PLM애플리케이션 팀센터모빌리티 사용모습)

더불어 EMC는 기업용 앱 개발자들이 '모바일 우선'전략을 선택할 것으로 보인다고 내다봤다. 수준 높은 모바일 환경을 지원한다는 것이 단순히 사용자 인터페이스(UI)를 모바일에 맞춰 줄이거나 그 브라우저에서 돌아가게끔 만든다는 의미는 아니라고 지적했다. 새로 내놓은 모바일 앱의 기능을 기존 데스크톱용 앱에서도 구현되도록 '백포트'하는 방향으로 바꿔야 할 것이라고 조언했다. 

 

그리고 삼성SDS에 따르면 모바일 보안 필요성과 논란이 뜨거워질 전망이다. 모바일 기기가 PC 기능을 대신할 정도로 생활의 중심축으로 자리잡으면서 품게 된 기업과 개인 정보에 대한 보안 위협도 증가 추세다. 저장 데이터뿐 아니라 네트워크로 오가는 유통 데이터 역시 증가하는 보안 위협에 노출돼 있다. 

 

NIPA 역시 스마트폰과 소셜네트워크서비스(SNS)에 관련해 새로운 보안 위협이 발생중임을 지적했다. 동시에 새해부터 관련 대응이 본격화될 것으로 전망한다. 우선 지난해 9월 정보보호 투자를 촉진할 개인정보보호법이 발표되고 올해 공공기관을 중심으로 투자가 예상되는 상황이다. 

 

NIA는 개인정보와 관련된 사건사고가 많이 발생해 사회 전반에 큰 영향을 미친 가운데 보안이 모바일에 가장 취약한 부분으로 나타났기에 적극적인 해결방안을 마련할 필요가 있다고 지적했다. 앞서 지난달 NIA 한영미 책임연구원은 기관별 IT 기술전망 분석 보고서를 통해 방통위가 올해 사이버 보안위협 사전 예방용 예산으로 21억원을 증액했고 행안부도 올해 정보보호 관련 예산을 51% 늘렸다고 전한 바 있다. 

 

EMC도 지능형 타깃 지속 공격(APT) 기법이 알려지면서 보안 전문가들에게 보안에 대한 다른 접근방법을 요구하게 됐다며 올해 더 많은 IT 보안 부서들이 새로운 역할과 프로세스와 기술플랫폼 지원을 고민할 것이라고 내다봤다.
Posted by linuxism
,