메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

SOA 및 웹 서비스 입문

Tab navigation

개발자가 웹 서비스와 관련된 애플리케이션을 최대한 활용하도록 돕기 위해, developerWorks 웹 서비스 컨텐츠 영역에는 말 그대로 수백 가지 기사, 튜토리얼 및 팁이 들어 있지만, 새로운 주제를 탐구하려는 사용자에게는 이처럼 방대한 정보에 지레 질려버릴 수 있다. 이 페이지에서는 웹 서비스에 대해 배우고는 싶지만 어디서부터 시작해야 할지 막막한 독자들을 위한 개요를 설명한다. 이 페이지에서는 웹 서비스 기술의 모든 기초 사항을 적절한 컨텍스트로 제시하고, 보다 심화된 탐구와 조사를 위해 관련된 developerWorks 기사, 튜토리얼 및 팁, IBM 학습 서비스 교육, 웹캐스트, 워크샵 및 IBM 제품을 한데 묶어 설명한다.

웹 서비스는 애플리케이션이 플랫폼 및 프로그래밍 언어에 독립적인 방식으로 상호 간에 통신할 수 있게 해주는 기술이다. 웹 서비스는 표준화된 XML 메시징을 통해 네트워크에서 액세스할 수 있는 작업의 콜렉션을 설명하는 소프트웨어 인터페이스이다. 웹 서비스에서는 XML 언어를 기반으로 한 프로토콜을 사용하여 실행할 작업이나 다른 웹 서비스와 교환할 데이터를 설명한다. 이런 식으로 함께 상호 작용하는 웹 서비스의 그룹에서는 SOA(Service-Oriented Architecture)에서 특정 웹 서비스 애플리케이션을 정의한다.

소프트웨어 산업은 마침내 다중 운영 체제, 프로그래밍 언어 및 하드웨어 플랫폼에서 소프트웨어 애플리케이션을 통합하는 문제를 어느 한 특정 소유 환경에서 해결할 수는 없다는 점이 기정사실이 된 시대를 맞이하고 있다. 전통적으로, 이 문제는 원격 네트워크를 호출하는 한 애플리케이션이 애플리케이션에서 이루어지는 함수 호출과 요청하는 매개변수에 의해 원격 네트워크에 강하게 구속되는 긴밀한 결합에 관한 문제였다. 웹 서비스 이전에 등장한 대부분의 시스템에서는 변화하는 환경이나 요구에 대한 유연성이나 적응 능력이 거의 없는 고정 인터페이스가 이런 문제에 해당한다.

웹 서비스에서는 시스템 간의 교환을 위해 진정으로 플랫폼에 독립적인 방식으로 모든 데이터를 설명할 수 있는 XML을 사용하므로, 느슨하게 결합된 애플리케이션으로 나아갈 수 있다. 더욱이, 웹 서비스는 요청 시 동적으로 데이터 유형을 재평가, 수정 또는 처리할 수 있는 더 추상적인 레벨에서 작동할 수 있다. 따라서 기술적 레벨에서는 웹 서비스가 데이터를 훨씬 더 쉽게 처리하고 소프트웨어가 더 자유롭게 통신하도록 할 수 있다.

더 높은 개념적 레벨에서는 각각의 웹 서비스가 특정한 기능적 작업을 처리하는 작업 단위로 볼 수도 있다. 이보다 한 단계 위에서는, 이런 작업을 비즈니스 지향 작업으로 결합하여 특정 비즈니스 운영과 관련된 작업을 처리할 수 있고, 이는 곧 일반 직원들도 웹 서비스 애플리케이션의 워크플로우에서 함께 비즈니스 문제를 다룰 수 있는 애플리케이션에 대해 생각할 수 있게 해준다. 따라서 기술 인력이 웹 서비스를 디자인하고 빌드하면, 비즈니스 프로세스 아키텍트가 이들을 집계하여 비즈니스 레벨 문제를 해결할 수 있다. 자동차 엔진과의 유사성을 빌려 말하자면, 비즈니스 프로세스 아키텍트는 각각의 엔진 내부에 있는 수많은 부품에 주목하는 것이 아니라, 자동차 프레임, 차체, 변속기 및 기타 시스템과 전체 자동차 엔진을 함께 종합적으로 판단한 것처럼 생각할 수 있다. 더 나아가, 동적 플랫폼은 엔진이 다른 자동차 제조업체에서 공급하는 변속기나 부품과 함께 작동할 수 있음을 의미한다.

이 마지막 설명에서 수면에 떠오르는 사실은, 웹 서비스가 비즈니스 조직의 구성원과 기술 조직의 구성원들 사이의 간극을 잇는 데 도움이 되고 있다는 점이다. 웹 서비스는 비즈니스 조직의 구성원들이 기술적 업무를 더 쉽게 이해할 수 있게 해준다. 그들은 비즈니스와 관련하여 발생한 이벤트와 활동을 올바로 설명할 수 있고, 기술 조직의 구성원들은 이런 설명을 알맞은 서비스와 연관시킬 수 있다.

보편적으로 정의된 인터페이스와 잘 디자인된 작업을 이용하면 이런 작업을 더 쉽게 재사용할 수도 있게 되고, 따라서 이런 작업이 대표하는 애플리케이션도 더 쉽게 재사용할 수 있다. 애플리케이션 소프트웨어의 재사용성으로 동일한 자원에서 더 많은 것을 생산할 수 있으므로, 이런 재사용성이 의미하는 바는 곧 소프트웨어에 대한 ROI(투자수익률) 개선이다. 이를 통해 비즈니스 조직의 구성원들은 새로운 방식으로 기존 애플리케이션을 사용하거나 새로운 방식으로 파트너에게 애플리케이션을 제공하여 파트너 간의 비즈니스 트랜잭션 증대 가능성을 모색하는 방안을 고려할 수 있다.

따라서 웹 서비스가 해결하려는 기본적인 문제는 데이터 및 애플리케이션 통합 문제와 기술적 기능을 비즈니스 지향적 컴퓨팅 작업으로 변환하는 문제이다. 기업에서는 이런 두 가지 패싯을 통해 프로세스 또는 애플리케이션 레벨에서 파트너들과 통신할 수 있는 한편으로, 새로운 상황에 적응하거나 요청 시 다른 파트너와 작업할 수 있는 동적 공간을 남길 수 있다.

추가 정보

  • 웹 서비스에 대해 자세히 알아보려면, 우선 XML(Extensible Markup Language)의 작동 방식을 알아야 한다. XML and how it will change the WebIntroduction to XML의 두 기사부터 읽어보는 것이 좋겠다. 웹 서비스 기술 자체는 언어에 독립적이지만, Java 입문에서 매우 다양한 도구 및 소프트웨어 구현을 소개한다.
  • 소프트웨어 아키텍트이거나 웹 서비스를 이해할 방법을 찾고 있는 비즈니스 종사자라면, 웹 서비스의 비즈니스적 가치에 대한 유용한 정보와 설명이 많이 수록된 An Executive's Guide to Web services를 참조한다.

웹 서비스로 할 수 있는 일은?

웹 서비스를 통해 이런 모든 동적 기능들이 여러 서비스를 애플리케이션으로 결합할 수 있지만, 그래도 서비스부터 빌드해야 한다. 전산학 분야에서 프로그래밍 언어는 끊임없이 발전하고 있다. 프로그래머가 함수에 어떤 매개변수를 제공하면 이 함수가 해당 매개변수에 대해 어떤 연산을 실행하고, 계산 결과를 바탕으로 어떤 값을 반환하는 함수라는 아이디어를 구현하기 시작한 것은 수십 년 전의 일이었다. 결국, 이런 최초의 개념이 각 오브젝트가 자신이 수행할 수 있는 다수의 함수뿐 아니라 고유한 개인 데이터 변수도 가지고 있는 오브젝트로 발전되었는데, 이는 이전에는 애플리케이션을 개발하기가 더 복잡할 수밖에 없었던 외부 시스템 범위 데이터 변수에 의존하지 않는 방식이다. 애플리케이션이 서로 통신을 시작했을 때, 오브젝트용으로 정의된 범용 인터페이스 개념이 중요해졌다. 다른 플랫폼의 오브젝트들이 다른 프로그래밍 언어로 작성되어 있고 다른 운영 체제에서 실행되더라도 통신할 수 있기 때문이다.

가장 최근의 단계에서, 웹 서비스는 XML로 정의된 인터페이스와 통신이라는 개념으로 발전했는데, 마침내 적절한 인터페이스에 맞춰 애플리케이션을 디자인하는 한 어떤 종류의 애플리케이션이라도 다른 애플리케이션과 통합할 수 있을 뿐 아니라, 시간의 흐름에 따라 자유롭게 변화하고 발전할 수 있는 단계에 이르렀다. XML은 기능이 매우 다양하여 웹 서비스를 이전 세대의 컴포넌트 기술과는 확연히 다른 존재로 만들어준다. XML을 사용하면 문법적 구조(구문)와 문법적 의미(시맨틱), 각 서비스에서 이를 처리하고 인식하는 방식과 이것이 존재하는 환경을 분리할 수 있다. 따라서 이제는 오브젝트를 서비스로 정의하여 각 서비스에서 로컬 구현 및 환경에 따라 메시지를 변환하고 분석함으로써 XML로 정의된 문법으로 다른 서비스와 통신할 수 있다. 그러므로 네트워크 애플리케이션은 다양한 회사와 디자인의 여러 엔티티가 서비스 지향 아키텍처에서 정의된 규칙을 준수하는 한, 진정으로 이들 엔티티로 구성될 수 있다.

따라서 이 점을 염두에 두면, 웹 서비스를 통해 할 수 있는 일은 다음과 같다.

추가 정보

W웹 서비스의 컴포넌트 기술이란?

웹 서비스에서는 서비스를 설명 및 제공하고 서비스와 상호 작용하기 위한 관련 프로토콜 제품군이 사용된다. 이 제품군은 공통의 기능과 용도를 바탕으로 여러 그룹으로 더욱 세분화될 수 있다. 첫 번째 그룹에서는 메시징, 인터페이스 설명, 주소 지정 및 전달 문제를 처리한다. SOAP(Simple Object Access Protocol)로 알려진 메시징 프로토콜이 가장 잘 알려진 프로토콜이다. 이 프로토콜은 HTTP, IIOP, SMTP 등의 전송 프로토콜을 사용하여 네트워크를 통해 메시지를 전달할 수 있도록 메시지를 인코드한다.

WSDL(Web Services Description Language)은 각 서비스의 인터페이스에 대한 정의를 구성하는 일련의 XML 문으로 표시된다. 현재 진행 중인 다른 스펙은 분산 아키텍처에서 웹 서비스를 고유하게 주소 지정하고 식별할 방법을 정의하는 WS-Addressing이다. 많이 사용되는 또 다른 스펙은 Web Services Invocation Framework로서, 이 스펙에서는 동일한 메시징 프로토콜을 사용하지 않는 컴포넌트를 포함한 어떤 유형의 컴포넌트에 대해서도 WSDL 인터페이스를 정의할 수 있다.

다음의 프로토콜 및 스펙 그룹은 서비스가 어떻게 스스로를 광고하고 네트워크에서 서로 찾을 수 있는지를 정의한다. 서비스들이 서로를 찾을 수 있도록 하기 위해, UDDI(Universal Description, Discovery and Integration) 프로토콜에서 서비스를 찾아서 액세스하기 위한 레지스트리와 연관된 프로토콜을 정의한다. 웹 서비스 검사 언어는 레지스트리를 사용하지 않고 작동하는 UDDI의 대체 메커니즘이다.

웹 서비스용 보안 프로토콜은 안전한 통신을 위해 토큰 기반 아키텍처를 정의하는 WS-Security 스펙으로 시작된다. 이를 기초로 삼아, 다음과 같이 여섯 가지 주요 컴포넌트 스펙이 있다.

BPEL4WS(Business Process Execution Language for Web Services)를 포함한 애플리케이션별 스펙은 보안 모델을 뛰어넘어 워크플로우 운영뿐 아니라, 분산된 트랜잭션 처리를 위해 함께 작동하는 WS-Transaction과 WS-Coordination을 정의한다.

모든 서비스와 서비스 지향 아키텍처의 소프트웨어 관리를 위한 웹 서비스 분산 관리 스펙 작업이 현재 진행 중이다. 마지막으로, 웹 서비스의 사용자 인터페이스를 위한 스펙(WS-InteractiveApplications)과 원격 액세스를 위한 스펙(WS-RemotePortals)이 있다.

웹 서비스에 대한 스펙과 프로토콜은 본 기사를 작성하는 현재 아직 정의 중이며, 서비스가 서로 어떻게 상호 작용해야 할지 설명하기 시작했을 뿐이다. 하지만, 이런 스펙과 프로토콜에서 가능한 모든 시나리오와 조합을 개별적으로 다룰 수는 없다. 따라서 실질적으로 웹 서비스 개발에 관여하는 모든 주요 및 기타 벤더의 구성원들로 이루어진 WS-I(Web Services Interoperability) 그룹은 이들 표준과 스펙이 벤더 제품 구현과는 상관없이 서로 올바로 작동하도록 하기 위해 사례 연구, 샘플 애플리케이션, 구현 시나리오 및 테스트 도구를 개발하는 작업을 떠맡았다.

WS-I는 웹 서비스용으로 최초의 Basic Profile 1.0을 정의한 것과 아울러, 시나리오에 따라 다양한 구현 결과를 평가하고 비교하기 위해 시나리오, 샘플 애플리케이션 및 테스트 도구를 발표했다.

WS-I 외에도, OASIS(Advancement of Structured Information Standards, W3C(World Wide Web Consortium) 및 IETF(Internet Engineering Task Force) 등의 조직에서 방대한 양의 표준 개발 작업이 이루어지고 있다.

추가 정보

웹 서비스와 다른 기술과의 관계

웹 서비스는 본래는 통합 기술이다. 하지만, 웹 서비스 자체는 양식에 구애받지 않는다. 앞서 언급한 바와 같이, 웹 서비스를 위한 컴포넌트 기술은 공통적으로 정의되고 XML로 상호 작용한다. 하지만, XML 자체가 언어에 독립적이며 웹 서비스도 마찬가지다. 따라서 웹 서비스는 Java, Python, Perl, C#, Basic 등의 다양한 프로그래밍 언어로 개발될 수 있다.

웹 서비스의 기원은 인터넷 및 웹 애플리케이션이 서로 더 나은 방식으로 통신하고 상호 작용하기 위해 더 나은 아키텍처를 찾으려는 노력에서 비롯되었다. 따라서 오늘날 대부분의 웹 서비스는 WebSphere, Apache 등의 애플리케이션 서버 환경에서 작동하는 프로그램을 기반으로 한다. 필수적인 것은 아니지만, 최상의 웹 서비스 도구 중 일부는 그런 환경에 맞춰 디자인되었다.

웹 서비스는 더욱 간단한 범용 인터페이스를 제공함으로써, 모바일 및 휴대용 환경에 맞춰 퍼베이시브 컴퓨팅 모델의 작동 방식을 개선하는 데도 도움이 되고 있다. 모바일 컴퓨팅용 소프트웨어는 웹 서비스 통신 모델을 빠르게 채택하고 있는 한편으로, 비주얼 웹 서비스의 인터페이스 문제 개선에도 도움이 되고 있다.

그리드 컴퓨팅 분야에서는 그리드의 작동 방식을 알리기 위해 웹 서비스를 사용하는 분산 컴퓨팅 유형을 위한 새 모델인 Open Grid Services Architecture의 일부로 웹 서비스를 채택했다.

컴퓨터가 스스로 유지 및 관리할 수 있는 방법에 대해 새롭고 흥미로운 길을 제시하는 자율 컴퓨팅에도 웹 서비스용 애플리케이션이 몇 가지 있다.

추가 정보

애플리케이션에서 웹 서비스를 사용할 수 있는 방법

애플리케이션을 빌드할 때 웹 서비스에 대해 여러 가지 방식으로 생각할 수 있다. 가장 기본적인 레벨에서, 웹 서비스는 애플리케이션이 서로 통신할 수 있게 해주는 고급 통신 프로토콜 제품군이다. 소프트웨어 개발자가 상호 작용하는 웹 서비스를 작성하고 복잡한 애플리케이션을 빌드할 수 있게 해주는 다양한 도구가 등장하면서 지난 몇 년간에 걸쳐 레벨이 상당히 높아졌다. 이렇게 높아진 레벨은 종종 서비스 간의 직접적인 일대일 상호 작용이나 서로 상호 작용하는 비교적 소수의 서비스라는 특징을 지닌다.

하지만, 웹 서비스를 통신 프로토콜로만 사용하는 것은 서비스 지향 아키텍처(SOA)라는 웹 서비스의 진정한 강점을 저버리는 결과를 낳는다. SOA는 서비스가 동적으로 상호 간에 살펴보고, 어떤 애플리케이션을 수행하기 위해 협력하고, 다양한 방식으로 재결합하는 전체적 시스템을 말한다. 이 모델에서는 애플리케이션 디자인, 개발 및 사용 방식을 발전시키는 기술과 소프트웨어의 재사용을 권장한다. 이 모델을 통해 분산 컴퓨팅의 세계가 더욱 구체적으로 현실화된다. 이 레벨에서는 소프트웨어 개발자가 SOA 모델에 대해 숙고하여 이 모델을 바탕으로 분산 애플리케이션을 디자인할 필요가 있다. 이 레벨의 특징은 사용할 서비스를 위한 공통된 분산 네트워크인 ESB(Enterprise Service Bus) 사용과 같이, 서비스의 분산 통신을 허용하기 위한 기술을 사용한다는 점이다.

마지막으로 최상위 레벨은 이 SOA 모델과 수많은 컴포넌트 서비스를 모든 코드 행을 일일이 쓰는 기존의 방법 대신 전체 애플리케이션으로 전체 섹션에 어셈블할 수 있는 빌딩 블록으로 보는 것이다. 연결 인터페이스를 조사하여 실제로 코드를 쓰지도 않고 전체 애플리케이션을 빌드할 수 있다. 그 문제에 관해서는, 서비스를 매우 다양한 언어와 플랫폼으로 작성할 수 있기 때문에 직접 코드를 작성하는 것이 오히려 방해가 될 수도 있다. 애플리케이션의 작업 수행 방식을 정의하는 연산 워크플로우로 이들 블록을 모들 수 있으며, 다른 도구를 사용하여 각 서비스 또는 서비스 그룹에서 워크플로우의 효과를 모니터할 수 있다. 이 레벨에서, 개발자들은 일반적인 프로그래밍 언어의 사용을 피하고 애플리케이션을 어떤 디자인에 맞게 더 정확하게 빌드하는 데 도움이 되는 모델 중심 아키텍처에서 작업할 수 있다. 그러면 이 디자인이 ESB와 같은 분산 시스템 위에서 실행된다.

추가 정보

웹 서비스 실력을 키울 수 있는 방법

최신 웹 서비스 정보를 계속 확보하는 최선의 방법은 최신 기술 관련 기사를 꾸준히 읽고 웹 서비스에 사용 가능한 다양한 도구를 사용해보는 것이다. 기술 그 자체는 끊임없이 발전을 거듭하므로, 이렇게 얻은 최신 정보와 웹 서비스 관련 도구를 통해 웹 서비스를 사용하는 최선의 방법에 대한 최신의 해석을 습득할 수 있다. 또한, Emerging Technology Toolkit과 같은 툴킷을 이용하면 이런 최첨단 기술 분야에서 몇 단계 도약함으로써 전문가들이 다루는 것과 똑같은 기술을 바탕으로 다양한 실험을 해볼 수 있다. 이런 도구에 대해서는 다음 섹션에서 설명한다.

현재, 웹 서비스는 상당한 진보를 이루어 이 주제에 관한 다양한 정보가 폭발적으로 늘어나고 있다. 웹 서비스 사이트에서 찾아볼 수 있는 직접 상호 작용을 위한 웹 서비스를 개발하는 첫 번째 레벨에는 상당한 양의 기술 컨텐츠가 있다. 나온 지 3년을 훌쩍 넘은 SOAP와 같은 프로토콜도 여전히 개선 과정을 거듭하고 있다. 이 주제에서 다루는 내용이 계속 바뀌므로, 정기적으로 웹 서비스 컨텐츠 영역으로 다시 돌아와 확인하는 것이 좋다.

실력을 향상하기 위한 또 다른 좋은 방법은 이 영역에 나열된 토론 포럼에 직접 참여하는 것이다. 토론 포럼에서는 이 분야에서 활발하게 활동하고 있는 전문가들을 찾을 수 있고, 웹 서비스 기술을 디자인하고 제품을 만들고 있는 연구개발 담당자들로부터 직접 도움을 받을 수도 있다.

고급 개발자의 경우, 매달 열리는 다양한 워크샵에 참여함으로써 웹 서비스 스펙의 개발과 발전에 참여할 수 있다.

추가 정보