Revitalizing Aging Architectures with Microservices

Post on 23-Jan-2018

7.177 views 0 download

Transcript of Revitalizing Aging Architectures with Microservices

Revitalizing Aging Architectures with Microservices

Kevin Webber (@kvnwbbr) Enterprise Advocate

Typesafe Reactive Platform» Play - RESTful API

framework

» Akka - Distributed computing framework

» Spark - General purpose in-memory compute engine

» ConductR, Monitoring, and commercial features

Why replatform?

2005 architecture

2015 architecture

2020 architecture

Size of the internet today

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

Walmart Canada

Business Impact

The goal» ~100% availability ("nine nines")

The goal» ~100% availability ("nine nines")

» Consistent responsiveness under varying load conditions

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

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

A Revitalized Architecture

Walmart's Business Uplift» Conversions up 20%

» Mobile orders up 98%

» No downtime Black Friday or Boxing Day

Walmart's Operational Savings» Moved off expensive hardware

» On cheap virtual x86 servers

» 20% - 50% cost savings

» ~ 40% compute cycles

Where to begin?

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...

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.

ReactiveA maturity model for modern distributed systems.

» Responsive

» Resilient

» Elastic

» Message-driven

Why, What, HowReactive (principles)

» responsive, resilient, elastic, message-driven

Why, What, HowReactive (principles)

» responsive, resilient, elastic, message-driven

Microservices (strategy)

» bounded contexts (DDD), event sourcing, CQRS, eventual consistency

Why, What, HowReactive (principles)

» responsive, resilient, elastic, message-driven

Microservices (strategy)

» bounded contexts (DDD), event sourcing, CQRS, eventual consistency

Tools (implementation)

» Typesafe Reactive Platform (Play, Akka, Spark)

Heritage system

Future system

Clustered microservices» responsive to events, load,

failure, users

» embrace new concepts and patterns

» cluster computing

» distribution of data

» new patterns like circuit breakers

Async boundary

Async boundary

Synchronous

Asynchronous

Microservices Ecosystemplus:

» service registry

» service discovery

» architecture visualization

» security

Play

Play AnatomyStateless

» Session is stored in the browser cookie

Actions

» User-defined functions that run in a different context than the request loop

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

Akka

Actor model» Distribution

» Location transparency

» Isolation

Supervision

Typical error channel

Dedicated error channel

Validation errors

Clustering

Spark & Fast Data

Streams?» A series of elements over time

» Events, chunks of files

» No beginning, no end

Akka Streams» Per-event processing

» Back-pressure

» Not distributed

» Reactive Streams compliant

» Integrate with Spark Streaming

What Typesafe offers

Typesafe ConductRManage Typesafe Reactive Platform applications across a cluster

Typesafe MonitoringKnow exactly what your Reactive system is doing

Commercial features» Akka Split Brain Resolver

» Akka 2.3 Cluster Support for Docker

» Play User Quotas

» Play SOAP

Project Success Subscription» Certified build

» Compatibility verifications

» Security alerts

» Binary updates

» Long-term support

» Legal protection

Thank you!Visit https://www.typesafe.com/products/typesafe-reactive-platform to get started

Contact info

» Twitter: @kvnwbbr

» Email: kevin.webber@typesafe.com