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

Microservices: Architecture for the Real-time Organization

Kevin Webber
February 11, 2016

Microservices: Architecture for the Real-time Organization

The real-time organization is responsive to change. Real-time organizations architect their systems to evolve naturally as they adapt to the competitive landscape around them. At the core of real-time organizations are microservices. The microservice architecture (MSA) empowers independent teams within large organizations to move at the pace of startups, freeing them from the constraints of “design by committee” and other architectural anti-patterns that ground productivity within the enterprise to a halt.

We explore all of the relevant patterns of microservices architecture including domain-driven design (DDD), circuit breaker, data pump, saga pattern, distributed transaction, async messaging, etc.

Kevin Webber

February 11, 2016
Tweet

More Decks by Kevin Webber

Other Decks in Programming

Transcript

  1. heritage architecture » Single points of failure » Impossible to

    scale out (shared mutable state, etc) » Different non-functional requirements (reads, writes, compute) » Optimized for none! » Long, risky release cycles
  2. Microservices » Ubiquitous language » Well defined models & boundaries

    » Single responsibility » Independantly deployable, scalable, resilient » Communicate via async messaging » Own their data » Don't expose a public API
  3. Approach? Principles » responsive, resilient, elastic, message-driven Concepts » bounded

    contexts (DDD), event sourcing, CQRS, CAP (eventual consistency)
  4. Approach? Principles » responsive, resilient, elastic, message-driven Concepts » bounded

    contexts (DDD), event sourcing, CQRS, CAP (eventual consistency) Tools » Typesafe Reactive Platform (Play, Akka, Spark)
  5. Concepts and patterns We will cover: » Domain Driven Design

    (DDD) » Async messaging » API management » Dependency management » CQRS & event sourcing » Transactions & ordering
  6. Async Benefits » Not wasting resources » Memory, CPU, threads

    » Embracing failure » Not expecting a return from a remote service » Designing for all scenarios
  7. API mgmt. » Messaging patterns » Pub/sub, point-to-point, streaming »

    API gateway » Routing, aggregation, protocol translation » Discovery » Service discovery, registry, versioning
  8. Considerations » ACID doesn't work across location/trust boundaries » No

    2-Phase commits (2PC) » No holding locks for the duration of work » In distributed systems we need to compensate for for failure rather than prevent failure
  9. Microservices with Typesafe » Play for API gateway » Akka

    for core microservices (DDD, CQRS, event sourcing) » ConductR for cluster management (service registry, discovery, architecture visualization, security)