Cooking soa

18
Cooking SOA Aleksei Kornev

description

 

Transcript of Cooking soa

Page 1: Cooking soa

Cooking SOAAleksei Kornev

Page 2: Cooking soa

What is SOA

Service-oriented architecture (SOA) is a software design and software architecture design pattern based on discrete pieces of software that provide application functionality as services, known as Service-orientation. A service is a self-contained logical representation of a repeatable function or activity.Services can be combined by other software applications that together, provide the complete functionality of a large software application. The purpose of SOA is to allow easy cooperation of a large number of computers that are connected over a network. Every computer can run an arbitrary number of services, and each service is built in a way that ensures that the service can exchange information with any other service within the reach of the network without human interaction and without the need to make changes to the underlying program itself.

Page 3: Cooking soa

Pros & Cons

++ Modularity+ Flexibility+ Ability to scale

-- Difficult development(integration, debug, etc)- Difficult deployment- Difficult support

Page 4: Cooking soa

Pros & Cons

Rule#1Think twice before you

choose SOA

Page 5: Cooking soa

Service ingredients

Communication layer

Business logic layer

Operation layer

Page 6: Cooking soa

Communication layer

Page 7: Cooking soa

Communication layer

● Elastic and reliable discovery - should handle nodes brought up andshut down transparently and not be a SPOF itself● Support for N-N topology of client and server instances● Disconnect detection and transparent reconnects● Fault tolerance - for example, by retries to remaining instances where

called instance goes down● Clients backoff built-in - i.e., clients should not overload servers when

load spikes - as far as possible● Configurable load distribution - i.e., which server instance to call for this

specific request● Configurable networking layer - keepalives & heartbeats, timeouts,

connection pools etc.)

Page 8: Cooking soa

Communication layer

Talkbits architecture

Page 9: Cooking soa

Communication layer

Rule#2Don’t choose Thrift, Protobuff, etc if you are not going to have services on

different languages

Page 10: Cooking soa

Business logic layer

Page 11: Cooking soa

Business logic layer

Talkbits service architecture

Page 12: Cooking soa

Communication layer

Page 13: Cooking soa

Business logic layer

Rule#3Make services corpuscular!

Page 14: Cooking soa

Business logic layer

Rule#4If you develop SOA application from

scratch implement features not services!

Page 15: Cooking soa

Operation layer

Page 16: Cooking soa

Operation layer

Rule#5Before develop your first services

think how you are going lunch, configure, monitor, deploy services.

Page 17: Cooking soa

Operation layer

Talkbits operation

Business logic

framework

demonization metrics logging finagle conf

● One way to configure service, log, metricks● One way to lunch service● One way to package and deploy