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

microxchg 2019 - A competitive food retail arch...

Sebastian
April 01, 2019

microxchg 2019 - A competitive food retail architecture with microservice

Sebastian

April 01, 2019
Tweet

More Decks by Sebastian

Other Decks in Technology

Transcript

  1. A competitive food retail architecture with microservices A five year

    journey Sebastian Gauder Software Architect eCommerce @rattakresch
  2. 3 Details REWE Group Turnover >57 bn History >90 years

    Employees >345.000 Inudstries Food Retail, Tourism, DIY Shops >15.000
  3. Service/team growth 2014 40 15 100 28 200 46 2015

    2016 2017 # Services # Dev Teams 1 2 2018 270 48
  4. Organization and Architecture at Rewe Digital Domain Subdomain Bounded Context

    Tribe Squad Team Platform Service Is modelled as Consists of Consists of 1 N 1 N 1 N Consists of 1 N Consists of 1 N 1 1 1 1 N 1 Builds Builds 1 N Implements Fulfills requirements of 1 1 Is responsible for
  5. “Any organization that designs a system (defined broadly) will produce

    a design whose structure is a copy of the organization's communication structure.” Melvin Conway (1967) Conway’s law
  6. How to organize teams to build a scalable system? Functional

    and vertical teams Frontend Backend Database QA Ops ... Team A Team B Team C
  7. Design Goals - Vertical boundaries - Decentralization Architectural principles -

    Collection of 9 basic ‘laws’ - Autonomy, Automation and Communication Guides - Practical manual for common tasks (RFC 2119) - e.g. Eventing, REST, Authentication Guarding rails for developers MUST SHOULD COULD
  8. Autonomy principles Deploy independently Ensure that the services can and

    are deployed by the teams themselves. Isolate failure Make the services as resilient as possible. Hide implementation Details Different verticals must be stateless and must not share state. Encapsulate Data Storage For any data resource exactly one service is responsible. If possible, the data supply should proceed asynchronously in the background
  9. Bloated Features - Smaller features (MVP) -> fewer teams, lesser

    synchronization overhead Big Bang Releases - Appropriate patterns -> smaller risk, lesser need for synchronization Urge for Reutilization and Shared Libraries - “WET is the new DRY” The classic enemies of autonomy
  10. Automation principles Be Scalable Services are scaled horizontally Embrace a

    Culture of Automation Test, deployment and operations are completely automated Be Highly Observable Use of semantic monitoring to see if the whole platform works correctly.
  11. Communication principles Standardize Service communication Inter-service communication is standardized and

    if possible asynchronous Follow REST Principles The API of a service follows the RESTful paradigm (REST maturity level 2)
  12. Communication in microservice worlds Having data is better than fetching

    data µService Event-API (Kafka) REST-API (JSON) UI-API (HTML)
  13. Problems in HTTP/REST-only architectures Gateway µService 1 µService 2 µService

    5 µService 4 Things that help: • Timeouts • Fallbacks • Circuit Breakers • Eventing µService 3
  14. Eventing with Apache Kafka • Eventing != Messaging ◦ Publish

    events that already happened ◦ One owning service per queue/topic • Eventing != Event Sourcing ◦ Complete entities - not deltas ◦ Allows log compaction • Re-writing and Re-reading ◦ needed in case of additional data ◦ useful in case of data loss
  15. Eventing is an API as well - Events have to

    behave like APIs and avoid breaking changes. Writing (generic) APIs is hard - Teams tend to write APIs for special clients (e.g. mobile apps) Breaking changes require a strict procedure - Must be solved by introducing new endpoints / new topics Lessons learned with microservice communication
  16. A competitive food retail architecture with microservices A five year

    journey with microservices Sebastian Gauder Software Architect eCommerce @rattakresch