Microservices (eDR PSD)

22
Microservices A brief introduction to services and microservices

Transcript of Microservices (eDR PSD)

MicroservicesA brief introduction to services and microservices

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?

Microservices

Characteristics&

Capabilities

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: TaxonomyMany functional services and private-shared infrastructure services

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: Application scope• Microservices are suited to well-partitioned systems

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

What else can’t Microservices do?

Contract decouplingMediation / Routing

Protocol Transformation

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

Protocol Transformation• Enables protocol agnostic heterogenous interopability• Potentially allows service optimisation• Service A can only communicate in SOAP, Service B is much faster at accepting

requests in REST