800 likes | 1.3k Views
SOA 를 구현하기 위한 개발 및 적용 방안. 한국마이크로소프트 개발자 플랫폼 비즈니스 그룹 손정민 아키텍쳐 전도사 ( 부장 ). 목차. 서비스 지향 패러다임으로의 변화 서비스 지향 개발을 위한 WCF 업무 프로세스 개발을 위한 WF 결언. ERP 애플리케이션. .NET 애플리케이션. 패키지 애플리케이션 X. J2EE 애플리케이션. Unix 애플리케이션. AS/400 애플리케이션. CICS 애플리케이션. 패키지 애플리케이션 Y. 엔터프라이즈 IT 의 현실.
E N D
SOA를 구현하기 위한 개발 및 적용 방안 한국마이크로소프트 개발자 플랫폼 비즈니스 그룹 손정민 아키텍쳐 전도사(부장)
목차 • 서비스 지향 패러다임으로의 변화 • 서비스 지향 개발을 위한 WCF • 업무 프로세스 개발을 위한 WF • 결언
ERP 애플리케이션 .NET 애플리케이션 패키지 애플리케이션 X J2EE 애플리케이션 Unix 애플리케이션 AS/400 애플리케이션 CICS 애플리케이션 패키지 애플리케이션 Y 엔터프라이즈 IT의 현실
안정적인 단일 수입원의 고갈 새로운 요소는 기존 요소를 필요로 함 기존 요소들 또한 새로운 요소를 필요로 함 여러 이질적인 시스템들이 혼재 일률적인 업그레이드가 어려움 단일 운영체제/하드웨어 플랫폼 선택의 난점 “빅뱅” 효과에 대한 대처 모든 플랫폼이 지속적으로 상호 이질화됨 모든 위치에서 데이터를 액세스/조작 새로운 도전
시스템 구성과 재사용 수단 여러 애플리케이션이 자유롭게 교차 여러 기관과 신뢰의 경계를 자유롭게 교차 구현에 얽매이지 않을 것 공개 표준에 기반을 둔 상호 작용 특정한 언어나 플랫폼에 의존하지 않을 것 동적인 그룹화 및 재 그룹화 비동기적 연산의 지원 도전 해결의 조건
엔터프라이즈 IT의 이상 ERP 애플리케이션 닷넷애플리케이션 패키지 애플리케이션 X 자바 애플리케이션 유닉스 애플리케이션 통합 커뮤니케이션 메커니즘 AS/400 애플리케이션 CICS 애플리케이션 패키지 애플리케이션 Y
아키텍처의 진화의 필요성 비즈니스 로직 메인프레임 터미널 데이터베이스 PCs 비즈니스 로직 비즈니스 로직 GUI 데이터베이스 클라이언트/서버 웹 비즈니스 로직 멀티-티어 브라우저 데이터베이스 서비스 클라이언트 서비스 지향 비즈니스 로직 데이터베이스 비즈니스 로직
애플리케이션을 구성하는 기본 단위 위치, 플랫폼, 코드에 무관한 기능 블록으로 정의 항상 여러 플랫폼 간, 원격 사용을 가정 구현과 관련된 세부적 사항을 무시할 수 있어야 함 서비스는 플랫폼, 신뢰성 등의 경계가 있음 객체는 경계 내부에서만 사용하는 것이 바람직하며 서비스는 경계 내-외부에 공히 사용될 수 있음 경계는 서비스의 규모를 결정하는 요인임 서비스란 무엇인가?
객체 지향과 서비스 지향 비교 Object-oriented distributed solution Service-oriented distributed solution
Applications Operational Requirements State composed of enforce manage Policies governed by Services bound by exchange have Message Exchange Pattern Messages Contracts describe is a set of Schemas define structure of contain 서비스 지향 패러다임의 개념도
차세대 시스템을 설계/구축하기 위한 방법을 정형화하는 기회 제공 극심한 상호 의존성의 최소화 독립성 증진 조립/통합 가능한 애플리케이션의 용이한 배급 높은 수준의 상호운용을 가능하게 함 현재 시스템의 핵심적 가정을 명확하게 함 특히 경계부와 국지적 정보 서비스 지향 패러다임의 중요성
SecurityWS-Security WS-Trust WS-Federation ReliabilityWS-Reliable Messaging TransactionsWS-Transactions WS-Coordination WS-AtomicTranscation Metadata WSDL, WS-Policy, WS-Discovery Messaging SOAP, WS-Addressing, WS-Eventing XML XML, XSD, XPath Transports HTTP, TCP, SMTP 웹 서비스 표준 스택
WCF .NET Remoting Enterprise Services WSE MSMQ ASMX 상호운용을 위한 웹 서비스 네이티브 .NET 커뮤니케이션 트랜잭션 표현과 처리 WS-* 스펙의 지원 비동기적 메시징 명시적 서비스 지향 커뮤니케이션 메커니즘 통합의 필요성
웹 서비스가 바람직한 미래이기는 하지만 Non-SOAP 서비스와의 연결, 비즈니스 프로세스를 형성하는 서비스 구축의 필요성이 그만큼 더 증대됨 비즈니스 프로세스를 구축, 관리, 감시하기 위한 프레임워크의 필요성 현재 환경에서의 직접적인 활용 서비스 지향적인 미래에도 여전히 유용함 서비스 지향 패러다임에 관한보다 현실적인 관점
목차 • 서비스 지향 패러다임으로의 변화 • 서비스 지향 개발을 위한 WCF • 업무 프로세스 개발을 위한 WF • 결언
What is WCF ? • Windows Communication Foundation • 차세대 닷넷 Communication 인프라 • .NET Framework 3.0의 기능 • Service Oriented Architecture 기반 • Web Service (XML + SOAP) 기반 • 다양한 Communication 프로토콜 지원 HTTP, TCP, Named Pipe, MSMQ, P2P • 다양한 웹 서비스 표준 지원 SOAP 1.2, WS-Addressing WSDL, WS-Policy WS-Security, WS-Trust, WS-SecureConversation WS-ReliableMessaging WS-AtomicTransaction, WS-Coordinate
Windows Communication Foundation Namespaces And References Namespace System.ServiceModel System.Runtime.Serialization System.Security.Authorization System.Transaction Assembly Reference System.ServiceModel.dll – Core Library System.Runtime.Serialization.dll – Serialization Library System.Secruity.Authorization – Security Library System.Transactions.dll – Transaction Library
Clients and Services Client Service
Endpoints Client Service Endpoint Endpoint Endpoint Endpoint
A A A B B B C C C C B A Address, Binding, Contract Client Service Address Where? Binding How? Contract What? Endpoint
A A A B B B C C C C B A Creating Endpoints ServiceHost Client Service ClientChannel
Channel • WCF 프로그램 간의 메시지 통로 • 채널 타입(단순 입력, 단순 출력, 입-출력, • 요청-응답 메시지 패턴으로 구현) • 클라이언트 채널은 서비스 endpoint 제작 • 클라이언트가 서비스로 처음 메시지를 전송하는 순간에 채널 확립 • 최초 클라이언트 서비스 메시지 전송이 두 번째 • 메시지 전송 보다 더 시간이 소요될 수 있음
Service • WCF 프로그램이 채널을 통한 메시지 송수신시 서비스 endpoint가 필요함 외부에서 본 Service 구조
Service • WCF 프로그램이 채널을 통한 메시지 송수신시 서비스 endpoint가 필요함 내부에서 본 Service 구조
HelloWorld Demo DEMO
Why WCF ? • Future Communication Infra • 웹 서비스 기반(XML + HTTP) • 서비스 지향 아키텍처(SOA) • Interoperability 표준 WS-* 스펙 구현 • Next generation communication infra of Microsoft • Common Programming Model • Web Service, .NET Remoting, IPC, MSMQ 프로토콜에 관계 없이 하나의프로그래밍 모델 사용 가능 • 단일 코드 베이스사용 가능 • New feature • 트랜잭션, 신뢰할 수 있는 메시징, P2P, …… • 다양한 바인딩(프로토콜 지원)
WCF Features (1) • Web Service Based • XML, HTTP, SOAP, WSDL 등 웹 서비스 스펙 준수 • Security • WS-Security, WS-Trust 등 메시지 기반 보안 제공 • HTTPS, 인증 기반의 TCP/IP 등 트랜스포트 수준의 보안 제공 • Transaction • 분산 트랜잭션 지원 TCP 바인딩 사용 시 OLE Transaction 직접 사용 HTTP 바인딩 사용 시 WS-AT 를 통해 트랜잭션 전파 • Reliability • 신뢰도 높은 메시징을 위해 WS-RM 프로토콜 구현 • 세션 기능 제공 (ASP.NET의 세션과는 다른 개념) • P2P Networking • Rich Built-in Bindings • BasicHttp, WSHttp, WSDualHttp, NetTcp, NetMsmq, NetNamedPipe등
Enterprise Communication Infra • Requirements • 개발 생산성(Productivity) • 성능(Performance) • 확장성(Scalability) • 기능성(Function) 트랜잭션(Transaction) 신뢰도(Reliability) 보안(Security) • 단일 프로그래밍 모델 기존 ASMX, Remoting, DCOM(Enterprise Services), MSMQ 프로그래밍 모델을 통합하는 프로그래밍 모델 • 상호운영성 (Interoperability) • 유연성(Flexibility)
Legacy Communication Infra • .NET Remoting • 성능적으로 우수함 (TCP Channel + Binary Formatter) • 상호운영성이 떨어짐 • Proxy 객체 작성이 어려움 (Facade 어셈블리 참조 필요) • IIS 호스팅에 한계를 가짐(HTTP Channel 필수) • ASP.NET Web Service • 상호운영성이 우수함 • 상대적으로 성능이 떨어짐 • HTTP 만을 사용할 수 있음 • 유연성이 떨어짐 • Enterprise Services(DCOM)/MSMQ • 가장 다양한 기능 보유(트랜잭션, 보안, 객체 풀링, 인스턴스 모델) • 방화벽 통과가 어려움 • 닷넷과 함께 사용시 성능 저하 • 상호운영성이 크게 떨어짐
Business Service withLegacy Communication Infra Interoperability Web Service Interface (ASMX + WSE) XML Message HTTP Java client Legacy application Service Performance .NET Remoting Interface Binary Message TCP Channel .NET Client Business Logic Reliability MSMQ Message WAN MSMQ Interface DistributedTransaction DCOM MSMQ Client Message Queue Other COM+ Component Facade Layer MSMQ Message Off-line Messaging PDA/Mobile Client
WCF as Enterprise Communication Infra • Advantage • 유연성 HTTP, TCP, Named Pipe, MSMQ, P2P 등 다양한 트랜스포트 지원 단일 프로그래밍 모델 선언적 서비스 종점(endpoint) • 성능 TCP 트랜스포트 + 바이너리 인코딩 TCP를 사용하면서도 IIS 7.0에호스팅 가능 (WAS) • 상호운영성 SOAP 기반의 메시지 WS-* 기반의 인터넷 표준 사용 • 다양한 기능 보안, 트랜잭션, 신뢰할 수 있는 메시징 등 • Disadvantage • 상대적으로 새로운 기술 • 마이그레이션 필요
Business Service with WCF Interoperability Security Reliability Transaction WCF Service Endpoint Address #1 WCF Message Contract Java client Legacy application WSHttpBinding Endpoint Address #2 Business Logic Contract WCF Message NetTcpBinding WCF Client WCF Message WAN Endpoint Address #3 WCF Client Contract Message Queue NetMsmqBinding WCF Message Disconnected Client
Enterprise Communication Infra:Reliability • Reliable Messaging in WCF • 네트워크 상의 중간 매개체의 메시지 전송 문제 해결 • 메시지 전달에 대한 보장 (End-to-End Reliability) 메시지에 대한 ACK(acknowledge) 사용 메시지 재전송 메커니즘 메시지의 순차적인 전송 • WS-ReliableMessaging 표준 준수 Reliable Session 사용 WSHttpBinding, WSDualHttpBinding, NetTcpBinding 사용 • Using MSMQ Transport • 네트워크 뿐만 아니라 서비스가 다운된 상황에서도 메시지 전송 • Off-line 시나리오 • NetMsmqBinding 사용
Enterprise Communication Infra:Point-to-Point Reliability Proxy, Firewall, Router, …… UnknownChannel Transport Channel Intermediate Servers Transport Channel Transport level Reliability UnknownChannel Service Client Transport Channel UnknownChannel Intermediate Servers Point-to-Point Cache server, Firewall, Router, ….. Point-to-Point Point-to-Point
Enterprise Communication Infra:End-to-End Reliability Proxy, Firewall, Router, …… Message Received And Send ACK Intermediate Servers Down Message with ID Retransmit !!! Service Client Message withID Intermediate Servers Cache server, Firewall, Router, ….. End-to-End
Enterprise Communication Infra:Reliability with MSMQ Proxy, Firewall, Router, …… Offline Intermediate Servers Online! Down MSMQSend Queue MSMQReceive Queue UP! Message Queued Service Client Intermediate Servers Cache server, Firewall, Router, …..
WCF Reliability Demo DEMO
Enterprise Communication Infra:Distributed Transaction • 서비스/클라이언트의 분산 트랜잭션 • Enterprise Services에 의해서만 지원되던 기능 COM+ 서버 어플리케이션 타입만이 지원 • MSDTC와 OLE Transaction 프로토콜, DCOM에 의해 제공 • 다양한 제약 사항 존재 방화벽 통과가 어려움 닷넷 환경에서 성능이 떨어짐 • Transaction in WCF • HTTP, TCP, Named Pipe 트랜스포트 지원 HTTP 사용시 방화벽 통과가 상대적으로 용이함 • OLE Transaction 및 WS-AtomicTransaction프로토콜 사용 상호운영성이 향상됨 • System.Transactions네임스페이스 기반 TransactionScope객체를 통한 트랜잭션 지원
Enterprise Communication Infra:Transaction Scenario Distributed/Atomic Transaction 클라이언트 주문 처리 서비스 재고 데이터베이스 SOAP+HTTP 주문처리컴포넌트 재고관리컴포넌트 SOAP+HTTP 카드 승인 웹 서비스 배송 요청 웹 서비스
Enterprise Communication Infra:Transaction and MSDTC Distributed/Atomic Transaction 클라이언트 주문 처리 서비스 재고 데이터베이스 SOAP+HTTP 주문처리컴포넌트 재고관리컴포넌트 MSDTC SOAP+HTTP WS-AT and other standards MSDTC MSDTC Other TM 카드 승인 웹 서비스 배송 요청 웹 서비스
WCF Transaction Demo DEMO
Enterprise Communication Infra:Peer-to-Peer Partially Connected Mesh • P2P in Enterprise Environment • 사내 메신저 • 서버 콘텐트 동기화 • P2P in WCF • 메쉬(mesh) 기반의 P2P 지원 부분 연결된 메쉬 • TCP 트랜스포트 기반 • NetPeerTcpBinding 지원 • 단일 프로그래밍 모델 • 지원하는 P2P 인프라 PNRP (Peer Name Resolution Protocol) Custom Resolver Server Server Server Server Server Server
Enterprise Communication Infra:P2P Scenario (1) Centralized Content Server Congestion !!! Region A Clients Region B Clients Region C Clients
Enterprise Communication Infra:P2P Scenario (2) Centralized Content Server P2P Network Local Content Server Local Content Server Local Content Server Region A Clients Region B Clients Region C Clients
WCF P2P Demo DEMO
Enterprise Communication Infra:Other Features • Callback • 클라이언트에 대한 통지(notification) 배치 작업 종료 공지 사항 • Performance + Reliability + Management • WAS(Windows Activation Service) with IIS 7.0 TCP 트랜스포트 + 바이너리 인코딩 IIS의 강력한 안정성 • Recycling, Web Garden, Health Monitoring, ...... • Efficient Messaging • 대용량 메시지 전송 MTOM, Binary 메시지 인코딩 Message Streaming • Message Compression Channel SOAP 메시지 압축 Windows SDK Sample 참조
.NET Framework 3.5 & VS 2008:WCF 새로운 기능 • WCF Web Programming Model • Support REST(Representational State Transfer) Non-SOAP 메시지 송수신(JSON, XML, Other Binary Stream) HTTP GET/POST/PUT/..... 지원 • ASP.NET AJAX에서 WCF 서비스 호출 가능 • WCF Syndication • WCF 서비스를 통해 RSS 2.0 및 ATOM 1.0 기능 제공 • Syndication을 위한 객체 모델 제공 SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson, SyndicationCategory, SyndicationContent등 • WCF Support in VS 2008 • 프로젝트 템플릿 통합 • 새로운 UI의 “서비스 참조” 다양한 프록시 생성 옵션 제공