Upload
shamil-nunhuck
View
115
Download
1
Embed Size (px)
Citation preview
What is a service?“a mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description. “
OASIS Reference Model for Service Oriented Architecture
What is a service?“enable access to one or more capabilities”• Delegated functionality to specialists (no general specialist)
“access is provided using a prescribed interface ”• Enforces a distributed architecture, communicating by:
• REST, SOAP, AMQP, MSQM, JMS, etc..
” is exercised consistent with constraints and policies as specified by the service description. ”• Abides by the Service Contract
Service contract
Agreement between a service and its consumer that specifies inbound and outbound data as well as the format.
Service contractWe have to consider:
• Service availability• Service responsiveness• Circuit breaker pattern (if service is not in-memory/remote)
• Versioning (heterogeneous or homogeneous) • Security (e.g. authentication)• Transactions (ACID compliance)
Example• Sys AV Scanner• Enables access to a virus scanning service• Access is provided using REST• Responds using JSON
• Sys understands the communication protocol “inbound data”• Sys understands the response “outbound data”
Advantages• Scalable• Decoupled• Better control over development, testing and deployment• Easier maintenance
• and theoretically is costs less for the business [once it’s up and running]
Heterogeneous & Homogeneous VersioningHomogeneous versioning uses version numbers across the same contract.
Heterogeneous versioning uses different types of the same contract.
Disadvantages• Increased complexity• Increased cost• Service contracts can be difficult• What happens if a service I need to connect to is no longer available?
Characteristics: TaxonomyTwo types of classification:• Service Type
Type of role the service plays in the overall architecture• Business Area
Type of role the service plays in the business application
Characteristics: GranularityMicroservices are small, fine-grained services. They do one thing, and they do it well.
• Granularity affects performance!• Service Contract overhead can add 100ms to the total response time
• Can impede ACID compliance if services are too granular
Characteristics: Choreography / OrchestrationOrchestration: coordination with a central mediatorChoreography: coordination without a central mediator
Microservices favour orchestration over choreography
Too much choreography can lead to higher efferent coupling• The degree to which one component is dependent on other components to
complete a single business request
Characteristics: Choreography / Orchestration
Don’t be afraid to redefine services in a more coarsely-grained manner!
Characteristics: TopologyMicroservices have an API layer• Mediator in service orchestration• Server-access façade• Introduces abstraction • Context awareness• Each service can share or have its
own access to the infrastructure layer.
Capabilities: Heterogeneous InteroperabilityThe ability to integrate different programming languages and platforms
• Microservices support protocol-aware-heteronegeous-interopability• Protocol between API layer and service MUST be the same
• SOA also supports protocol-agnostic-heterogeneous-interopability• Hallelujah for that protocol-transforming middleware
Contract decoupling• Allow services to consume a message that does not abide to the
service contract
• Message Transformation• Convert XML to JSON
• Message Enhancement• Normalise date/time format
Mediation / Routing• Provides the ability to mediate (discover services) and route a request
• A service registry typically acts as the central service configuration repository