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

Maciej Walkowiak

June 07, 2017
Tweet

More Decks by Maciej Walkowiak

Other Decks in Programming

Transcript

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

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

    coordination between teams ▸ Hard to bring new feature in single sprint
  3. 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
  4. 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
  5. 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
  6. 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
  7. SO .. WHAT’S THE PROBLEM? ▸ degrading quality ▸ no

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

    feeling of responsibility for production issues ▸ increasing overall system complexity
  9. 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
  10. 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