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.

Microservices: a journey of an eternal improvement

560 views

Published on

The development difficulty of an application with many lines of code is well-known. Whenever several teams need to work on the same source code, there are going to be collisions and a waste of time. To deal with these and other problems, teams employ the microservices architectural approach.
In this talk we will discuss microservices, continuous delivery and how teams can work in such setup

Published in: Software
  • Be the first to comment

Microservices: a journey of an eternal improvement

  1. 1. MICROSERVICES: A JOURNEY OF AN ETERNAL IMPROVEMENT Levi9 Meetup 04.2016 Anton Udovychenko
  2. 2. ABOUT ME Software Architect @ Levi9 8+ years of Java experience Passionate about agile methodology and clean code http://ua.linkedin.com/in/antonudovychenko http://www.slideshare.net/antonudovychenko
  3. 3. Amsterdam Levi9 HQ Amsterdam – 2005 25 people Novi Sad Serbia Novi Sad – 2005 320+ people Zrenjanin Serbia Zrenjanin– 2014 30+ people Iasi Romania Iasi – 2007 80+ people Kiev Ukraine Kiev – 2008 130+ people http://www.levi9.com/
  4. 4. AGENDA • Monolith development • Reflections about Scale cube • Microservices to the rescue • Spotify Scrum • Employ Continuous delivery • Q&A
  5. 5. MONOLITH DEVELOPMENT • Widely known and described • Simple development • Straightforward testing • Easy deployment Benefits:
  6. 6. MONOLITH DEVELOPMENT • Grows to be tightly coupled • Difficult to make changes • Obstacle for scaling • Complex to analyze • Frightens developers • Hard to change technology stack Disadvantages:
  7. 7. MONOLITH DEVELOPMENT • Grows to be tightly coupled • Difficult to make changes • Obstacle for scaling • Complex to analyze • Frightens developers • Hard to change technology stack Disadvantages:
  8. 8. REFLECTIONS ABOUT SCALE CUBE X axis – horizontal duplication Scale by cloning
  9. 9. REFLECTIONS ABOUT SCALE CUBE X axis – horizontal duplication Scale by cloning
  10. 10. REFLECTIONS ABOUT SCALE CUBE Y axis – functional decomposition Scale by splitting different things X axis – horizontal duplication Scale by cloning
  11. 11. REFLECTIONS ABOUT SCALE CUBE Y axis – functional decomposition Scale by splitting different things X axis – horizontal duplication Scale by cloning Near infinite scale Starting point
  12. 12. MICROSERVICES TO THE RESCUE
  13. 13. MICROSERVICES TO THE RESCUE
  14. 14. MICROSERVICES TO THE RESCUE Small autonomous services that work together, modelled around a business domain
  15. 15. MICROSERVICES TO THE RESCUE
  16. 16. MICROSERVICES TO THE RESCUE • Scalability • Independent deployments • Polyglot services • Easier to understand a service • Decoupling • Fast development Benefits:
  17. 17. MICROSERVICES TO THE RESCUE • Distribution performance • Eventual consistency • Network security • Orchestration complexity • Monitoring and testing • Code duplication Disadvantages:
  18. 18. CONWAY’S LAW Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations Melvin Conway
  19. 19. SPOTIFY SCRUM PO Squad
  20. 20. SPOTIFY SCRUM PO Squad PO Squad PO Squad PO Squad
  21. 21. SPOTIFY SCRUM Tribe PO Squad PO Squad PO Squad PO Squad Lead
  22. 22. SPOTIFY SCRUM Tribe PO Squad PO Squad PO Squad PO Squad Lead Tribe PO Squad PO Squad PO Squad PO Squad Lead
  23. 23. Chapter SPOTIFY SCRUM Tribe PO Squad PO Squad PO Squad PO Squad Lead Tribe PO Squad PO Squad PO Squad PO Squad Lead Chapter
  24. 24. Chapter SPOTIFY SCRUM Tribe PO Squad PO Squad PO Squad PO Squad Lead Tribe PO Squad PO Squad PO Squad PO Squad Lead Chapter Guild
  25. 25. CONTINUOUS INTEGRATION Build Deploy Test
  26. 26. CONTINUOUS DELIVERY Build Deploy Test Manual Acceptance Release
  27. 27. CONTINUOUS DEPLOYMENT Build Deploy Test Release
  28. 28. EMPLOY CONTINUOUS DELIVERY Version control
  29. 29. EMPLOY CONTINUOUS DELIVERY Version control Continuous delivery pipeline
  30. 30. EMPLOY CONTINUOUS DELIVERY Version control Continuous delivery pipeline Services v6 v37 v12 v5
  31. 31. EMPLOY CONTINUOUS DELIVERY Version control Continuous delivery pipeline Services v37 v12 v5 Code changes v7
  32. 32. EMPLOY CONTINUOUS DELIVERY - PIPELINE BUILD TEST RELEASE Features: • Pipeline as code
  33. 33. EMPLOY CONTINUOUS DELIVERY - PIPELINE BUILD TEST RELEASE Features: • Pipeline as code • Auto build versioning • Manual contracts versioning• Compile • Version • Unit test • Static code analysis • Static security code analysis
  34. 34. EMPLOY CONTINUOUS DELIVERY - PIPELINE BUILD TEST RELEASE Features: • Pipeline as code • Auto build versioning • Manual contracts versioning• Compile • Version • Unit test • Static code analysis • Static security code analysis • e2e • Performance • Integration • Penetration • Contracts
  35. 35. EMPLOY CONTINUOUS DELIVERY - PIPELINE BUILD TEST RELEASE Features: • Pipeline as code • Auto build versioning • Manual contracts versioning• Compile • Version • Unit test • Static code analysis • Static security code analysis • e2e • Performance • Integration • Penetration • Contracts
  36. 36. EMPLOY CONTINUOUS DELIVERY - PIPELINE BUILD TEST RELEASE Features: • Pipeline as code • Auto build versioning • Manual contracts versioning • Immutable infrastructure • Compile • Version • Unit test • Static code analysis • Static security code analysis • e2e • Performance • Integration • Penetration • Contracts Create env Run tests Dispose env
  37. 37. EMPLOY CONTINUOUS DELIVERY - PIPELINE BUILD TEST RELEASE Features: • Pipeline as code • Auto build versioning • Manual contracts versioning • Immutable infrastructure • Compile • Version • Unit test • Static code analysis • Static security code analysis • e2e • Performance • Integration • Penetration • Contracts • Make available downstream • Trigger integration build Create env Run tests Dispose env
  38. 38. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ 53 6 36 11 5 Release 6 36 11 5 53
  39. 39. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ 53 6 36 11 5 Release 6 36 11 5 53 37 37
  40. 40. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ 53 6 36 11 5 Release 6 36 11 5 53 38 38
  41. 41. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ 53 6 36 11 5 Release 6 36 11 5 53 38 12 12
  42. 42. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ 53 54 6 6 36 36 11 12 5 5 Release 6 36 12 5 54 38 12
  43. 43. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ 53 54 6 6 36 36 11 12 5 5 Release 6 36 12 5 54 3939
  44. 44. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ 53 54 55 6 6 6 36 36 39 11 12 12 5 5 5 Release 6 39 12 5 55 39
  45. 45. EMPLOY CONTINUOUS DELIVERY B T Rgit B T Rgit B T Rgit B T Rgit B T R+ Release 6 39 12 5 55 39 5555 5656 5757 585858
  46. 46. EMPLOY CONTINUOUS DELIVERY git git git git + Future proof: • Any configuration of squads • Growing number of components
  47. 47. EMPLOY CONTINUOUS DELIVERY git git git git + Future proof: • Any configuration of squads • Growing number of components
  48. 48. EMPLOY CONTINUOUS DELIVERY git git git git + Future proof: • Any configuration of squads • Growing number of components git
  49. 49. TRY MICROSERVICES http://jhipster.github.io
  50. 50. TRY CONTINUOUS DELIVERY https://www.go.cd/
  51. 51. DEMO TIME
  52. 52. REFERENCES http://martinfowler.com/articles/microservices.html http://microservices.io/articles/scalecube.html https://ucvox.files.wordpress.com/2012/11/113617905- scaling-agile-spotify-11.pdf http://martinfowler.com/articles/microservice-testing http://blog.arungupta.me/continuous-integration-delivery- deployment-maturity-model/ http://www.slideshare.net/PavelChunyayev/continuous- delivery-for-cxp-at-backbase-presented-at-arch9-amsterdam- 30032016-levi9
  53. 53. THANK YOU!

×