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

Reactive Microsystems: The Evolution of Microse...

Jonas Bonér
October 03, 2017

Reactive Microsystems: The Evolution of Microservices at Scale

Everyone is talking about Microservices and there is more confusion than ever about what the promise of Microservices really means—and how to deliver on it. To address this situation, we will explore Microservices from first principles, distill their essence and put them in their true context: Distributed Systems.

Distributed Systems is very hard and we—system developers—have been spoiled by centralized servers for too long. Slicing an existing system into various REST services and wiring them back together again with synchronous protocols and traditional enterprise tools—designed for Monolithic architectures—will set us up for failure. 

As if that wasn’t enough, we can’t only think about systems of Microservices. In order to make each Microservice scalable and resilient in and of itself, we have to design each Microservice as a Distributed System—a «Microsystem»—architected from the ground up using the Reactive principles and Events-first Domain Driven Design. 

In this talk I’ll walk you through the evolution of such a system, discussing what you need to know in order to design a Scalable Microservices Architecture.

Jonas Bonér

October 03, 2017
Tweet

More Decks by Jonas Bonér

Other Decks in Programming

Transcript

  1. DON'T FOCUS ON THE THINGS the nouns the domain objects

    FOCUS ON WHAT HAPPENS the verbs the events
  2. When you start modeling events, it forces you to think

    about the behavior of the system, as opposed to thinking about structure inside the system. — Greg Young
  3. ASYNCHRONOUS & NON-BLOCKING - MORE EFFICIENT USE OF RESOURCES -

    MINIMIZES CONTENTION ON SHARED RESOURCES
  4. WE'RE GETTING THERE, BUT WE STILL HAVE A SINGLE INSTANCE

    MICROSERVICE 㱺 NOT SCALABLE 㱺 NOT RESILIENT
  5. ALLOWS FOR LOCATION TRANSPARENCY ONE COMMUNICATION ABSTRACTION ACROSS ALL DIMENSIONS

    OF SCALE CORE 㱺 SOCKET 㱺 CPU 㱺 CONTAINER 㱺 SERVER 㱺 RACK 㱺 DATA CENTER 㱺 SYSTEM
  6. Update-in-place strikes systems designers as a cardinal sin: it violates

    traditional accounting practices that have been observed for hundreds of years. — Jim Gray
  7. The truth is the log. The database is a cache

    of a subset of the log. — Pat Helland
  8. Modeling events forces you to have a temporal focus on

    what’s going on in the system. Time becomes a crucial factor of the system. — Greg Young
  9. THE LOG IS A DATABASE OF THE PAST NOT JUST

    A DATABASE OF THE PRESENT
  10. In general, application developers simply do not implement large scalable

    applications assuming distributed transactions. — Pat Helland
  11. IN SUMMARY 1. Don't build Microliths 2. Microservices come in

    (distributed) systems 3. Microservices come as (micro)systems 4. Embrace the Reactive principles 5. Embrace Event-first DDD & Persistence 6. Profit!