SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Service-oriented
  architecture


 @H2Russia internal workshop
http://geek-and-poke.com
Monolithic Rails
 applications
        End user




      Domain logic




       Database
Issues monolithic
        applications
• Complexity
• Hard deploy
• Hard use new tools (DB, languages, etc.)
• Scale team size
• Changes are typically expensive
What is it SOA?
• A modular style to software development
  is based on the use of distributed, loosely
  coupled, replaceable components.
• The fundamental concept of an SOA is that
  each component of the system is broken
  up into network-accessible services, which
  are integrated to make a functioning
  application.
Rails application with
   multiple services
                            End user



                    High level domain logic



Service 1             Service 2               Service N


     Domain logic          Domain logic            Domain logic




       Database              Database                Database
Service-Oriented
Design with Ruby
SOA advantages over
monolithic application
•   Isolation

•   Robustness

•   Scalability

•   Agility

•   Interoperability

•   Reuse
Isolation

• Object-oriented design
• Business logic
• System Isolation
Robustness

• Implementation can be changed without
  the API consumer’s knowledge.
• Example: Changing libraries, database or
  even languages.
Scalability

• Easy to scale portions of application
  individually.
• Can be handled on a case-by-case instead
  of requiring optimization of a single
  database for all cases.
• Easier to scale team size.
Agility
• New services can be implemented outside
  the full architecture.
• Service interface should be versioned.
  “/api/v1/users/:id”
• Design includes the ability to run multiple
  versions of a service simultaneously.
  “/api/v1/users/:id” and “/api/v2/users/:id”
Interoperability

• Prevents being tied to a specific
  implementation.
• Services ease interoperation with internal
  and external systems and with systems
  written in languages other than Ruby.
Reuse

• Service-oriented design enables reuse of
  components across multiple applications or
  clients.
• If services are created for internal use, they
  can be exposed later to the public.
Converting to Services

• Partitioning on Iteration Speed
• Partitioning on Logical Function
• Partitioning on Read/Write Frequencies
• Partitioning on Join Frequency
What we need to learn
•   RESTful-Oriented      •   Create clients
    Architecture
                          •   Testing and Mocking
•   HTTP Methods              Service Calls

•   HTTP Caching          •   Load Balancing

•   MIME types            •   Security

•   I/O, Threading, and   •   Web Hooks
    Parallelism
                          •   Chef
•   Amazon AWS
                          •   Typhoeus
Load Balancing
• Weighted Balance
• Round-Robin
• Least-Connections
• URI-Based
• Priority
• Lowest Latency
Caching

• HTTP cache (cache-control, ETag, last-
  modified, expires)
• Memcached
• Squid and Varnish
Debug

• Efficiency 2.0 Ops Middleware - track
  distributed transactions across its Ruby-
  based service oriented architecture
• Monitoring tool.
Development


• Use stub mode in clients in development
  environment.
• Disable stub mode when develop service.
Tests

• Test client with service
• Test application with stubbed service
• Test the full stack
@usubov
shaliko@ezid.ru



Shalva Usubov

Más contenido relacionado

La actualidad más candente

Sqlite Introduction
Sqlite IntroductionSqlite Introduction
Sqlite Introduction
Praveen Nair
 
WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...
WSO2
 
Buiding and Deploying SaaS with WSO2 as as-a-Service
Buiding and Deploying SaaS with WSO2 as as-a-ServiceBuiding and Deploying SaaS with WSO2 as as-a-Service
Buiding and Deploying SaaS with WSO2 as as-a-Service
WSO2
 
Keynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your businessKeynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your business
WSO2
 
Managing ESB artifacts with the WSO2 Governance Registry
Managing ESB artifacts with the WSO2 Governance Registry Managing ESB artifacts with the WSO2 Governance Registry
Managing ESB artifacts with the WSO2 Governance Registry
WSO2
 
ServiceNow-Box Integration
ServiceNow-Box IntegrationServiceNow-Box Integration
ServiceNow-Box Integration
Nagendra B
 

La actualidad más candente (20)

WSO2-ESB - The backbone of Enterprise Integration
WSO2-ESB - The backbone of Enterprise IntegrationWSO2-ESB - The backbone of Enterprise Integration
WSO2-ESB - The backbone of Enterprise Integration
 
Sqlite Introduction
Sqlite IntroductionSqlite Introduction
Sqlite Introduction
 
[WSO2Con EU 2017] Container-native Architecture
[WSO2Con EU 2017] Container-native Architecture[WSO2Con EU 2017] Container-native Architecture
[WSO2Con EU 2017] Container-native Architecture
 
[WSO2Con EU 2017] Writing Microservices Using MSF4J
[WSO2Con EU 2017] Writing Microservices Using MSF4J[WSO2Con EU 2017] Writing Microservices Using MSF4J
[WSO2Con EU 2017] Writing Microservices Using MSF4J
 
WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...
 
Buiding and Deploying SaaS with WSO2 as as-a-Service
Buiding and Deploying SaaS with WSO2 as as-a-ServiceBuiding and Deploying SaaS with WSO2 as as-a-Service
Buiding and Deploying SaaS with WSO2 as as-a-Service
 
Signal rity1
Signal rity1Signal rity1
Signal rity1
 
[WSO2Con EU 2017] Creating Composite Services Using Ballerina
[WSO2Con EU 2017] Creating Composite Services Using Ballerina[WSO2Con EU 2017] Creating Composite Services Using Ballerina
[WSO2Con EU 2017] Creating Composite Services Using Ballerina
 
Containerizing your apps
Containerizing your appsContainerizing your apps
Containerizing your apps
 
Keynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your businessKeynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your business
 
NATS: A Cloud Native Messaging System
NATS: A Cloud Native Messaging SystemNATS: A Cloud Native Messaging System
NATS: A Cloud Native Messaging System
 
Managing ESB artifacts with the WSO2 Governance Registry
Managing ESB artifacts with the WSO2 Governance Registry Managing ESB artifacts with the WSO2 Governance Registry
Managing ESB artifacts with the WSO2 Governance Registry
 
Web server architecture
Web server architectureWeb server architecture
Web server architecture
 
ESB integration for node.js
ESB integration for node.js ESB integration for node.js
ESB integration for node.js
 
Microservices
MicroservicesMicroservices
Microservices
 
Implementing advanced integration patterns with WSO2 ESB
Implementing advanced integration patterns with WSO2 ESBImplementing advanced integration patterns with WSO2 ESB
Implementing advanced integration patterns with WSO2 ESB
 
WSO2 Gateway
WSO2 GatewayWSO2 Gateway
WSO2 Gateway
 
ServiceNow-Box Integration
ServiceNow-Box IntegrationServiceNow-Box Integration
ServiceNow-Box Integration
 
iUpgradable
iUpgradableiUpgradable
iUpgradable
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
 

Destacado

Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocity
Sam Newman
 

Destacado (6)

How to disassemble a monolithic app in (not-so) micro-services
How to disassemble a monolithic app in (not-so) micro-servicesHow to disassemble a monolithic app in (not-so) micro-services
How to disassemble a monolithic app in (not-so) micro-services
 
From Monolithic to Microservices in 45 Minutes
From Monolithic to Microservices in 45 MinutesFrom Monolithic to Microservices in 45 Minutes
From Monolithic to Microservices in 45 Minutes
 
The Journey from Monolith to Microservices: a Guided Adventure
The Journey from Monolith to Microservices: a Guided AdventureThe Journey from Monolith to Microservices: a Guided Adventure
The Journey from Monolith to Microservices: a Guided Adventure
 
DEVNET-1142 Decomposing Monolithic Applications to Microservices
DEVNET-1142	Decomposing Monolithic Applications to MicroservicesDEVNET-1142	Decomposing Monolithic Applications to Microservices
DEVNET-1142 Decomposing Monolithic Applications to Microservices
 
Dockercon State of the Art in Microservices
Dockercon State of the Art in MicroservicesDockercon State of the Art in Microservices
Dockercon State of the Art in Microservices
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocity
 

Similar a Service-oriented architecture

Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang
 
A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)
WSO2
 

Similar a Service-oriented architecture (20)

Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
 
Microservices and Best Practices
Microservices and Best Practices Microservices and Best Practices
Microservices and Best Practices
 
Microservice Architecture Patterns, by Richard Langlois P. Eng.
Microservice Architecture Patterns, by Richard Langlois P. Eng.Microservice Architecture Patterns, by Richard Langlois P. Eng.
Microservice Architecture Patterns, by Richard Langlois P. Eng.
 
Monolithic to Microservices Architecture
Monolithic to Microservices ArchitectureMonolithic to Microservices Architecture
Monolithic to Microservices Architecture
 
Micro services
Micro servicesMicro services
Micro services
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 
Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service FabricTokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
 
A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)A Buyers Guide to an Enterprise Service Bus (ESB)
A Buyers Guide to an Enterprise Service Bus (ESB)
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
 
High Performance Cloud Computing
High Performance Cloud ComputingHigh Performance Cloud Computing
High Performance Cloud Computing
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 
Micro service session 1
Micro service   session 1Micro service   session 1
Micro service session 1
 
Private PaaS & Container-as-a-Service for ISVs and Enterprise - Use Cases and...
Private PaaS & Container-as-a-Service for ISVs and Enterprise - Use Cases and...Private PaaS & Container-as-a-Service for ISVs and Enterprise - Use Cases and...
Private PaaS & Container-as-a-Service for ISVs and Enterprise - Use Cases and...
 
Microservices
MicroservicesMicroservices
Microservices
 
IBM InterConnect 2015 - IIB Effective Application Development
IBM InterConnect 2015 - IIB Effective Application DevelopmentIBM InterConnect 2015 - IIB Effective Application Development
IBM InterConnect 2015 - IIB Effective Application Development
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
NephoScale Elastic Networking
NephoScale Elastic NetworkingNephoScale Elastic Networking
NephoScale Elastic Networking
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 
Pimping the ForgeRock Identity Platform for a Billion Users
Pimping the ForgeRock Identity Platform for a Billion UsersPimping the ForgeRock Identity Platform for a Billion Users
Pimping the ForgeRock Identity Platform for a Billion Users
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Service-oriented architecture

  • 1. Service-oriented architecture @H2Russia internal workshop
  • 3. Monolithic Rails applications End user Domain logic Database
  • 4. Issues monolithic applications • Complexity • Hard deploy • Hard use new tools (DB, languages, etc.) • Scale team size • Changes are typically expensive
  • 5. What is it SOA? • A modular style to software development is based on the use of distributed, loosely coupled, replaceable components. • The fundamental concept of an SOA is that each component of the system is broken up into network-accessible services, which are integrated to make a functioning application.
  • 6. Rails application with multiple services End user High level domain logic Service 1 Service 2 Service N Domain logic Domain logic Domain logic Database Database Database
  • 8. SOA advantages over monolithic application • Isolation • Robustness • Scalability • Agility • Interoperability • Reuse
  • 9. Isolation • Object-oriented design • Business logic • System Isolation
  • 10. Robustness • Implementation can be changed without the API consumer’s knowledge. • Example: Changing libraries, database or even languages.
  • 11. Scalability • Easy to scale portions of application individually. • Can be handled on a case-by-case instead of requiring optimization of a single database for all cases. • Easier to scale team size.
  • 12. Agility • New services can be implemented outside the full architecture. • Service interface should be versioned. “/api/v1/users/:id” • Design includes the ability to run multiple versions of a service simultaneously. “/api/v1/users/:id” and “/api/v2/users/:id”
  • 13. Interoperability • Prevents being tied to a specific implementation. • Services ease interoperation with internal and external systems and with systems written in languages other than Ruby.
  • 14. Reuse • Service-oriented design enables reuse of components across multiple applications or clients. • If services are created for internal use, they can be exposed later to the public.
  • 15. Converting to Services • Partitioning on Iteration Speed • Partitioning on Logical Function • Partitioning on Read/Write Frequencies • Partitioning on Join Frequency
  • 16. What we need to learn • RESTful-Oriented • Create clients Architecture • Testing and Mocking • HTTP Methods Service Calls • HTTP Caching • Load Balancing • MIME types • Security • I/O, Threading, and • Web Hooks Parallelism • Chef • Amazon AWS • Typhoeus
  • 17.
  • 18. Load Balancing • Weighted Balance • Round-Robin • Least-Connections • URI-Based • Priority • Lowest Latency
  • 19. Caching • HTTP cache (cache-control, ETag, last- modified, expires) • Memcached • Squid and Varnish
  • 20. Debug • Efficiency 2.0 Ops Middleware - track distributed transactions across its Ruby- based service oriented architecture • Monitoring tool.
  • 21. Development • Use stub mode in clients in development environment. • Disable stub mode when develop service.
  • 22. Tests • Test client with service • Test application with stubbed service • Test the full stack
  • 23.