Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

505 views

Published on

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.

Published in: Software
  • Be the first to comment

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

×