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

How not to lose your mind with too many microservices - Architecture Gathering 2016

How not to lose your mind with too many microservices - Architecture Gathering 2016

If you have too many microservices (which might be something > 30) you need a structured way to know what's going on and where to get more information about your system. We show two approaches how E-POST and Zalando going to solve this problem.

Oliver Wehrens

October 12, 2016
Tweet

More Decks by Oliver Wehrens

Other Decks in Technology

Transcript

  1. HOW NOT TO LOSE YOUR MIND WITH TOO MANY MICROSERVICES

    OLIVER WEHRENS - E-POST - @OWEHRENS FELIX MÜLLER - ZALANDO SE - @FMUELLER_BLN
  2. ONCE THERE WAS A MONOLITH. ▸ One (big) codebase ▸

    Many teams working on it ▸ Lots of communication overhead T H E MONOLITH = Team
  3. YOU DECIDE TO GO FOR MICROSERVICE ARCHITECTURE. ▸ Only one

    team works on service codebase ▸ Independent deployment of business functionality ▸ Less blocking communication = Microservice
  4. MICROSERVICES MEAN … ▸ More Services. ▸ More Teams. ▸

    More Communication. ▸ More Documentation. ▸ More of everything.
  5. PROBLEMS TO SOLVE ▸ What is available on the platform

    ? ▸ What does the whole platform look like ? ▸ Who is responsible for a service ? ▸ How to get more information about a service ? ▸ Which Software versions and licenses do we use ?
  6. WIKI (RANT) ▸ Created once ▸ Rarely updated ▸ Nothing

    can be found ▸ If updated, nobody knows if this is up to date ▸ Developers just don’t like update Wikis ▸ Use the source Luke.
  7. BUILD TIME ▸ Everything available at Code Level & CI

    System ▸ VCS information ▸ License & Dependency information ▸ Build chain information ▸ Code Stats (Age, Committer, Language)
  8. RADICAL AGILITY ▸ Autonomous teams working towards purpose ▸ Individuals

    striving for mastery ▸ Technical: ▸ Microservices ▸ API First ▸ REST, Cloud, Software as a Service…
  9. STUPS COMES WITH AN APPLICATION REGISTRY ▸ Kio as application

    registry ▸ each deployed application has to be registered there ▸ every version also has to be registered there ▸ information like vcs root, owning team, ticket system…
  10. API DISCOVERY ▸ A system to crawl and curate all

    deployed APIs. TWINTIP CRAWLER TWINTIP STORAGE SWAGGER UI APIS
  11. ZALANDO’S TOOLCHAIN ▸ Aggregate metadata automatically ▸ Top-Down approach ▸

    API Discovery via Twintip ▸ https://github.com/zalando-stups/twintip-crawler ▸ IT Portfolio Management via LeanIX
  12. OUR REQUIREMENTS ▸ Every VCS root needs documentation ▸ Description

    ▸ Type ▸ Team name ▸ Owner ▸ VCS & CI Information
  13. IN THE BEGINNING (Q4/2014) - THE GOOD ▸ Started with

    Wiki ▸ Description in yaml file in the Source Code ▸ Executed during CI Run ▸ Automated Code Dependencies via Maven, Gradle, SBT ▸ Formatted to HTML and uploaded to Wiki
  14. IN THE BEGINNING (Q4/2015) - THE BAD ▸ Search was

    limited ▸ Data could not be queried for additional benefit ▸ We had a couple of other places where we distributed information about services, what they do, how they get deployed etc. ▸ No immediate benefit, no problem when outdated
  15. OUR REQUIREMENTS ▸ General: Team name, Owner, a short name,

    description, type ▸ Runtime: memory needs, cpu, machine type ▸ Service: what do I provide, which port, protocol, private/ public ▸ Dependencies to other services ▸ Software Dependencies and Licenses ▸ Query DSL
  16. PIVIO ▸ A (simple) system to describe service meta data

    CLIENT SERVER (WRAPPER) WEB DB (ELASTIC- SEARCH) JSON JSON YAML
  17. PIVIO YAML ▸ One pivio.yaml file in root vcs directory

    ▸ Format at: http://pivio.io/docs/ #section-dataformat ▸ Extendable to your own needs
  18. OUR REQUIREMENTS ▸ General: Team name, Owner, a short name,

    description, type ▸ Runtime: memory needs, cpu, machine type ▸ Service: what do I provide, which port, protocol, private/ public ▸ Dependencies to other services ▸ Software Dependencies and Licenses ▸ Query DSL ✅
  19. DATA QUALITY ▸ … is key! ▸ Organisational changes not

    reflected sometimes ▸ Owners don’t benefit from quality ▸ Make use of the data that are relevant to the creator! ▸ You will have dirty data.
  20. USE CASES FOR E-POST DEVELOPMENT ▸ Machine sizing for Open

    Nebula ▸ Service names for Consul ▸ TBD: Firewall rules generation ▸ General information about all services ▸ Visualize dependencies of teams and bounded contexts ▸ Impact analysis of changing APIs
  21. CONCLUSION ▸ Big Picture with micro services is hard ▸

    Metadata helps to understand the system ▸ Needs to be easily editable (e.g. in the IDE) ▸ Needs to be useful to the creator ▸ Metadata will be dirty ▸ Link build time and runtime information ▸ Build tools on top of it, have a Query Language!