SOA Patterns © 2008 Studio MikMik. Arnon Rotem-Gal-Oz

Embed Size (px)

Citation preview

  • Slide 1
  • SOA Patterns 2008 Studio MikMik
  • Slide 2
  • Arnon Rotem-Gal-Oz
  • Slide 3
  • Todd Bonita 2009
  • Slide 4
  • BEFORE WE BEGIN
  • Slide 5
  • 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
  • Slide 6
  • SOA is derived from other styles Pipes and Filters Client Server Distributed Agents Distributed Agents Layered System Layered System Stateless Comm. Stateless Comm. SOA
  • Slide 7
  • SOA vs. REST Pipes and Filters Client Server Uniform Interface Virtual Machine Distributed Agents Distributed Agents Layered System Layered System Replicated Repository Code On Demand Code On Demand Stateless Comm. Stateless Comm. Cacheable RESTSOA
  • Slide 8
  • SOA also means challenges
  • Slide 9
  • 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
  • Slide 10
  • XSIGHTS, MEET AUDIENCE AUDIENCE, XSIGHTS
  • Slide 11
  • Mobile Integration Applications Advertizing Management Advertizing Management Services Resources Editorial Integration Advertisers Integration Reporting
  • Slide 12
  • 3G Video Calls MMS Dedicated Client Dedicated Client Mobile Integration Applications Acquisition Interactions branding Services Ad Management Interactions Reference Data Reference Data Paper Links Paper Links Resources Monitoring Targeted Advertizing Campaign Mgmt. Usage Datmart Reporting Billing Data mining & Statistics Reports Editorial IntegrationAdvertisers Integration Publishing tools integration Interaction Designer Interaction Designer Web Front-end Web Front-end Data Interfaces 3 rd parties
  • Slide 13
  • Load balancer Web Server (IIS/Apache Web Server (IIS/Apache App Server Web Server (IIS/Apache Web Server (IIS/Apache MMS Gateway MMS Gateway 3G Gateway 3G Gateway 3G Gateway 3G Gateway Load balancer Firewall BI & Reporting DB Links DB Links Datamart usage Datamart usage DB References DB References Li nks Registeration Sync. Server Sync. Server DMZ Operational Backend Advertizing clients Firewall Web Server (IIS/Apache Web Server (IIS/Apache NMS Paper Editor Paper Editor Smart phones Smart phones DMZ Camera Phones Camera Phones Admin Console Admin Console
  • Slide 14
  • Edge Business Logic Business Logic WD Agent WD Agent Event Broker Event Broker Resource Allocator Resource Allocator ServiceHost
  • Slide 15
  • The Service host sets up the common components and services for each Component
  • Slide 16
  • CHALLENGE SERVICE AVAILABILITY
  • Slide 17
  • Whats in a 9
  • Slide 18
  • 0.99 reliability We have a nice little legacy business component
  • Slide 19
  • 0.99 And we move it to SOA
  • Slide 20
  • Failsafe hardware Status Technologies FT Server
  • Slide 21
  • Or try to detect failure, handle it and minimize its effect on overall service Rosendahl
  • Slide 22
  • Whats the effect of a failure - Server E1 line = 30 concurrent video calls Call Flow Service Call Flow Service
  • Slide 23
  • request reaction Edge Service Instance Dispatcher Distribute Request/Reply End point Service Business logic Service Business logic Service Instance
  • Slide 24
  • Whats 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 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
  • Slide 25
  • 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.2Real IP : 1.1.1.3 Service Instance Edge Windows Host NIC Driver TCP/IP Windows Kernel NIC Real IP : 1.1.1.4
  • Slide 26
  • Alternative : Virtual Endpoint
  • Slide 27
  • CHALLENGE - FLEXIBILITY
  • Slide 28
  • Request/Reply Service EndPoint Synchronous processing Synchronous processing 1. Request 2. 3. Reply Service Consumer
  • Slide 29
  • Things look Cool & Simple Session negations Image extraction identification Translation to links Render resutls 3G Call
  • Slide 30
  • Relation Key SOA ComponentPattern Component Concern/attribute Edge pipeline Perform Task Perform Task EndPoint Service Request Reaction EndPoint pipeline Perform Task Perform Task EndPoint pipeline Perform Task Perform Task EndPoint Queue Request 2 Request 1 Parallel Pipelines
  • Slide 31
  • IVP (RV) 3G GW (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
  • Slide 32
  • Inversion of Communications
  • Slide 33
  • Consumer view http://www.flickr.com/photos/crimson_wolf/2851737125/sizes/l/
  • Slide 34
  • Service view [ServiceContract] [DataContract] public class SendMmsEvent : ImEvent { /// /// end user's number. should be in international format: +[country-code]number. Example: +491737692260 /// [DataMember] public string ToNumber { get; set; } /// /// service's number, usually a short-code. Example: 84343 /// [DataMember] public string FromNumber { get; set; } /// /// Text, as byte array. Use Encoding classes to do it. /// [DataMember] public byte[] TextAsByteArray { get; set; } /// /// Image, as byte array. Can be: jpg, gif, png, bmp. (jpg rulez!!) /// [DataMember] public byte[] ImageAsByteArray { get; set; } /// /// Remeber ImageAsByteArray ? - This is where you manaually tell us what's the extension. Yes, we can inspect the signature, but why? /// [DataMember] public string ImageExtension { get; set; } /// /// the mms message should have a subject. just put something there. /// [DataMember] public string Subject { get; set; }
  • Slide 35
  • Edge translates external structures to internal ones
  • Slide 36
  • Sagas tie instances together for conversations
  • Slide 37
  • SIP Image Extractor Identification X Call Recovery
  • Slide 38
  • Alternative : Orchestration request Workflow Engine Workflow instance Manage Process Manage Process route request Host Workflows Host Workflows Schedule Orchestration platform Service reaction Auxiliary tools Coordinator Protocol Offline designer Offline designer monitor
  • Slide 39
  • Be Wary of Nano-Services
  • Slide 40
  • CHALLENGE - MANAGEMENT
  • Slide 41
  • Edge Watchdog Edge Report EndPoint Service Request Monitor EndPoint Watchdog Agent Monitor Heal Log Reports Monitor Blogjecting Watchdog
  • Slide 42
  • Blogjects concept is about collaborating objects
  • Slide 43
  • 321root /Sessions/Abcde/Efgh/Resources/Dispatchers/Xyz/ RESTful resource management
  • Slide 44
  • 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
  • Slide 45
  • Edge Business Logic Business Logic WD Agent WD Agent Event Broker Event Broker Resource Allocator Resource Allocator ServiceHost
  • Slide 46
  • WatchDog Service A Service B WDWatcher
  • Slide 47
  • SIP Image Extractor Identification X Call Recovery WatchDog
  • Slide 48
  • Slide 49
  • Status Service Monitor Edge/Service In Commands Metrics collection Metrics collection Policy governance Policy governance Security monitoring Security monitoring Fault Monitoring Fault Monitoring Reporting & Dashboarding Reporting & Dashboarding Control Edge/Service Status MonitorAct Collect Notify Service Monitor
  • Slide 50
  • Image of the site-manager
  • Slide 51
  • Keep the BIT http://www.flickr.com/photos/37643027@N00/2050024263/sizes/o/
  • Slide 52
  • X Call Recovery WatchDog Liveliness Monitor 3G Call
  • Slide 53
  • CHALLENGE - REPORTING
  • Slide 54
  • Reporting?! BI? but the data is fragmented
  • Slide 55
  • 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 Produce reports Report EndPoint Request
  • Slide 56
  • CHALLENGE MULTI-TENNANCY (LIES, I TELL YOU, ALL LIES)
  • Slide 57
  • Same event different subscribers Call Flow Player (interaction Renderer) Player (interaction Renderer) Call Flow Bridge to 3 rd Party Bridge to 3 rd Party Play Movie Event
  • Slide 58
  • Routing
  • Slide 59
  • Initiator A Initiator B Participant B Capacity : 1 Raise a saga initiating event Now what ?! Participant A Capacity : 2
  • Slide 60
  • Reservation Pattern
  • Slide 61
  • Event Broker Event Broker Service Host Resource Allocator Resource Allocator Business Logic Business Logic Control Edge Control Edge Service Host Business Logic Business Logic Event Broker Event Broker Service Host Resource Allocator Resource Allocator Control Edge Control Edge Service Instance #1 Service Host Business Logic Business Logic Event Broker Event Broker Service Host Resource Allocator Resource Allocator Control Edge Control Edge Service Instance #2 Service Host Business Logic Business Logic Event Broker Event Broker Service Host Resource Allocator Resource Allocator Control Edge Control Edge Reservation
  • Slide 62
  • Good old 2PC to the rescue