Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
@crichardson
Microservices: enabling the
rapid and reliable delivery of
complex applications
Chris Richardson
Founder of E...
@crichardson
Presentation goal
How the microservice architecture
accelerates the delivery of large,
complex software appli...
@crichardson
About Chris
@crichardson
About Chris
Consultant and trainer
focusing on modern
application architectures
including microservices
(http...
@crichardson
About Chris
Founder of a startup that is creating
an open-source/SaaS platform
that simplifies the development...
@crichardson
About Chris
http://learnmicroservices.io
@crichardson
Agenda
The need for DevOps and continuous delivery
From monolith to microservices
Microservices != silver bul...
@crichardson
Traditional development
Wallofconfusion
Requirements
Business
Wallofconfusion
Architecture/
Design
Architects...
Months later…
Business discovers customers want something
different
Developers discover there are bugs
Operations discover...
What is DevOps?
Set of practices where
developers, testers
(dev) and IT operations
(ops) collaborate and
communicate to de...
@crichardson
DevOps/Continuous Delivery
=
table stakes for playing in
highly competitive industries
Mark Schwartz, A seat ...
@crichardson
Reducing lead time
Increasing deployment frequency
@crichardson
Modern software development: moving
fast and not breaking things!
46x
440x
24x
5x lower
Amazon: ~0.001%
Netfli...
@crichardson
Architecture
Maintainability
Testability
Deployability
Development
velocity
Agenda
The need for DevOps and continuous delivery
From monolith to microservices
Microservices != silver bullet
Refactori...
@crichardson
Tomcat/App. Server
Traditional: Monolithic
architecture
Browser/
Client
WAR/EAR
MySQL
Database
Review Module
...
@crichardson
The monolithic architecture
is an architectural style
that structures the application
as a single executable
...
-ilities of small monoliths
Maintainability
Testability
Deployability
…
https://en.wikipedia.org/wiki/Non-functional_requi...
@crichardson
But successful applications
keep growing….
Development
Team
Application
@crichardson
… and growing
Development
Team A
ApplicationDevelopment
Team B
Development
Team C
@crichardson
Eventually:
agile
development
and deployment
becomes
impossible
=
monolithic hell
-ilities of large monoliths
Maintainability
Testability
Deployability
…
https://en.wikipedia.org/wiki/Non-functional_requi...
@crichardson
Technology stack becomes
increasingly obsolete
BUT
A rewrite is not feasible
The microservice architecture
is an architectural style
that structures an
application as a
set of loosely coupled,
servic...
@crichardson
Application
Service = business capability
Acme, Inc
Order
Taking
Inventory
management
Delivery
management
Bus...
Service size is secondary
microservice architecture
Service:
Meaningful business functionality
Developed by a small team
Minimal lead time/high deployment
frequency
@crichardson
Browser
Mobile
Device
Content
Router
API
Gateway
Catalog
Service
Review
Service
Order
Service
…
Service
Catal...
-ilities of a microservice
architecture
Maintainability
Testability
Deployability
…
https://en.wikipedia.org/wiki/Non-func...
@crichardson
Microservices
continuous delivery/deployment
of large/complex applications
@crichardson
Process:
Continuous delivery/deployment
Organization:
Small, agile, autonomous,
cross functional teams
Archit...
@crichardson
Microservices evolve the
technology stack
Pick a new technology when
Writing a new service
Making major chang...
@crichardson
Agenda
The need for DevOps and continuous delivery
From monolith to microservices
Microservices != silver bul...
@crichardson
No silver bullets
http://en.wikipedia.org/wiki/Fred_Brooks
@crichardson
Drawbacks of microservices
Complexity
Development: IPC, partial failure, distributed data
Testing: Integratio...
@crichardson
Are microservices a good fit
for my application?
@crichardson
Do I have the pre-requisites in place:
automated testing
automated provisioning
…..
?
@crichardson
When using microservices:
How to decompose an application into services?
How to deploy an application’s servi...
@crichardson
It depends!
@crichardson
Microservice pattern language
=
collection of patterns
that solve these
architecture, design, development and...
@crichardson
What’s a pattern?
Reusable solution
to a problem
occurring
in a particular context
@crichardson
The structure of a pattern
encourages objectivity
Resulting context
aka the situation
Name
Context
Problem
Re...
@crichardson
Microservices pattern language: http://microservices.io
@crichardson
Agenda
The need for DevOps and continuous delivery
From monolith to microservices
Microservices != silver bul...
@crichardson
How do you decompose your
big, scary monolithic application?
@crichardson
Best done incrementally!
@crichardson
Strangler
Application
https://en.wikipedia.org/wiki/Strangler_fig
http://www.martinfowler.com/bliki/StranglerA...
@crichardson
Strategy:
New functionality = service
Monolith Service
Data integration
glue
API Gateway
Request
Monolithic
d...
@crichardson
Strategy: Existing module
service ...
Monolith
Module
Monolithic database
Module tables
@crichardson
Define a “remotable” interface
In-process
ACL
Application
Module
Monolithic database
Module tables
@crichardson
... Module service
Monolith Service
Data integration
glue
Monolithic database
Module
Database
API Gateway
Req...
@crichardson
Summary
Modern software development = DevOps/Continuous Delivery
Use the appropriate architecture
Small appli...
@crichardson
@crichardson chris@chrisrichardson.net
http://learnmicroservices.io
Thank you!
Thank You!
• Earn that additional
PDU – complete the
survey!
• Certificates
• Upcoming webinar
• A word from our Sales
Dir...
Prochain SlideShare
Chargement dans…5
×

Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable delivery of complex applications

495 vues

Publié le

DevOps and Continuous deployment (CD), which are a set of practices for the rapid, frequent, and reliable delivery of software, are central to any digital transformation effort. DevOps/CD require your application to have a testable and deployable architecture. As a result, a large, complex, and monolithic legacy application is typically an obstacle to the adoption of DevOps/CD. You must use the microservice architecture, a.k.a. microservices. In this webinar, you will learn about the importance of having a testable and deployable architecture. We describe the microservice architecture along with its benefits, and how it enables DevOps/CD. You will also learn about the drawbacks of the microservice architecture. We describe strategies for incrementally refactoring a legacy monolithic application into microservices.

Publié dans : Logiciels
  • Soyez le premier à commenter

Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable delivery of complex applications

  1. 1. @crichardson Microservices: enabling the rapid and reliable delivery of complex applications Chris Richardson Founder of Eventuate.io Founder of the original CloudFoundry.com Author of POJOs in Action @crichardson chris@chrisrichardson.net http://microservices.io http://eventuate.io http://plainoldobjects.com Copyright © 2017. Chris Richardson Consulting, Inc. All rights reserved
  2. 2. @crichardson Presentation goal How the microservice architecture accelerates the delivery of large, complex software applications
  3. 3. @crichardson About Chris
  4. 4. @crichardson About Chris Consultant and trainer focusing on modern application architectures including microservices (http://www.chrisrichardson.net/)
  5. 5. @crichardson About Chris Founder of a startup that is creating an open-source/SaaS platform that simplifies the development of transactional microservices (http://eventuate.io)
  6. 6. @crichardson About Chris http://learnmicroservices.io
  7. 7. @crichardson Agenda The need for DevOps and continuous delivery From monolith to microservices Microservices != silver bullet Refactoring to microservices
  8. 8. @crichardson Traditional development Wallofconfusion Requirements Business Wallofconfusion Architecture/ Design Architects Wallofconfusion Code Developers Wallofconfusion Tested code QA Ops Capacity planning Procure hardware
  9. 9. Months later… Business discovers customers want something different Developers discover there are bugs Operations discover their capacity planning estimates were wrong Over-provision => waste money Under-provision => success catastrophe
  10. 10. What is DevOps? Set of practices where developers, testers (dev) and IT operations (ops) collaborate and communicate to deliver software rapidly, frequently, and reliably http://itrevolution.com/devops-handbook
  11. 11. @crichardson DevOps/Continuous Delivery = table stakes for playing in highly competitive industries Mark Schwartz, A seat at the table
  12. 12. @crichardson Reducing lead time Increasing deployment frequency
  13. 13. @crichardson Modern software development: moving fast and not breaking things! 46x 440x 24x 5x lower Amazon: ~0.001% Netflix: 16 minutes
  14. 14. @crichardson Architecture Maintainability Testability Deployability Development velocity
  15. 15. Agenda The need for DevOps and continuous delivery From monolith to microservices Microservices != silver bullet Refactoring to microservices
  16. 16. @crichardson Tomcat/App. Server Traditional: Monolithic architecture Browser/ Client WAR/EAR MySQL Database Review Module Catalog Module Recommendation Module StoreFrontUI Order Module HTML REST/JSON Logical view Implementation view
  17. 17. @crichardson The monolithic architecture is an architectural style that structures the application as a single executable component Implementation view
  18. 18. -ilities of small monoliths Maintainability Testability Deployability … https://en.wikipedia.org/wiki/Non-functional_requirement 😄
  19. 19. @crichardson But successful applications keep growing…. Development Team Application
  20. 20. @crichardson … and growing Development Team A ApplicationDevelopment Team B Development Team C
  21. 21. @crichardson Eventually: agile development and deployment becomes impossible = monolithic hell
  22. 22. -ilities of large monoliths Maintainability Testability Deployability … https://en.wikipedia.org/wiki/Non-functional_requirement 😭
  23. 23. @crichardson Technology stack becomes increasingly obsolete BUT A rewrite is not feasible
  24. 24. The microservice architecture is an architectural style that structures an application as a set of loosely coupled, services organized around business capabilities
  25. 25. @crichardson Application Service = business capability Acme, Inc Order Taking Inventory management Delivery management Business Capability = something a business does to deliver value … Order Service Inventory Management Service Delivery Management Service … Service
  26. 26. Service size is secondary microservice architecture
  27. 27. Service: Meaningful business functionality Developed by a small team Minimal lead time/high deployment frequency
  28. 28. @crichardson Browser Mobile Device Content Router API Gateway Catalog Service Review Service Order Service … Service Catalog Database Review Database Order Database … Database HTTP /HTML REST REST Browse & Search WebApp Product Detail WebApp …. Supplier Inbound Gateway Catalog update messages Supplier System
  29. 29. -ilities of a microservice architecture Maintainability Testability Deployability … https://en.wikipedia.org/wiki/Non-functional_requirement 😄
  30. 30. @crichardson Microservices continuous delivery/deployment of large/complex applications
  31. 31. @crichardson Process: Continuous delivery/deployment Organization: Small, agile, autonomous, cross functional teams Architecture: Microservice architecture Enables Enables Enables Successful Software Development Services improve testability and deployability Teams own services
  32. 32. @crichardson Microservices evolve the technology stack Pick a new technology when Writing a new service Making major changes to an existing service Let’s you experiment and fail safely
  33. 33. @crichardson Agenda The need for DevOps and continuous delivery From monolith to microservices Microservices != silver bullet Refactoring to microservices
  34. 34. @crichardson No silver bullets http://en.wikipedia.org/wiki/Fred_Brooks
  35. 35. @crichardson Drawbacks of microservices Complexity Development: IPC, partial failure, distributed data Testing: Integration, end to end, … Deployment …
  36. 36. @crichardson Are microservices a good fit for my application?
  37. 37. @crichardson Do I have the pre-requisites in place: automated testing automated provisioning ….. ?
  38. 38. @crichardson When using microservices: How to decompose an application into services? How to deploy an application’s services? How to handle cross cutting concerns? Which communication mechanisms to use? How do external clients communicate with the services? How does a client discover the network location of a service instance? How to prevent a network or service failure from cascading to other services? How to maintain data consistency and implement queries? How to make testing easier? How to understand the behavior of an application and troubleshoot problems? How to implement a UI screen or page that displays data from multiple services?
  39. 39. @crichardson It depends!
  40. 40. @crichardson Microservice pattern language = collection of patterns that solve these architecture, design, development and operational problems
  41. 41. @crichardson What’s a pattern? Reusable solution to a problem occurring in a particular context
  42. 42. @crichardson The structure of a pattern encourages objectivity Resulting context aka the situation Name Context Problem Related patterns (conflicting) issues etc to address Forces Solution Benefits Drawbacks Issues to resolve Alternatives Solutions to issues
  43. 43. @crichardson Microservices pattern language: http://microservices.io
  44. 44. @crichardson Agenda The need for DevOps and continuous delivery From monolith to microservices Microservices != silver bullet Refactoring to microservices
  45. 45. @crichardson How do you decompose your big, scary monolithic application?
  46. 46. @crichardson Best done incrementally!
  47. 47. @crichardson Strangler Application https://en.wikipedia.org/wiki/Strangler_fig http://www.martinfowler.com/bliki/StranglerApplication.html
  48. 48. @crichardson Strategy: New functionality = service Monolith Service Data integration glue API Gateway Request Monolithic database Service database Enables service to access monolith’s data
  49. 49. @crichardson Strategy: Existing module service ... Monolith Module Monolithic database Module tables
  50. 50. @crichardson Define a “remotable” interface In-process ACL Application Module Monolithic database Module tables
  51. 51. @crichardson ... Module service Monolith Service Data integration glue Monolithic database Module Database API Gateway Request
  52. 52. @crichardson Summary Modern software development = DevOps/Continuous Delivery Use the appropriate architecture Small applications Monolithic architecture Complex applications Microservice architecture Use the pattern language to guide your decision making Incrementally refactoring a monolith to microservices
  53. 53. @crichardson @crichardson chris@chrisrichardson.net http://learnmicroservices.io Thank you!
  54. 54. Thank You! • Earn that additional PDU – complete the survey! • Certificates • Upcoming webinar • A word from our Sales Director, Brad Emm

×