Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Upday Journey to Microservices

Upday Journey to Microservices

What we've learnt when we applied microservices architecture

2da55e1342d18933f0bcaf804a02f200?s=128

Maciej Walkowiak

June 07, 2017
Tweet

More Decks by Maciej Walkowiak

Other Decks in Programming

Transcript

  1. JOURNEY TO MICROSERVICES @maciejwalkowiak

  2. what we’ve learnt when we applied microservices architecture

  3. None
  4. None
  5. None
  6. Greetings

  7. Greetings Top News

  8. Greetings Top News My News

  9. STARTUP Source: https://giphy.com/gifs/season-3-money-unicorn-3osxYamKD88c6pXdfO

  10. People Vector created by Freepik

  11. Source: https://www.icicletech.com/blog/a-startups-guide-to-minimum-viable-product-part-1

  12. Source: https://www.icicletech.com/blog/a-startups-guide-to-minimum-viable-product-part-1

  13. ISSUES

  14. SO .. WHAT’S THE PROBLEM? ▸ Developing new features required

    coordination between teams ▸ Hard to bring new feature in single sprint
  15. SO .. WHAT’S THE PROBLEM? ▸ Developing new features required

    coordination between teams ▸ Hard to bring new feature in single sprint
  16. 1. horizontal teams do not work well for incremental feature

    development
  17. CROSS FUNCTIONAL TEAMS Source: https://giphy.com/gifs/the-avengers-PpeGK6edBWAxi

  18. None
  19. None
  20. None
  21. 2. Continuous delivery platform is a must

  22. CURRENT ARCHITECTURE

  23. CURRENT ARCHITECTURE Team X Team Y Team Z

  24. CURRENT ARCHITECTURE Team X Team Y Team Z

  25. ISSUES

  26. SO .. WHAT’S THE PROBLEM? ▸ Adding new functionality requires

    changes in 2 separate services - sometimes doubles the work ▸ No clear service ownership - difficult to make architecture decisions - “a camel is a horse designed by a committee" ▸ No clear bugs ownership
  27. SO .. WHAT’S THE PROBLEM? ▸ Adding new functionality requires

    changes in 2 separate services - sometimes doubles the work ▸ No clear service ownership - difficult to make architecture decisions - “a camel is a horse designed by a committee" ▸ No clear bugs ownership
  28. 3. Horizontal components do not get along with vertical teams

  29. API GATEWAY HTTPS://GITHUB.COM/NETFLIX/ZUUL

  30. API GATEWAY

  31. None
  32. API GATEWAY - MIGRATION PHASE

  33. HAPPY DEVELOPERS! HAPPY MANAGERS!

  34. 1.000.000 users

  35. 4. monitoring is essential

  36. None
  37. None
  38. ISSUES

  39. SO .. WHAT’S THE PROBLEM? ▸ cross functional teams but

    many features were not crossing all technologies ▸ we ended up as two teams in a single team: android and backend ▸ teams were not oriented around business case
  40. SO .. WHAT’S THE PROBLEM? ▸ cross functional teams but

    many features were not crossing all technologies ▸ we ended up as two teams in a single team: android and backend ▸ teams were not oriented around business case
  41. CROSS FUNCTIONAL TEAMS CHAOS DRIVEN DEVELOPMENT Source:https://giphy.com/gifs/four-rooms-allison-anders-alexandre-rockwell-XTYq2BBOwwSUo

  42. None
  43. None
  44. ISSUES

  45. SO .. WHAT’S THE PROBLEM? ▸ degrading quality ▸ no

    feeling of responsibility for production issues ▸ increasing overall system complexity
  46. SO .. WHAT’S THE PROBLEM? ▸ degrading quality ▸ no

    feeling of responsibility for production issues ▸ increasing overall system complexity
  47. 5. stable,,teams and ownership matter

  48. 6. TeAms built around features are fast

  49. TEAMS BUILT AROUND BUSINESS CAPABILITIES Source: https://giphy.com/gifs/fire-office-yolo-OongkSFTbly8w

  50. Top News My News Data Warehouse

  51. None
  52. 7. modular architecture matters

  53. 8. there is always a monolith. embrace it

  54. T-SHAPE DEVS

  55. ok but what about architecture?

  56. ARCHITECTURE PRINCIPLES ▸ no ivory tower architect ▸ as little

    upfront architecture as possible ▸ subsystems communicate with each other over RabbitMQ ▸ databases are not shared between services ▸ avoid cascading synchronous communication in user flow ▸ keep it simple on every level
  57. 1. horizontal teams do not work well for incremental feature

    development 2. Continuous delivery platform is a must 3. Horizontal components do not get along with vertical teams 4. monitoring is essential 5. stable teams and ownership matter 6/. teams built around features are fast 6. modular architecture matters 7. there is always a monolith. embrace it
  58. are we happy & what’s next?

  59. None
  60. THAT’S IT. THANK YOU! @maciejwalkowiak