SlideShare a Scribd company logo
SOA and DevOps
Contradictory or Complementary
Mohamed Ismail Mostafa
SOA Certified Architect & Trainer
DevOps Transformation Lead
mmostafa@devopsi.io
Devopsi.io
V 0.1
Disclaimer
What we will discuss today
is being taught in 2 courses,
each is 5 days
So bear with me J
Service-Oriented Solution Logic
Agenda
1. Service Oriented Architecture (SOA)
2. Intro to Microservices Architecture
3. DevOps and Architecture
Service-Oriented Solution Logic
Section 1/3
Service Oriented Architecture (SOA)
Service Oriented Architecture Agenda
• SOA Strategic Goals and Benefits
• Service-Oriented Architectural Characteristics
• SOA basic building component: Service
• Fundamental Service Patterns
• Service Orientation Principles
• Building Mediums of SOA
• Service Design Patterns
• Enterprise Service Bus Patterns
• Orchestration Patterns
SOA Strategic Goals and Benefits
SOA Strategic Goals and Benefits
• Reduce IT burden
• Increase organizational agility
• Increase ROI
• Increase vendor diversification options
• Increase federation
• Increase intrinsic interoperability.
• Increase business and technology alignment
SOA Strategic Goals and Benefits…
• Reduce IT burden
• Increase organizational agility
• Increase ROI
• Increase vendor diversification options
• Increase federation
• Increase intrinsic interoperability.
• Increase business and technology alignment
SOA Strategic Goals and Benefits…
• Reduce IT burden
• Increase organizational agility
• Increase ROI
• Increase vendor diversification options
• Increase federation
• Increase intrinsic interoperability.
• Increase business and technology alignment
SOA Strategic Goals and Benefits…
• Reduce IT burden
• Increase organizational agility
• Increase ROI
• Increase vendor diversification options
• Increase federation
• Increase intrinsic interoperability.
• Increase business and technology alignment
SOA Strategic Goals and Benefits…
• Reduce IT burden
• Increase organizational agility
• Increase ROI
• Increase vendor diversification options
• Increase federation
• Increase intrinsic interoperability.
• Increase business and technology alignment
SOA Strategic Goals and Benefits…
• Reduce IT burden
• Increase organizational agility
• Increase ROI
• Increase vendor diversification options
• Increase federation
• Increase intrinsic interoperability.
• Increase business and technology alignment
SOA Strategic Goals and Benefits…
• Reduce IT burden
• Increase organizational agility
• Increase ROI
• Increase vendor diversification options
• Increase federation
• Increase intrinsic interoperability.
• Increase business and technology alignment
SOA Architecture Characteristics
SOA Architecture Characteristics
• Business Driven
• Vendor-neutral
• Enterprise-centric
• Composition-centric
SOA Architecture Characteristics…
• Business Driven
• Vendor-neutral
• Enterprise-centric
• Composition-centric
SOA Architecture Characteristics…
• Business Driven
• Vendor-neutral
• Enterprise-centric
• Composition-centric
SOA Architecture Characteristics…
• Business Driven
• Vendor-neutral
• Enterprise-centric
• Composition-centric
SOA basic building component: Service
SOA basic building component: Service
Three individuals, each capable of providing a distinct service
SOA basic building component: Service
Services are Collections of Capabilities
SOA basic building component: Service
Service contractService logic
Encapsulated resources
Fundamental Service Patterns
Fundamental Service Patterns
• Service
• Service composition
• Functional Context [Context Boundary]
• Agnostic/Non-Agnostic
• Service Layers Modeling
Fundamental Service Patterns
• Service
• Service composition
• Functional Context [Context Boundary]
• Agnostic/Non-Agnostic
• Service Layers Modeling
Fundamental Service Patterns
• Service
• Service composition
• Functional Context [Context Boundary]
• Agnostic/Non-Agnostic
• Service Layers Modeling
Fundamental Service Patterns
• Service
• Service composition
• Functional Context
• Agnostic/Non-Agnostic
• Service Layers Modeling
Fundamental Service Patterns
• Service
• Service composition
• Functional Context
• Agnostic/Non-Agnostic
• Service Layers Modeling
Service Orientation Principles
Service Orientation Principles
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Services within the same service inventory are
in compliance with the same contract design standards.
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Service contracts impose low consumer coupling requirements and are
themselves decoupled from their surrounding environment
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Service contracts only contain essential information and
information about services is limited to what is published in service
contracts.
Service Abstraction also plays a significant role in the positioning and
design of service compositions.
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Services contain and express agnostic logic (agnostic functional
Context) and can be positioned as reusable enterprise
resources/assets.
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Services exercise a high level of control over their underlying runtime
execution environment fostering design characteristics that increase a
service’s reliability and behavioral predictability.
Does that remind you of something!!
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Services minimize resource consumption by deferring the management
of state information when necessary.
Surrounding technology architecture to provide state management
delegation and state deferral options
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Services are supplemented with communicative metadata by which
they can be effectively discovered and interpreted.
Service Oriented Principles…
• Standardized service contract
• Service loose coupling
• Service abstraction
• Service reusability
• Service autonomy
• Service statelessness
• Service discoverability
• Service composability
Services are effective composition participants, regardless of the size and
complexity of the composition.
Building Mediums of SOA
Building Mediums of SOA
• Components
• Web Services
• REST services
Building Mediums of SOA
• Components
• Web Services
• REST services
Web Services
• Architecture:
• Service Contract
• WSDL definition
• XML definition
• WS-Policy definition
• Message Processing Logic
• Core service logic
• Discovery
• Design-time discovery
• Run-time discovery
• Industry Standards:
• SOAP
• WSDL
• UDDI
• XML Schema
• WS-*
• Coordination
• WS-Coordination
• Transaction
• WS-AtomicTransaction
• WS-BusinessActivity
• Orchestration
• WS-BPEL
• Addressing
• WS-Addressing
• Reliable Messaging
• WS-ReliableMessaging
• Policies
• WS-Policy
• Security
• WS-Security
Building Mediums of SOA
• Components
• Web Services
• REST services
Rest Services
Rest Services
• Service Contract
• Uniform contract
• HTTP Methods
• Architecture
• Resources
• HTTP Headers
• Caching
• Redirect
• Industry Standards
• XML
• JSON
• YAML
• …
Rest Services…
• RESTful Web Services Maturity Model:
• Richardson Maturity Model
https://martinfowler.com/articles/richardsonMaturityModel.htmlhttps://restfulapi.net/richardson-maturity-model/
REST Maturity Level 0
• RPC over HTTP
https://martinfowler.com/articles/richardsonMaturityModel.html
REST Maturity Level 0…
• RPC over HTTP
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /appointmentService
HTTP/1.1 [various other headers]
<openSlotRequest date = "2010-01-04" doctor = "mjones"/>
HTTP/1.1 200 OK
[various headers]
<openSlotList>
<slot start = "1400" end = "1450">
<doctor id = "mjones"/>
</slot>
<slot start = "1600" end = "1650">
<doctor id = "mjones"/>
</slot>
</openSlotList>
REST Maturity Level 0…
• RPC over HTTP
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /appointmentService
HTTP/1.1 [various other headers]
<appointmentRequest>
<slot doctor = "mjones" start = "1400" end = "1450"/>
<patient id = "jsmith"/>
</appointmentRequest>
HTTP/1.1 200 OK
[various headers]
<appointment>
<slot doctor = "mjones" start = "1400" end = "1450"/>
<patient id = "jsmith"/>
</appointment>
REST Maturity Level 0…
• RPC over HTTP
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /appointmentService
HTTP/1.1 [various other headers]
<appointmentRequest>
<slot doctor = "mjones" start = "1400" end = "1450"/>
<patient id = "jsmith"/>
</appointmentRequest> HTTP/1.1 200 OK
[various headers]
<appointmentRequestFailure>
<slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/>
<reason>Slot not available</reason>
</appointmentRequestFailure>
REST Maturity Level 1
• Resources
https://martinfowler.com/articles/richardsonMaturityModel.html
REST Maturity Level 1..
• Resources
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /doctors/mjones
HTTP/1.1 [various other headers]
<openSlotRequest date = "2010-01-04"/>
HTTP/1.1 200 OK
[various headers]
<openSlotList>
<slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/>
<slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/>
</openSlotList>
REST Maturity Level 1..
• Resources
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /slots/1234
HTTP/1.1 [various other headers]
<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
HTTP/1.1 200 OK
[various headers]
<appointment>
<slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/>
<patient id = "jsmith"/>
</appointment>
http://royalhope.nhs.uk/slots/1234/appointment
REST Maturity Level 2
• HTTP Verbs
https://martinfowler.com/articles/richardsonMaturityModel.html
Use HTTP verbs as closely as possible to
how they are used in HTTP itself
HTTP Verbs
How Many HTTP verbs you know?
HTTP Verbs / Request Methods
https://martinfowler.com/articles/richardsonMaturityModel.html
1. GET
• The GET method requests a representation of the specified resource. Requests using GET should only retrieve data and
should have no other effect
2. HEAD
• The HEAD method asks for a response identical to that of a GET request, but without the response body
3. POST
• The POST method requests that the server accept the entity enclosed in the request as a new subordinate of the web
resource identified by the URI
4. PUT
• The PUT method requests that the enclosed entity be stored under the supplied URI
5. DELETE
• The DELETE method deletes the specified resource
6. TRACE
• The TRACE method echoes the received request so that a client can see what (if any) changes or additions have been
made by intermediate servers.
7. OPTIONS
• The OPTIONS method returns the HTTP methods that the server supports for the specified URL
8. CONNECT
• The CONNECT method converts the request connection to a transparent TCP/IP tunnel
9. PATCH
• The PATCH method applies partial modifications to a resource
HTTP Verbs/ Request Methods
Post
• The POST method requests that the server accept the entity
enclosed in the request as a new subordinate of the web
resource identified by the URI
• The PUT method requests that the enclosed entity be stored
under the supplied URI
• Create • Create Or Update
Put
REST Maturity Level 2…
• HTTP Verbs and Codes
https://martinfowler.com/articles/richardsonMaturityModel.html
GET /doctors/mjones/slots?date=20100104&status=open HTTP/1.1
Host: royalhope.nhs.uk
HTTP/1.1 200 OK
[various headers]
<openSlotList>
<slot id = "1234" doctor = "mjones" start = "1400" end =
"1450"/>
<slot id = "5678" doctor = "mjones" start = "1600" end =
"1650"/>
</openSlotList>
REST Maturity Level 2…
• HTTP Verbs and Codes
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /slots/1234 HTTP/1.1
[various other headers]
<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
HTTP/1.1 201
Created Location: slots/1234/appointment
[various headers]
<appointment>
<slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/>
<patient id = "jsmith"/>
</appointment>
REST Maturity Level 2…
• HTTP Verbs and Codes
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /slots/1234 HTTP/1.1
[various other headers]
<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
HTTP/1.1 409
Conflict [various headers]
<openSlotList>
<slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/>
</openSlotList>
REST Maturity Level 3
• Hypermedia Controls
https://martinfowler.com/articles/richardsonMaturityModel.html
• Referred to under the ugly acronym of HATEOAS (Hypertext As The Engine Of Application State)
• It addresses the question of how to get from a list open slots to knowing what to do to book an
appointment
REST Maturity Level 3
• Hypermedia Controls
https://martinfowler.com/articles/richardsonMaturityModel.html
GET /doctors/mjones/slots?date=20100104&status=open
HTTP/1.1 Host: royalhope.nhs.uk
HTTP/1.1 200 OK
[various headers]
<openSlotList>
<slot id = "1234" doctor = "mjones" start = "1400" end = "1450">
<link rel = "/linkrels/slot/book" uri = "/slots/1234"/>
</slot>
<slot id = "5678" doctor = "mjones" start = "1600" end = "1650">
<link rel = "/linkrels/slot/book" uri = "/slots/5678"/>
</slot>
</openSlotList>
REST Maturity Level 3
• Hypermedia Controls
https://martinfowler.com/articles/richardsonMaturityModel.html
POST /slots/1234 HTTP/1.1
[various other headers]
<appointmentRequest>
<patient id = "jsmith"/>
</appointmentRequest>
HTTP/1.1 201
Created Location: http://royalhope.nhs.uk/slots/1234/appointment
[various headers]
<appointment>
<slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/>
<patient id = "jsmith"/>
<link rel = "/linkrels/appointment/cancel" uri = "/slots/1234/appointment"/>
<link rel = "/linkrels/appointment/addTest" uri = "/slots/1234/appointment/tests"/>
<link rel = "self" uri = "/slots/1234/appointment"/>
<link rel = "/linkrels/appointment/changeTime" uri = "/doctors/mjones/slots?date=20100104&status=open"/>
<link rel = "/linkrels/appointment/updateContactInfo" uri = "/patients/jsmith/contactInfo"/>
<link rel = "/linkrels/help" uri = "/help/appointment"/>
</appointment>
Richardson MM relationship to common
design techniques
Level 1 Tackles the question of handling complexity by using
divide and conquer, breaking a large service endpoint
down into multiple resources
Level 2 Introduces a standard set of verbs so that we handle
similar situations in the same way, removing unnecessary
variation
Level 3 Introduces discoverability, providing a way of making a
protocol more self-documenting
SOA Design & Architecture
Agenda
• Service Design Patterns
• Enterprise Service Bus Patterns
• Orchestration Patterns
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
How can a service express its capabilities independently of its
implementation?
The service contract is physically decoupled from its implementation https://patterns.arcitura.com/soa-patterns/design_patterns/decoupled_contract
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
How can direct consumer-to-implementation coupling be avoided?
Access to service logic is limited to the service contract, forcing
consumers to avoid implementation coupling
https://patterns.arcitura.com/soa-patterns/design_patterns/contract_centralization
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
https://patterns.arcitura.com/soa-patterns/design_patterns/logic_centralization
How can the misuse of redundant service logic be avoided?
Access to reusable functionality is limited to official agnostic services.
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
https://patterns.arcitura.com/soa-patterns/design_patterns/service_facade
How can a service accommodate changes to its contract or
implementation while allowing the core service logic to evolve
independently?
A service façade component is used to abstract a part of the service
architecture with negative coupling potential.
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
https://patterns.arcitura.com/soa-patterns/design_patterns/concurrent_contracts
How can a service facilitate multi-consumer coupling requirements and
abstraction concerns at the same time?
Multiple contracts can be created for a single service, each targeted at a
specific type of consumer
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
https://patterns.arcitura.com/soa-patterns/design_patterns/redundant_implementation
How can the reliability and availability of a service be increased?
Reusable services can be deployed via redundant implementations or
with failover support.
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
https://patterns.arcitura.com/soa-patterns/design_patterns/service_data_replication
How can service autonomy be preserved when services
require access to shared data sources?
Services can have their own dedicated databases with
replication to shared data sources
Service Design Patterns
• Decoupled Contract
• Contract Centralization
• Official Endpoint
• Service Facade
• Concurrent Contracts
• Redundant Implementation
• Service Data Replication
• Legacy Wrapper
How can wrapper services with non-standard contracts be prevented from
spreading indirect consumer-to-implementation coupling?
The non-standard wrapper service can be replaced by or further wrapped with a
standardized service contract that extracts, encapsulates, and possibly eliminates
legacy technical details from the contract
StranglerFigApplication :
https://martinfowler.com/bliki/StranglerFigApplication.html
https://patterns.arcitura.com/soa-patterns/design_patterns/legacy_wrapper
Enterprise Service Bus Patterns
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/compound_patterns/enterprise_service_bus
An enterprise service bus represents an environment designed to foster
sophisticated interconnectivity between services.
It establishes an intermediate layer of processing that can help overcome
common problems associated with reliability, scalability, and
communications disparity.
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
How can services interact with programs that communicate with
different data formats?
Intermediary data format transformation logic needs to be introduced in
order to dynamically translate one data format into another. https://patterns.arcitura.com/soa-patterns/design_patterns/data_format_transformation
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/data_model_transformation
How can services interact with programs that communicate with
different data Models?
A data transformation technology can be incorporated to convert data
between disparate schema structures.
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/protocol_bridging
How can a service exchange data with consumers that use different
communication protocols?
Bridging logic is introduced to enable communication between different
communication protocols by dynamically converting one protocol to
another at runtime.
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/intermediate_routing
How can dynamic runtime factors affect the path of a message?
Message paths can be dynamically determined through the use of
intermediary routing logic.
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/asynchronous_queuing
How can a service and its consumers accommodate isolated failures and
avoid unnecessarily locking resources?
A service can exchange messages with its consumers via an intermediary
buffer, allowing service and consumers to process messages
independently by remaining temporally decoupled.
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/reliable_messaging
How can services communicate reliably when implemented in an
unreliable environment?
An intermediate reliability mechanism is introduced into the inventory
architecture, ensuring that message delivery is guaranteed.
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/policy_centralization
How can policies be normalized and consistently enforced across
multiple services?
Global or domain-specific policies can be isolated and applied to multiple
services
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/rules_centralization
How can business rules be abstracted and centrally governed?
The storage and management of business rules are positioned within a
dedicated architectural extension from where they can be centrally
accessed and maintained.
Enterprise Service Bus Patterns
• Base Patterns
• Service Broker
• Data Format Transformation
• Data Model Transformation
• Protocol Bridging
• Intermediate Routing
• Asynchronous Queuing
• Extended Patterns
• Reliable Messaging
• Policy Centralization
• Rules Centralization
• Event-Driven Messaging
https://patterns.arcitura.com/soa-patterns/design_patterns/event_driven_messaging
How can service consumers be automatically notified of runtime service
events?
The consumer establishes itself as a subscriber of the service. The
service, in turn, automatically issues notifications of relevant events to
this and any of its subscribers.
Orchestration Patterns
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
An orchestration platform is dedicated to the effective maintenance and
execution of parent business process logic. Modern-day orchestration
environments are especially expected to support sophisticated and
complex service composition logic that can result in long-running
runtime activities
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
https://patterns.arcitura.com/soa-patterns/design_patterns/process_abstraction
How can non-agnostic process logic be separated and governed
independently?
A dedicated parent business process service layer is established to
support governance independence and the positioning of task services as
potential enterprise resources.
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
https://patterns.arcitura.com/soa-patterns/design_patterns/process_centralization
How can abstracted business process logic be centrally governed?
Logic representing numerous business processes can be deployed and
governed from a central location.
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
https://patterns.arcitura.com/soa-patterns/design_patterns/state_repository
How can service state data be persisted for extended periods without
consuming service runtime resources?
State data can be temporarily written to and then later retrieved from a
dedicated state repository.
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
https://patterns.arcitura.com/soa-patterns/design_patterns/compensating_service_transaction
How can composition runtime exceptions be consistently accommodated
without requiring services to lock resources?
Compensating routines are introduced, allowing runtime exceptions to
be resolved with the opportunity for reduced resource locking and
memory consumption
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
https://patterns.arcitura.com/soa-patterns/design_patterns/atomic_service_transaction
How can a transaction with rollback capability be propagated across
messaging-based services?
Runtime service activities can be wrapped in a transaction with rollback
feature that resets all actions and changes if the parent business task
cannot be successfully completed.
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
https://patterns.arcitura.com/soa-patterns/design_patterns/rules_centralization
How can business rules be abstracted and centrally governed?
he storage and management of business rules are positioned within a
dedicated architectural extension from where they can be centrally
accessed and maintained.
Orchestration Patterns
• Base Patterns
• Process Abstraction
• Process Centralization
• State Repository
• Compensating Service Transaction
• Extended Patterns
• Atomic Service Transaction
• Rules Centralization
• Data Model Transformation
How can services interact with programs that communicate with
different data formats
A data transformation technology can be incorporated to convert data
between disparate schema structures
https://patterns.arcitura.com/soa-patterns/design_patterns/data_model_transformation
Section 2/3
Intro to Microservices Architecture
Intro to Microservices Architecture
https://medium.com/@rmzoni/soa-vs-microservices-
349c9f1f5b41
SOA Vs Microservices Architecture Style
SOA Vs Microservices Architecture Style
• Maximizes application reusability
• A systematic change requires modifying the
monolith (Legacy Systems)
• DevOps and Continuous Delivery are not
mainstream
• Focused on business functionality reuse
• For communication it uses Enterprise Service
Bus — Monolith Structure
• Supports multiple message protocols
• Use of a common platform for all services
deployed to it
• Use of containers (such as Docker) is less
popular
• SOA services share the data storage
• Common governance and standards
• Decoupling
• A systematic change is to create a new service
• DevOps and Continuous Delivery as core value
• More importance on the concept of “bounded context” —
Products over Projects
• For communication uses less elaborate and simple
messaging systems
• Uses lightweight protocols such as HTTP, REST, and
Ligthweight Messaging
• Application Servers are not really used, it’s common to use
cloud platforms
• Containers work very well with microservices
• Each microservice can have an independent data storage
• Decentralized governance, with greater focus on teams
collaboration and freedom of choice
•
SOA Vs Microservices Architecture Style
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
Conway's Law…
104
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://medium.com/@nathankpeck/microservice-principles-smart-endpoints-and-dumb-pipes-5691d410700f
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://medium.com/@nathankpeck/microservice-principles-decentralized-governance-4cdbde2ff6ca
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://medium.com/@nathankpeck/microservice-principles-decentralized-data-management-4adaceea173f
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://martinfowler.com/articles/microservices.html
Microservices a definition of this new architectural term
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
https://www.thoughtworks.com/insights/blog/microservices-evolutionary-architecture
Section 3/3
DevOps and Architecture
Conway's Law
114
DevOps Ultimate Goal
115
Streamlining the complete Value Stream
from customer’s need to value
DevOps is Agile + Lean Management.
Lead Time
116
Technology Value Stream Map
117
Value Stream Efficiency = VAT / Lead Time = 49.5 days / 81 days = 61%
0 days 1 days 3 months 2 weeks 2 weeksNo Value Added Time (NVAT)
0.5 days 9 days 3 weeks 3 weeks 1 week 1 weekValue Added Time (VAT)
Iteration
Planning
Design
Code
Unit Test
Acceptance
Testing
Create
Training
Materials
Distribute
Release
Install
Release
45
points
45
points
270
points
270
points
270
points
Business
Unit
UsersIdea ValueValue
Lead Time
DevOps Technical Practices
Continuous Integration (CI)
Continuous Testing
DevOps Technical Practices
Continuous Delivery / Deployment (CD)
DevOps Technical Practices
DEV SITCI PROD
PRODSITCIDEV
DATACENTER
Platform blueprints define topology
for all application environments
Automated Provisioning
DevOps Technical Practices
Metrics & Monitoring
DevOps Technical Practices
Security
DevOps Technical Practices
Architect for Low-Risk Releases…
124ARCHITECTURAL ARCHETYPES
Architect for Low-Risk Releases
• Create a loosely coupled architecture:
• Tightly-Coupled Architecture; small
changes can result in large scale failures.
• In contrast, when we have an architecture
that enables small teams of developers to
independently implement, test, and
deploy code into production safely and
quickly.
• Having architecture that is loosely-
coupled means that services can update
in production independently, without
having to update other services.
125
“The canary release pattern (Source: Humble and Farley, Continuous Delivery, 263.)
Architectural Archetypes
127
asdasd
Architecture style Pros Cons
Monolithic V1
(All functionality in one application)
• Simple at first
• Low inter-process Latencies
• Single codebase, one deployment unit
• Resource-efficient at small scales
• Coordination overhead increases as
team grows
• Poor enforcement of modularity
• Poor scaling
• All-or nothing deploy(downtime,
failures)
• Long build times.
Monolithic V2
(Sets of monolithic tiers: “front end
presentations, application server, database
layer”)
• Simple at first
• Join queries are easy
• Single schema deployment
• Resource-efficient at small scales
• Tendency for increase coupling over
time
• Poor scaling and redundancy (all or
nothing, vertical only)
• Difficult to tune properly
• All-or-nothing schema management
Microservices
(Modular, independent, graph relationship
Vs. Tiers, isolated persistence)
• Each unit is simple
• Independent scaling and performance
• Independent testing and deployment
• Can optimally tune performance
(Caching, replication…)
• Many cooperating units
• Many small repos
• Requires more sophisticated tooling
and dependency management
• Network latencies
Monoliths Vs. Microservices
SOA and DevOps
Contradictory or Complementary
Mohamed Ismail Mostafa
SOA Certified Architect & Trainer
DevOps Transformation Lead
mmostafa@devopsi.io
Devopsi.io

More Related Content

What's hot (14)

DOCX
Web services
Diwakar Babu
 
PPT
Soa bpel-123
Priyanka Bansal
 
PDF
Putting the "Share" and "Point" back in SharePoint 2013
C/D/H Technology Consultants
 
PPTX
Service Oriented Architecture
Mohamed Zaytoun
 
PPTX
SOA - Unit 3 - SOA and Web Services
hamsa nandhini
 
PPTX
Service Oriented Architecture
Luqman Shareef
 
PPTX
SOA - Service Oriented Architecture ( Basic Concept & Principle )
DevTalk
 
PPTX
Concept of SOA
Sylvain Witmeyer
 
PPT
Web services and SOA
Subin Sugunan
 
PPT
Soa & Bpel With Web Sphere
lakshmi isukapally
 
PPTX
Kuali update v4 - mw
sarnoa
 
PPT
Enterprise Soa Concept
Terry Cho
 
PPTX
Service Oriented Computing
Aie Sa
 
PDF
Make SharePoint your Information Hub with Business Connectivity Services
brettlonsdale
 
Web services
Diwakar Babu
 
Soa bpel-123
Priyanka Bansal
 
Putting the "Share" and "Point" back in SharePoint 2013
C/D/H Technology Consultants
 
Service Oriented Architecture
Mohamed Zaytoun
 
SOA - Unit 3 - SOA and Web Services
hamsa nandhini
 
Service Oriented Architecture
Luqman Shareef
 
SOA - Service Oriented Architecture ( Basic Concept & Principle )
DevTalk
 
Concept of SOA
Sylvain Witmeyer
 
Web services and SOA
Subin Sugunan
 
Soa & Bpel With Web Sphere
lakshmi isukapally
 
Kuali update v4 - mw
sarnoa
 
Enterprise Soa Concept
Terry Cho
 
Service Oriented Computing
Aie Sa
 
Make SharePoint your Information Hub with Business Connectivity Services
brettlonsdale
 

Similar to SOA and DevOps v0.1 (20)

PDF
Soa Next Generation
Mohamed Zakarya Abdelgawad
 
ODP
Service oriented architecture 27 May 2014
Khawar Nehal [email protected]
 
PDF
SOA Next Generation V1.1
Mohamed Zakarya Abdelgawad
 
PDF
SOA unit-3-notes-Introduction to Service Oriented Architecture
Ramco Institute of Technology, Rajapalayam, Tamilnadu, India
 
PPTX
Service oriented architecture introduction
Vinod Wilson
 
PPTX
Introduction to SOA
saeed shargi ghazani
 
PPTX
E-Services course Chapter II ISI by Ettaieb Abdessattar
Abdessattar Ettaieb
 
PPTX
SOA Course - Next Generation
Mohamed Zakarya Abdelgawad
 
PPTX
Service Oriented Architecture (SOA)
Mazhar Ishaq Khokhar
 
PPT
SOA1-Background.ppt SOFTWARE ORIENTED SERVICES AND ARCHITECTURE
AnyaForger34
 
PPT
soa ppt v7.ppt
PrasannaVenkatesanVe1
 
PPTX
Service Oriented Architecture.pptx
siddharth246936
 
PPT
Service Analysis And Design
Rody Middelkoop
 
PPTX
UNIT2_Cloud Computing - Cloud Enabling Technologies
Sathishkumar Jaganathan
 
PDF
Ijcse13 05-08-058
vital vital
 
PDF
Ijcse13 05-08-058
vital vital
 
PPT
Basic concepts of soa
Venu Borra LION*
 
PPT
Unit III.ppt
Balasubramanian699229
 
Soa Next Generation
Mohamed Zakarya Abdelgawad
 
Service oriented architecture 27 May 2014
Khawar Nehal [email protected]
 
SOA Next Generation V1.1
Mohamed Zakarya Abdelgawad
 
SOA unit-3-notes-Introduction to Service Oriented Architecture
Ramco Institute of Technology, Rajapalayam, Tamilnadu, India
 
Service oriented architecture introduction
Vinod Wilson
 
Introduction to SOA
saeed shargi ghazani
 
E-Services course Chapter II ISI by Ettaieb Abdessattar
Abdessattar Ettaieb
 
SOA Course - Next Generation
Mohamed Zakarya Abdelgawad
 
Service Oriented Architecture (SOA)
Mazhar Ishaq Khokhar
 
SOA1-Background.ppt SOFTWARE ORIENTED SERVICES AND ARCHITECTURE
AnyaForger34
 
soa ppt v7.ppt
PrasannaVenkatesanVe1
 
Service Oriented Architecture.pptx
siddharth246936
 
Service Analysis And Design
Rody Middelkoop
 
UNIT2_Cloud Computing - Cloud Enabling Technologies
Sathishkumar Jaganathan
 
Ijcse13 05-08-058
vital vital
 
Ijcse13 05-08-058
vital vital
 
Basic concepts of soa
Venu Borra LION*
 
Unit III.ppt
Balasubramanian699229
 
Ad

Recently uploaded (20)

PDF
MAD Unit - 1 Introduction of Android IT Department
JappanMavani
 
PDF
Design Thinking basics for Engineers.pdf
CMR University
 
PPTX
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
DOC
MRRS Strength and Durability of Concrete
CivilMythili
 
PPTX
GitOps_Repo_Structure for begeinner(Scaffolindg)
DanialHabibi2
 
PDF
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
PPTX
Introduction to Neural Networks and Perceptron Learning Algorithm.pptx
Kayalvizhi A
 
PPTX
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
PPTX
Thermal runway and thermal stability.pptx
godow93766
 
PDF
Zilliz Cloud Demo for performance and scale
Zilliz
 
PPTX
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
PPTX
VITEEE 2026 Exam Details , Important Dates
SonaliSingh127098
 
PPTX
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
PPTX
Types of Bearing_Specifications_PPT.pptx
PranjulAgrahariAkash
 
PDF
PORTFOLIO Golam Kibria Khan — architect with a passion for thoughtful design...
MasumKhan59
 
PPTX
GitOps_Without_K8s_Training simple one without k8s
DanialHabibi2
 
PPTX
Element 11. ELECTRICITY safety and hazards
merrandomohandas
 
DOCX
CS-802 (A) BDH Lab manual IPS Academy Indore
thegodhimself05
 
PPTX
Day2 B2 Best.pptx
helenjenefa1
 
PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
MAD Unit - 1 Introduction of Android IT Department
JappanMavani
 
Design Thinking basics for Engineers.pdf
CMR University
 
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
MRRS Strength and Durability of Concrete
CivilMythili
 
GitOps_Repo_Structure for begeinner(Scaffolindg)
DanialHabibi2
 
International Journal of Information Technology Convergence and services (IJI...
ijitcsjournal4
 
Introduction to Neural Networks and Perceptron Learning Algorithm.pptx
Kayalvizhi A
 
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
Thermal runway and thermal stability.pptx
godow93766
 
Zilliz Cloud Demo for performance and scale
Zilliz
 
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
VITEEE 2026 Exam Details , Important Dates
SonaliSingh127098
 
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
Types of Bearing_Specifications_PPT.pptx
PranjulAgrahariAkash
 
PORTFOLIO Golam Kibria Khan — architect with a passion for thoughtful design...
MasumKhan59
 
GitOps_Without_K8s_Training simple one without k8s
DanialHabibi2
 
Element 11. ELECTRICITY safety and hazards
merrandomohandas
 
CS-802 (A) BDH Lab manual IPS Academy Indore
thegodhimself05
 
Day2 B2 Best.pptx
helenjenefa1
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
Ad

SOA and DevOps v0.1

  • 1. SOA and DevOps Contradictory or Complementary Mohamed Ismail Mostafa SOA Certified Architect & Trainer DevOps Transformation Lead [email protected] Devopsi.io V 0.1
  • 2. Disclaimer What we will discuss today is being taught in 2 courses, each is 5 days So bear with me J Service-Oriented Solution Logic
  • 3. Agenda 1. Service Oriented Architecture (SOA) 2. Intro to Microservices Architecture 3. DevOps and Architecture Service-Oriented Solution Logic
  • 4. Section 1/3 Service Oriented Architecture (SOA)
  • 5. Service Oriented Architecture Agenda • SOA Strategic Goals and Benefits • Service-Oriented Architectural Characteristics • SOA basic building component: Service • Fundamental Service Patterns • Service Orientation Principles • Building Mediums of SOA • Service Design Patterns • Enterprise Service Bus Patterns • Orchestration Patterns
  • 6. SOA Strategic Goals and Benefits
  • 7. SOA Strategic Goals and Benefits • Reduce IT burden • Increase organizational agility • Increase ROI • Increase vendor diversification options • Increase federation • Increase intrinsic interoperability. • Increase business and technology alignment
  • 8. SOA Strategic Goals and Benefits… • Reduce IT burden • Increase organizational agility • Increase ROI • Increase vendor diversification options • Increase federation • Increase intrinsic interoperability. • Increase business and technology alignment
  • 9. SOA Strategic Goals and Benefits… • Reduce IT burden • Increase organizational agility • Increase ROI • Increase vendor diversification options • Increase federation • Increase intrinsic interoperability. • Increase business and technology alignment
  • 10. SOA Strategic Goals and Benefits… • Reduce IT burden • Increase organizational agility • Increase ROI • Increase vendor diversification options • Increase federation • Increase intrinsic interoperability. • Increase business and technology alignment
  • 11. SOA Strategic Goals and Benefits… • Reduce IT burden • Increase organizational agility • Increase ROI • Increase vendor diversification options • Increase federation • Increase intrinsic interoperability. • Increase business and technology alignment
  • 12. SOA Strategic Goals and Benefits… • Reduce IT burden • Increase organizational agility • Increase ROI • Increase vendor diversification options • Increase federation • Increase intrinsic interoperability. • Increase business and technology alignment
  • 13. SOA Strategic Goals and Benefits… • Reduce IT burden • Increase organizational agility • Increase ROI • Increase vendor diversification options • Increase federation • Increase intrinsic interoperability. • Increase business and technology alignment
  • 15. SOA Architecture Characteristics • Business Driven • Vendor-neutral • Enterprise-centric • Composition-centric
  • 16. SOA Architecture Characteristics… • Business Driven • Vendor-neutral • Enterprise-centric • Composition-centric
  • 17. SOA Architecture Characteristics… • Business Driven • Vendor-neutral • Enterprise-centric • Composition-centric
  • 18. SOA Architecture Characteristics… • Business Driven • Vendor-neutral • Enterprise-centric • Composition-centric
  • 19. SOA basic building component: Service
  • 20. SOA basic building component: Service Three individuals, each capable of providing a distinct service
  • 21. SOA basic building component: Service Services are Collections of Capabilities
  • 22. SOA basic building component: Service Service contractService logic Encapsulated resources
  • 24. Fundamental Service Patterns • Service • Service composition • Functional Context [Context Boundary] • Agnostic/Non-Agnostic • Service Layers Modeling
  • 25. Fundamental Service Patterns • Service • Service composition • Functional Context [Context Boundary] • Agnostic/Non-Agnostic • Service Layers Modeling
  • 26. Fundamental Service Patterns • Service • Service composition • Functional Context [Context Boundary] • Agnostic/Non-Agnostic • Service Layers Modeling
  • 27. Fundamental Service Patterns • Service • Service composition • Functional Context • Agnostic/Non-Agnostic • Service Layers Modeling
  • 28. Fundamental Service Patterns • Service • Service composition • Functional Context • Agnostic/Non-Agnostic • Service Layers Modeling
  • 30. Service Orientation Principles • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability
  • 31. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Services within the same service inventory are in compliance with the same contract design standards.
  • 32. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Service contracts impose low consumer coupling requirements and are themselves decoupled from their surrounding environment
  • 33. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Service contracts only contain essential information and information about services is limited to what is published in service contracts. Service Abstraction also plays a significant role in the positioning and design of service compositions.
  • 34. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Services contain and express agnostic logic (agnostic functional Context) and can be positioned as reusable enterprise resources/assets.
  • 35. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Services exercise a high level of control over their underlying runtime execution environment fostering design characteristics that increase a service’s reliability and behavioral predictability. Does that remind you of something!!
  • 36. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Services minimize resource consumption by deferring the management of state information when necessary. Surrounding technology architecture to provide state management delegation and state deferral options
  • 37. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Services are supplemented with communicative metadata by which they can be effectively discovered and interpreted.
  • 38. Service Oriented Principles… • Standardized service contract • Service loose coupling • Service abstraction • Service reusability • Service autonomy • Service statelessness • Service discoverability • Service composability Services are effective composition participants, regardless of the size and complexity of the composition.
  • 40. Building Mediums of SOA • Components • Web Services • REST services
  • 41. Building Mediums of SOA • Components • Web Services • REST services
  • 42. Web Services • Architecture: • Service Contract • WSDL definition • XML definition • WS-Policy definition • Message Processing Logic • Core service logic • Discovery • Design-time discovery • Run-time discovery • Industry Standards: • SOAP • WSDL • UDDI • XML Schema • WS-* • Coordination • WS-Coordination • Transaction • WS-AtomicTransaction • WS-BusinessActivity • Orchestration • WS-BPEL • Addressing • WS-Addressing • Reliable Messaging • WS-ReliableMessaging • Policies • WS-Policy • Security • WS-Security
  • 43. Building Mediums of SOA • Components • Web Services • REST services
  • 45. Rest Services • Service Contract • Uniform contract • HTTP Methods • Architecture • Resources • HTTP Headers • Caching • Redirect • Industry Standards • XML • JSON • YAML • …
  • 46. Rest Services… • RESTful Web Services Maturity Model: • Richardson Maturity Model https://martinfowler.com/articles/richardsonMaturityModel.htmlhttps://restfulapi.net/richardson-maturity-model/
  • 47. REST Maturity Level 0 • RPC over HTTP https://martinfowler.com/articles/richardsonMaturityModel.html
  • 48. REST Maturity Level 0… • RPC over HTTP https://martinfowler.com/articles/richardsonMaturityModel.html POST /appointmentService HTTP/1.1 [various other headers] <openSlotRequest date = "2010-01-04" doctor = "mjones"/> HTTP/1.1 200 OK [various headers] <openSlotList> <slot start = "1400" end = "1450"> <doctor id = "mjones"/> </slot> <slot start = "1600" end = "1650"> <doctor id = "mjones"/> </slot> </openSlotList>
  • 49. REST Maturity Level 0… • RPC over HTTP https://martinfowler.com/articles/richardsonMaturityModel.html POST /appointmentService HTTP/1.1 [various other headers] <appointmentRequest> <slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointmentRequest> HTTP/1.1 200 OK [various headers] <appointment> <slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointment>
  • 50. REST Maturity Level 0… • RPC over HTTP https://martinfowler.com/articles/richardsonMaturityModel.html POST /appointmentService HTTP/1.1 [various other headers] <appointmentRequest> <slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointmentRequest> HTTP/1.1 200 OK [various headers] <appointmentRequestFailure> <slot doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> <reason>Slot not available</reason> </appointmentRequestFailure>
  • 51. REST Maturity Level 1 • Resources https://martinfowler.com/articles/richardsonMaturityModel.html
  • 52. REST Maturity Level 1.. • Resources https://martinfowler.com/articles/richardsonMaturityModel.html POST /doctors/mjones HTTP/1.1 [various other headers] <openSlotRequest date = "2010-01-04"/> HTTP/1.1 200 OK [various headers] <openSlotList> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openSlotList>
  • 53. REST Maturity Level 1.. • Resources https://martinfowler.com/articles/richardsonMaturityModel.html POST /slots/1234 HTTP/1.1 [various other headers] <appointmentRequest> <patient id = "jsmith"/> </appointmentRequest> HTTP/1.1 200 OK [various headers] <appointment> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointment> http://royalhope.nhs.uk/slots/1234/appointment
  • 54. REST Maturity Level 2 • HTTP Verbs https://martinfowler.com/articles/richardsonMaturityModel.html Use HTTP verbs as closely as possible to how they are used in HTTP itself
  • 55. HTTP Verbs How Many HTTP verbs you know?
  • 56. HTTP Verbs / Request Methods https://martinfowler.com/articles/richardsonMaturityModel.html 1. GET • The GET method requests a representation of the specified resource. Requests using GET should only retrieve data and should have no other effect 2. HEAD • The HEAD method asks for a response identical to that of a GET request, but without the response body 3. POST • The POST method requests that the server accept the entity enclosed in the request as a new subordinate of the web resource identified by the URI 4. PUT • The PUT method requests that the enclosed entity be stored under the supplied URI 5. DELETE • The DELETE method deletes the specified resource 6. TRACE • The TRACE method echoes the received request so that a client can see what (if any) changes or additions have been made by intermediate servers. 7. OPTIONS • The OPTIONS method returns the HTTP methods that the server supports for the specified URL 8. CONNECT • The CONNECT method converts the request connection to a transparent TCP/IP tunnel 9. PATCH • The PATCH method applies partial modifications to a resource
  • 57. HTTP Verbs/ Request Methods Post • The POST method requests that the server accept the entity enclosed in the request as a new subordinate of the web resource identified by the URI • The PUT method requests that the enclosed entity be stored under the supplied URI • Create • Create Or Update Put
  • 58. REST Maturity Level 2… • HTTP Verbs and Codes https://martinfowler.com/articles/richardsonMaturityModel.html GET /doctors/mjones/slots?date=20100104&status=open HTTP/1.1 Host: royalhope.nhs.uk HTTP/1.1 200 OK [various headers] <openSlotList> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openSlotList>
  • 59. REST Maturity Level 2… • HTTP Verbs and Codes https://martinfowler.com/articles/richardsonMaturityModel.html POST /slots/1234 HTTP/1.1 [various other headers] <appointmentRequest> <patient id = "jsmith"/> </appointmentRequest> HTTP/1.1 201 Created Location: slots/1234/appointment [various headers] <appointment> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> </appointment>
  • 60. REST Maturity Level 2… • HTTP Verbs and Codes https://martinfowler.com/articles/richardsonMaturityModel.html POST /slots/1234 HTTP/1.1 [various other headers] <appointmentRequest> <patient id = "jsmith"/> </appointmentRequest> HTTP/1.1 409 Conflict [various headers] <openSlotList> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openSlotList>
  • 61. REST Maturity Level 3 • Hypermedia Controls https://martinfowler.com/articles/richardsonMaturityModel.html • Referred to under the ugly acronym of HATEOAS (Hypertext As The Engine Of Application State) • It addresses the question of how to get from a list open slots to knowing what to do to book an appointment
  • 62. REST Maturity Level 3 • Hypermedia Controls https://martinfowler.com/articles/richardsonMaturityModel.html GET /doctors/mjones/slots?date=20100104&status=open HTTP/1.1 Host: royalhope.nhs.uk HTTP/1.1 200 OK [various headers] <openSlotList> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"> <link rel = "/linkrels/slot/book" uri = "/slots/1234"/> </slot> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"> <link rel = "/linkrels/slot/book" uri = "/slots/5678"/> </slot> </openSlotList>
  • 63. REST Maturity Level 3 • Hypermedia Controls https://martinfowler.com/articles/richardsonMaturityModel.html POST /slots/1234 HTTP/1.1 [various other headers] <appointmentRequest> <patient id = "jsmith"/> </appointmentRequest> HTTP/1.1 201 Created Location: http://royalhope.nhs.uk/slots/1234/appointment [various headers] <appointment> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <patient id = "jsmith"/> <link rel = "/linkrels/appointment/cancel" uri = "/slots/1234/appointment"/> <link rel = "/linkrels/appointment/addTest" uri = "/slots/1234/appointment/tests"/> <link rel = "self" uri = "/slots/1234/appointment"/> <link rel = "/linkrels/appointment/changeTime" uri = "/doctors/mjones/slots?date=20100104&status=open"/> <link rel = "/linkrels/appointment/updateContactInfo" uri = "/patients/jsmith/contactInfo"/> <link rel = "/linkrels/help" uri = "/help/appointment"/> </appointment>
  • 64. Richardson MM relationship to common design techniques Level 1 Tackles the question of handling complexity by using divide and conquer, breaking a large service endpoint down into multiple resources Level 2 Introduces a standard set of verbs so that we handle similar situations in the same way, removing unnecessary variation Level 3 Introduces discoverability, providing a way of making a protocol more self-documenting
  • 65. SOA Design & Architecture
  • 66. Agenda • Service Design Patterns • Enterprise Service Bus Patterns • Orchestration Patterns
  • 67. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper
  • 68. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper How can a service express its capabilities independently of its implementation? The service contract is physically decoupled from its implementation https://patterns.arcitura.com/soa-patterns/design_patterns/decoupled_contract
  • 69. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper How can direct consumer-to-implementation coupling be avoided? Access to service logic is limited to the service contract, forcing consumers to avoid implementation coupling https://patterns.arcitura.com/soa-patterns/design_patterns/contract_centralization
  • 70. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper https://patterns.arcitura.com/soa-patterns/design_patterns/logic_centralization How can the misuse of redundant service logic be avoided? Access to reusable functionality is limited to official agnostic services.
  • 71. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper https://patterns.arcitura.com/soa-patterns/design_patterns/service_facade How can a service accommodate changes to its contract or implementation while allowing the core service logic to evolve independently? A service façade component is used to abstract a part of the service architecture with negative coupling potential.
  • 72. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper https://patterns.arcitura.com/soa-patterns/design_patterns/concurrent_contracts How can a service facilitate multi-consumer coupling requirements and abstraction concerns at the same time? Multiple contracts can be created for a single service, each targeted at a specific type of consumer
  • 73. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper https://patterns.arcitura.com/soa-patterns/design_patterns/redundant_implementation How can the reliability and availability of a service be increased? Reusable services can be deployed via redundant implementations or with failover support.
  • 74. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper https://patterns.arcitura.com/soa-patterns/design_patterns/service_data_replication How can service autonomy be preserved when services require access to shared data sources? Services can have their own dedicated databases with replication to shared data sources
  • 75. Service Design Patterns • Decoupled Contract • Contract Centralization • Official Endpoint • Service Facade • Concurrent Contracts • Redundant Implementation • Service Data Replication • Legacy Wrapper How can wrapper services with non-standard contracts be prevented from spreading indirect consumer-to-implementation coupling? The non-standard wrapper service can be replaced by or further wrapped with a standardized service contract that extracts, encapsulates, and possibly eliminates legacy technical details from the contract StranglerFigApplication : https://martinfowler.com/bliki/StranglerFigApplication.html https://patterns.arcitura.com/soa-patterns/design_patterns/legacy_wrapper
  • 77. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/compound_patterns/enterprise_service_bus An enterprise service bus represents an environment designed to foster sophisticated interconnectivity between services. It establishes an intermediate layer of processing that can help overcome common problems associated with reliability, scalability, and communications disparity.
  • 78. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging How can services interact with programs that communicate with different data formats? Intermediary data format transformation logic needs to be introduced in order to dynamically translate one data format into another. https://patterns.arcitura.com/soa-patterns/design_patterns/data_format_transformation
  • 79. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/data_model_transformation How can services interact with programs that communicate with different data Models? A data transformation technology can be incorporated to convert data between disparate schema structures.
  • 80. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/protocol_bridging How can a service exchange data with consumers that use different communication protocols? Bridging logic is introduced to enable communication between different communication protocols by dynamically converting one protocol to another at runtime.
  • 81. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/intermediate_routing How can dynamic runtime factors affect the path of a message? Message paths can be dynamically determined through the use of intermediary routing logic.
  • 82. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/asynchronous_queuing How can a service and its consumers accommodate isolated failures and avoid unnecessarily locking resources? A service can exchange messages with its consumers via an intermediary buffer, allowing service and consumers to process messages independently by remaining temporally decoupled.
  • 83. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/reliable_messaging How can services communicate reliably when implemented in an unreliable environment? An intermediate reliability mechanism is introduced into the inventory architecture, ensuring that message delivery is guaranteed.
  • 84. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/policy_centralization How can policies be normalized and consistently enforced across multiple services? Global or domain-specific policies can be isolated and applied to multiple services
  • 85. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/rules_centralization How can business rules be abstracted and centrally governed? The storage and management of business rules are positioned within a dedicated architectural extension from where they can be centrally accessed and maintained.
  • 86. Enterprise Service Bus Patterns • Base Patterns • Service Broker • Data Format Transformation • Data Model Transformation • Protocol Bridging • Intermediate Routing • Asynchronous Queuing • Extended Patterns • Reliable Messaging • Policy Centralization • Rules Centralization • Event-Driven Messaging https://patterns.arcitura.com/soa-patterns/design_patterns/event_driven_messaging How can service consumers be automatically notified of runtime service events? The consumer establishes itself as a subscriber of the service. The service, in turn, automatically issues notifications of relevant events to this and any of its subscribers.
  • 88. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation An orchestration platform is dedicated to the effective maintenance and execution of parent business process logic. Modern-day orchestration environments are especially expected to support sophisticated and complex service composition logic that can result in long-running runtime activities
  • 89. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation https://patterns.arcitura.com/soa-patterns/design_patterns/process_abstraction How can non-agnostic process logic be separated and governed independently? A dedicated parent business process service layer is established to support governance independence and the positioning of task services as potential enterprise resources.
  • 90. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation https://patterns.arcitura.com/soa-patterns/design_patterns/process_centralization How can abstracted business process logic be centrally governed? Logic representing numerous business processes can be deployed and governed from a central location.
  • 91. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation https://patterns.arcitura.com/soa-patterns/design_patterns/state_repository How can service state data be persisted for extended periods without consuming service runtime resources? State data can be temporarily written to and then later retrieved from a dedicated state repository.
  • 92. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation https://patterns.arcitura.com/soa-patterns/design_patterns/compensating_service_transaction How can composition runtime exceptions be consistently accommodated without requiring services to lock resources? Compensating routines are introduced, allowing runtime exceptions to be resolved with the opportunity for reduced resource locking and memory consumption
  • 93. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation https://patterns.arcitura.com/soa-patterns/design_patterns/atomic_service_transaction How can a transaction with rollback capability be propagated across messaging-based services? Runtime service activities can be wrapped in a transaction with rollback feature that resets all actions and changes if the parent business task cannot be successfully completed.
  • 94. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation https://patterns.arcitura.com/soa-patterns/design_patterns/rules_centralization How can business rules be abstracted and centrally governed? he storage and management of business rules are positioned within a dedicated architectural extension from where they can be centrally accessed and maintained.
  • 95. Orchestration Patterns • Base Patterns • Process Abstraction • Process Centralization • State Repository • Compensating Service Transaction • Extended Patterns • Atomic Service Transaction • Rules Centralization • Data Model Transformation How can services interact with programs that communicate with different data formats A data transformation technology can be incorporated to convert data between disparate schema structures https://patterns.arcitura.com/soa-patterns/design_patterns/data_model_transformation
  • 96. Section 2/3 Intro to Microservices Architecture
  • 97. Intro to Microservices Architecture
  • 99. SOA Vs Microservices Architecture Style
  • 100. • Maximizes application reusability • A systematic change requires modifying the monolith (Legacy Systems) • DevOps and Continuous Delivery are not mainstream • Focused on business functionality reuse • For communication it uses Enterprise Service Bus — Monolith Structure • Supports multiple message protocols • Use of a common platform for all services deployed to it • Use of containers (such as Docker) is less popular • SOA services share the data storage • Common governance and standards • Decoupling • A systematic change is to create a new service • DevOps and Continuous Delivery as core value • More importance on the concept of “bounded context” — Products over Projects • For communication uses less elaborate and simple messaging systems • Uses lightweight protocols such as HTTP, REST, and Ligthweight Messaging • Application Servers are not really used, it’s common to use cloud platforms • Containers work very well with microservices • Each microservice can have an independent data storage • Decentralized governance, with greater focus on teams collaboration and freedom of choice • SOA Vs Microservices Architecture Style
  • 101. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design
  • 102. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design
  • 103. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design
  • 105. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design
  • 106. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design https://medium.com/@nathankpeck/microservice-principles-smart-endpoints-and-dumb-pipes-5691d410700f
  • 107. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design https://medium.com/@nathankpeck/microservice-principles-decentralized-governance-4cdbde2ff6ca
  • 108. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design
  • 109. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design https://medium.com/@nathankpeck/microservice-principles-decentralized-data-management-4adaceea173f
  • 110. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design
  • 111. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design
  • 112. https://martinfowler.com/articles/microservices.html Microservices a definition of this new architectural term • Componentization via Services • Organized around Business Capabilities • Products not Projects • Smart endpoints and dumb pipes • Decentralized Governance • Decentralized Data Management • Infrastructure Automation • Design for failure • Evolutionary Design https://www.thoughtworks.com/insights/blog/microservices-evolutionary-architecture
  • 113. Section 3/3 DevOps and Architecture
  • 115. DevOps Ultimate Goal 115 Streamlining the complete Value Stream from customer’s need to value DevOps is Agile + Lean Management.
  • 117. Technology Value Stream Map 117 Value Stream Efficiency = VAT / Lead Time = 49.5 days / 81 days = 61% 0 days 1 days 3 months 2 weeks 2 weeksNo Value Added Time (NVAT) 0.5 days 9 days 3 weeks 3 weeks 1 week 1 weekValue Added Time (VAT) Iteration Planning Design Code Unit Test Acceptance Testing Create Training Materials Distribute Release Install Release 45 points 45 points 270 points 270 points 270 points Business Unit UsersIdea ValueValue Lead Time
  • 120. Continuous Delivery / Deployment (CD) DevOps Technical Practices
  • 121. DEV SITCI PROD PRODSITCIDEV DATACENTER Platform blueprints define topology for all application environments Automated Provisioning DevOps Technical Practices
  • 122. Metrics & Monitoring DevOps Technical Practices
  • 124. Architect for Low-Risk Releases… 124ARCHITECTURAL ARCHETYPES
  • 125. Architect for Low-Risk Releases • Create a loosely coupled architecture: • Tightly-Coupled Architecture; small changes can result in large scale failures. • In contrast, when we have an architecture that enables small teams of developers to independently implement, test, and deploy code into production safely and quickly. • Having architecture that is loosely- coupled means that services can update in production independently, without having to update other services. 125
  • 126. “The canary release pattern (Source: Humble and Farley, Continuous Delivery, 263.)
  • 127. Architectural Archetypes 127 asdasd Architecture style Pros Cons Monolithic V1 (All functionality in one application) • Simple at first • Low inter-process Latencies • Single codebase, one deployment unit • Resource-efficient at small scales • Coordination overhead increases as team grows • Poor enforcement of modularity • Poor scaling • All-or nothing deploy(downtime, failures) • Long build times. Monolithic V2 (Sets of monolithic tiers: “front end presentations, application server, database layer”) • Simple at first • Join queries are easy • Single schema deployment • Resource-efficient at small scales • Tendency for increase coupling over time • Poor scaling and redundancy (all or nothing, vertical only) • Difficult to tune properly • All-or-nothing schema management Microservices (Modular, independent, graph relationship Vs. Tiers, isolated persistence) • Each unit is simple • Independent scaling and performance • Independent testing and deployment • Can optimally tune performance (Caching, replication…) • Many cooperating units • Many small repos • Requires more sophisticated tooling and dependency management • Network latencies Monoliths Vs. Microservices
  • 128. SOA and DevOps Contradictory or Complementary Mohamed Ismail Mostafa SOA Certified Architect & Trainer DevOps Transformation Lead [email protected] Devopsi.io