[wso2con eu 2017] creating composite services using ballerina

52
Senior Technical Lead, WSO2 Creating Composite Services Using Ballerina Isuru Udana

Upload: wso2-inc

Post on 21-Jan-2018

159 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Senior Technical Lead, WSO2

Creating Composite Services Using Ballerina

Isuru Udana

Page 2: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

• Atomic– Indivisible, fine-grained, no reuse of other services

• Composite– Divisible, coarse-grained, reusing other services

Services

Page 3: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

• Most real-world business use cases cannot be satisfied with atomic services

• Reuse of existing services

Why Composite Services?

Page 4: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Healthcare Service ChainingReal-World Scenarios

Page 5: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Composite Services in MSA

5

Page 6: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Microservices Layered ArchitectureConsumer 1

API Service 1 API Service 2 API Service 3 API Service 4

ConsumersConsumer 2 Consumer 3

Service 6 Service 7 Service 8 Service 9

Service 1 Service 2 Service 3 Service 4 Service 5 Proprietary & Legacy

Systems

Web API / SaaS

API Services/Edge Services

Composite Service/Integration Services

Core Services/Atomic Services

Page 7: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Microservices Layered ArchitectureCore/Atomic Microservices

• Fine-grained self-contained services

Page 8: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Microservices Layered ArchitectureComposite Microservices

• ESB in SOA => Composite Microservices in MSA

Page 9: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Building Composite Microservices

Frameworks Based on General Purpose Languages

• Not designed with suitable abstractions for network interactions

• Developers spend more time on building service interactions

Page 10: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Building Composite Microservices

Conventional ESBs

• ESB architecture not fully compatible with MSA principles

Page 11: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

The Solution is Ballerina!

11

Page 12: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Ballerina

• Parallel programming language for networked applications

• Designed for network interactions with JSON/XML/SQL and HTTP/JMS/File/WebSockets

• Serverless and container friendly

Page 13: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Building Composite Services with BallerinaKey Functionality

• Transformation• Routing• Parallel processing

Page 14: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Transformation

Page 15: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Transformation

Transformation Logic

Structs

Page 16: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Transformation

Transform Operation

Page 17: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

TransformationSource Target

Mapping

Operators

Page 18: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Routing

Page 19: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

RoutingContent Based

Get Payload

RoutingLogic

Page 20: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

RoutingHeader Based

RoutingLogic

Get Header

Page 21: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Parallel Processing

Page 22: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Parallel ProcessingWorkers

Page 23: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Parallel ProcessingWorkers

Page 24: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Building Composite Services with BallerinaServices

• Simple Atomic Service• Composite Services

– Simple composite service– Service chaining– Service orchestration

Page 25: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Simple Atomic Service Service Annotations

Protocol

Resource

Resource Annotations

Page 26: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Simple Atomic Service

Protocol

Resource

Resource Annotations

Page 27: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Simple Composite Service

Page 28: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Simple Composite Service

Logic

Downstream Services

Page 29: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Simple Composite ServiceDownstream

Services

Logic

Page 30: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Service Chaining

Page 31: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Service Chaining

Invoke Service1

Invoke Service2

Page 32: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Service Chaining

Invoke Service1

Invoke Service2

Construct Payload

Construct Payload

Page 33: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Service Chaining

Construct Payload

Invoke Service 1

Page 34: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Service ChainingConstructPayload

Invoke Service 2

Page 35: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Service Orchestration ScenarioOnline Vehicle Revenue License Service

Can be invoked at the

same time

Page 36: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Service Structure Service Path

Certificate ValidationResource

LicenseResource

Resource Path

Page 37: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

License Resource

ValidateCerts

Do Payment

Call LicenseIssuer

Respond

Page 38: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Certificate Validation Function

Workers

Fork

Join

Page 39: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Certificate Validation Function

Workers

MultipleReturnValues

Page 40: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Certificate Validation Function

Workers

Page 41: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Certificate Validation Function

Validation Logic Multiple

ReturnValues

Page 42: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Function Invocation

FunctionInvocation

FunctionInvocation

Page 43: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Function InvocationMultipleReturn Values

FunctionInvocation

Page 44: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

License Resource

ValidateCerts

Do Payment

Call LicenseIssuer

Respond

Page 45: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Build Payment Request

Page 46: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Invoke Payment Service

Page 47: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

License Resource

ValidateCerts

Do Payment

Call LicenseIssuer

Respond

Page 48: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Invoke License Issuer Service

Page 49: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

License Resource

ValidateCerts

Do Payment

Call LicenseIssuer

Respond

Page 50: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Respond to Client

Page 51: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

Conclusion

● Introduction to composite services● Composite services in Microservices architecture● Building Composite Services with Ballerina

Page 52: [WSO2Con EU 2017] Creating Composite Services Using Ballerina

wso2.com

52