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

Revitalizing Aging Architectures with Microservices and the Reactive Platform

Kevin Webber
December 01, 2015

Revitalizing Aging Architectures with Microservices and the Reactive Platform

When you need to react quickly to competitive threats, but your existing architecture is anything but nimble, what do you do? You will hear the story of how Walmart Canada revitalized its aging architecture with a microservices model built for speed and performance - that efficiently leveraged its JVM infrastructure - to achieve major e-commerce success in just 12 months.

Results:

1. Conversions up 20%
2. Mobile orders up 98%
3. No downtime during Black Friday or Boxing Day

Kevin Webber

December 01, 2015
Tweet

More Decks by Kevin Webber

Other Decks in Programming

Transcript

  1. Typesafe Reactive Platform » Play - RESTful API framework »

    Akka - Distributed computing framework » Spark - General purpose in- memory compute engine » ConductR, Monitoring, and commercial features
  2. The world by 2020 » 4 billion connected people »

    25+ million apps » 25+ billion embedded systems » 40 zettabytes (40 trillion gigabytes) » 5,200 GB of data for every person on Earth
  3. The goal » ~100% availability ("nine nines") » Consistent responsiveness

    under varying load conditions » Predictable spikes of traffic, e.g, Black Friday » Less predictable spikes of traffic, e.g, marketing campaign driving traffic
  4. The goal » ~100% availability ("nine nines") » Consistent responsiveness

    under varying load conditions » Predictable spikes of traffic, e.g, Black Friday » Less predictable spikes of traffic, e.g, marketing campaign driving traffic » Enable LOBs to rapidly adapt to market conditions
  5. Walmart's Business Uplift » Conversions up 20% » Mobile orders

    up 98% » No downtime Black Friday or Boxing Day
  6. Walmart's Operational Savings » Moved off expensive hardware » On

    cheap virtual x86 servers » 20% - 50% cost savings » ~ 40% compute cycles
  7. asynchronous, non-blocking, real-time, highly- available, loosely coupled, scalable, fault-tolerant, concurrent,

    reactive, event-driven, push instead of pull, distributed, low latency, high throughput...
  8. asynchronous, non-blocking, real-time, highly- available, loosely coupled, scalable, fault-tolerant, concurrent,

    reactive, event-driven, push instead of pull, distributed, low latency, high throughput... Too complicated. We need a simple vocabulary.
  9. Why, What, How Reactive (principles) » responsive, resilient, elastic, message-driven

    Microservices (strategy) » bounded contexts (DDD), event sourcing, CQRS, eventual consistency
  10. Why, What, How Reactive (principles) » responsive, resilient, elastic, message-driven

    Microservices (strategy) » bounded contexts (DDD), event sourcing, CQRS, eventual consistency Tools (implementation) » Typesafe Reactive Platform (Play, Akka, Spark)
  11. Clustered microservices » responsive to events, load, failure, users »

    embrace new concepts and patterns » cluster computing » distribution of data » new patterns like circuit breakers
  12. Play Anatomy Stateless » Session is stored in the browser

    cookie Actions » User-defined functions that run in a different context than the request loop
  13. Play at its core » Familiar MVC paradigm » Embraces

    flows of data » WebSockets, SSE » Reactive Streams (experimental in Play 2.4) » File uploads » Integration with Akka » Distribute work via messaging
  14. Streams? » A series of elements over time » Events,

    chunks of files » No beginning, no end
  15. Akka Streams » Per-event processing » Back-pressure » Not distributed

    » Reactive Streams compliant » Integrate with Spark Streaming
  16. Commercial features » Akka Split Brain Resolver » Akka 2.3

    Cluster Support for Docker » Play User Quotas » Play SOAP
  17. Project Success Subscription » Certified build » Compatibility verifications »

    Security alerts » Binary updates » Long-term support » Legal protection