Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SOA Patterns

SOA Patterns

Patterns for building Service Oriented Architectures (SOA)

Arnon Rotem-Gal-Oz

May 19, 2010
Tweet

More Decks by Arnon Rotem-Gal-Oz

Other Decks in Technology

Transcript

  1. SOA Service describes End Point Exposes Messages Sends/Receives Contracts Binds

    to Service Consumer implements Policy governed by Sends/Receives Adheres to Component Relation Key Understands Serves
  2. SOA is derived from other styles Pipes and Filters Client

    Server Distributed Agents Layered System Stateless Comm. SOA
  3. SOA vs. REST Pipes and Filters Client Server Uniform Interface

    Virtual Machine Distributed Agents Layered System Replicated Repository Code On Demand Stateless Comm. Cacheable REST SOA
  4. …and patterns can help mitigate them Service Firewall Identity Provider

    Edge Component Request/Reply Transactable Service Saga Workflodize Orchestrated Choreography Client/Server/Service Composite Frontend Decoupled Invocation Gridable Service Parallel Pipelines Virtual Endpoint Service Instance Service Monitor Blogjecting Watchdog Inversion of Communications Aggregated Reporting
  5. 3G Video Calls MMS Dedicated Client Mobile Integration Applications Acquisition

    Interactions branding Services Ad Management Interactions Reference Data Links Resources Monitoring Targeted Advertizing Campaign Mgmt. Usage Datmart Reporting Billing Data mining & Statistics Reports Link Managment Publishing tools integration Interaction Designer Web Front-end Data Interfaces 3rd parties
  6. Load balancer Web Server (IIS/Apache App Server App Server App

    Server App Server App Server App Server App Server Web Server (IIS/Apache MMS Gateway 3G Gateway 3G Gateway Load balancer Firewall Firewall BI & Reporting DB Links Datamart usage DB References Links Registeration Sync. Server DMZ Operational Backend Advertizing clients Firewall Web Server (IIS/Apache NMS Paper Editor Smart phones DMZ Camera Phones Admin Console
  7. namespace xsights.Infrastructure.ResourceHost.Interfaces { public interface IResourceHost : IDisposable { ICache

    Cache { get; } Uri ResourceUri { get; } IPAddress LocalIP { get; } IWatchDogProxy WatchDogProxy { get;} IResourceAllocator ResourceAllocator { get; } ImEventBroker EventBroker { get; } void Open(); void Open(TimeSpan timeout); void Close(); void Close(TimeSpan timeout); int FindFreePort(); } } The Service host sets up the common components and services for each Component
  8. Or try to detect failure , handle it and minimize

    its effect on overall service © Rosendahl
  9. What’s the effect of a failure - Server E1 line

    = 30 concurrent video calls Call Flow Service
  10. What’s the effect of a failure - Channel E1 line

    = 30 concurrent video calls Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel Call Flow Channel
  11. Service Instance with NLB Service Instance NLB Driver Cluster Host

    NIC Driver TCP/IP Windows Kernel NIC NLB Driver Cluster Host NIC Driver TCP/IP Windows Kernel NIC Virtual IP : 1.1.1.1 Real IP : 1.1.1.2 Real IP : 1.1.1.3 Service Instance Edge Windows Host NIC Driver TCP/IP Windows Kernel NIC Real IP : 1.1.1.4
  12. Things look Cool & Simple ™ Sessio n negati ons

    Image extract ion identif ication Transl ation to links Rende r resutls 3G Call
  13. Relation Key SOA Component Pattern Component Concern/attribute Edge pipeline Perform

    Task EndPoint Service Request Reaction EndPoint pipeline Perform Task EndPoint pipeline Perform Task EndPoint Queue Request 2 Request 1 Parallel Pipelines
  14. IVP (RV) 3G GW (RV) 3G VAS (Cestel) WS Resource

    Manager SIP Listner RTP Image Extractor Alg. Engine Dispatcher WebConnector 3G Builder (Cestel) WebRenderer Turn out Complicated & Ugly ™
  15. Consumer view var sendMmsEvent = new SendMmsEvent() { FromNumber =

    simpleMessageDetails.DialedNumber, Subject = mmsContents.Subject, ToNumber = simpleMessageDetails.Sender, ImageExtension = mmsContents.ImageExtension, ImageAsByteArray = mmsContents.Image, TextAsByteArray = mmsContents.Text }; eventBroker.RaiseEvent(sendMmsEvent); http://www.flickr.com/photos/crimson_wolf/2851737125/sizes/l/
  16. Service view public interface ImPostOffice : ImContract, IHandleSendCoupon, IHandleSendSms,IHandleStatus,IHandleAdminStatus,IHandleWapLink, IHandleSendMms

    { } [ServiceContract] public interface IHandleSendMms { [OperationContract] int SendMms(SendMmsEvent eventOccured); } [ServiceContract] [DataContract] public class SendMmsEvent : ImEvent { /// <summary> /// end user's number. should be in international format: +[country-code]number. Example: +491737692260 /// </summary> [DataMember] public string ToNumber { get; set; } /// <summary> /// service's number, usually a short-code. Example: 84343 /// </summary> [DataMember] public string FromNumber { get; set; }
  17. Edge translates external structures to internal ones public int SendMms(SendMmsEvent

    eventOccured) { var eventContext = eventOccured.ToString(); if (log.IsDebugEnabled) log.Debug("inside 'SendMms', event context = [" + eventContext + "]"); var fromNumber = eventOccured.FromNumber; var sender = mmsSenderFactory.Get(fromNumber); if (null == sender) { if (log.IsWarnEnabled) log.Warn("cannot get mms sender derived from '" + (fromNumber ?? "null") + "'"); return 0; } IMmsSubmitResponse response; try { var mmsMessageDetails = new MmsMessageDetails(eventOccured.ToNumber, eventOccured.TextAsByteArray, eventOccured.ImageAsByteArray, eventOccured.ImageExtension, eventOccured.Subject); response = sender.Submit(mmsMessageDetails); } catch (Exception ex) { log.Error("cannot send mms message, context = [" + eventContext + "]", ex); return 0; } if (log.IsInfoEnabled) { var responseMessage = (null == response) ? "null" : response.ToString(); log.Info("sent mms with event context = [" + eventContext + "], response = [" + responseMessage + "]"); }
  18. Alternative : Orchestration request Workflow Engine Workflow instance Manage Process

    route request Host Workflows Schedule Orchestration platform Service Service reaction Auxiliary tools Coordinator Protocol Offline designer monitor
  19. Edge Watchdog Edge Report EndPoint Service Request Monitor EndPoint Watchdog

    Agent Monitor Heal Log Reports Monitor Monitor Monitor Blogjecting Watchdog
  20. http://devrig:52141/RM/Sessions/abc/ • ATOMPUB – Session details • URI (ID) •

    State (start/end/status etc.) • Resources – Knows status – URI for the Resource representation on the RM – URI for the Resource itself
  21. Status Service Monitor Edge/Service In Commands Metrics collection Policy governance

    Security monitoring Fault Monitoring Reporting & Dashboarding Control Edge/Service Status Monitor Act Collect Notify Service Monitor
  22. Aggregated Reporting Subscribed/ Polled data Poll Data Edge Aggregated Reporting

    Service EndPoint ODS Out Pre-Proces Save Data Load report Convert Request Send Clean Join Transform Transpose Produce reports Report EndPoint Request
  23. Routing [ServiceContract] [Participate("3G")] public interface ImPlayer : ImContract, IHandleCallStarted, IHandleC

    IHandlePlayMovie,IHandleCallAborted { } [ServiceContract] [Participate("3GPartner")] public interface ImXsightsGateWay : ImContract, IHandleCallAborted, IHandlePlayMovie, IHandleReadyForSearch, IHandleSearchStarted, IHandleJoinThirdParty { }
  24. Initiator A Initiator B Participant B Capacity : 1 Raise

    a saga initiating event Now what ?! Participant A Capacity : 2
  25. Event Broker Service Host Resource Allocator Business Logic Control Edge

    Service Host Service Host Business Logic Event Broker Service Host Resource Allocator Control Edge Service Instance #1 Service Host Business Logic Event Broker Service Host Resource Allocator Control Edge Service Instance #2 Service Host Business Logic Event Broker Service Host Resource Allocator Control Edge Reservation