58
Revitalizing Aging Architectures with Microservices Kevin Webber (@kvnwbbr) Enterprise Advocate

Revitalizing Aging Architectures with Microservices

Embed Size (px)

Citation preview

Page 1: Revitalizing Aging Architectures with Microservices

Revitalizing Aging Architectures with Microservices

Kevin Webber (@kvnwbbr) Enterprise Advocate

Page 2: Revitalizing Aging Architectures with Microservices

Typesafe Reactive Platform» Play - RESTful API

framework

» Akka - Distributed computing framework

» Spark - General purpose in-memory compute engine

» ConductR, Monitoring, and commercial features

Page 3: Revitalizing Aging Architectures with Microservices

Why replatform?

Page 4: Revitalizing Aging Architectures with Microservices

2005 architecture

Page 5: Revitalizing Aging Architectures with Microservices

2015 architecture

Page 6: Revitalizing Aging Architectures with Microservices

2020 architecture

Page 7: Revitalizing Aging Architectures with Microservices

Size of the internet today

Page 8: Revitalizing Aging Architectures with Microservices

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

Page 9: Revitalizing Aging Architectures with Microservices

Walmart Canada

Page 10: Revitalizing Aging Architectures with Microservices

Business Impact

Page 11: Revitalizing Aging Architectures with Microservices

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

Page 12: Revitalizing Aging Architectures with Microservices

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

» Consistent responsiveness under varying load conditions

Page 13: Revitalizing Aging Architectures with Microservices

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

Page 14: Revitalizing Aging Architectures with Microservices

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

Page 15: Revitalizing Aging Architectures with Microservices

A Revitalized Architecture

Page 16: Revitalizing Aging Architectures with Microservices

Walmart's Business Uplift» Conversions up 20%

» Mobile orders up 98%

» No downtime Black Friday or Boxing Day

Page 17: Revitalizing Aging Architectures with Microservices

Walmart's Operational Savings» Moved off expensive hardware

» On cheap virtual x86 servers

» 20% - 50% cost savings

» ~ 40% compute cycles

Page 18: Revitalizing Aging Architectures with Microservices

Where to begin?

Page 19: Revitalizing Aging Architectures with Microservices
Page 20: Revitalizing Aging Architectures with Microservices
Page 21: Revitalizing Aging Architectures with Microservices
Page 22: Revitalizing Aging Architectures with Microservices
Page 23: Revitalizing Aging Architectures with Microservices

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

Page 24: Revitalizing Aging Architectures with Microservices

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.

Page 25: Revitalizing Aging Architectures with Microservices

ReactiveA maturity model for modern distributed systems.

» Responsive

» Resilient

» Elastic

» Message-driven

Page 26: Revitalizing Aging Architectures with Microservices

Why, What, HowReactive (principles)

» responsive, resilient, elastic, message-driven

Page 27: Revitalizing Aging Architectures with Microservices

Why, What, HowReactive (principles)

» responsive, resilient, elastic, message-driven

Microservices (strategy)

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

Page 28: Revitalizing Aging Architectures with Microservices

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)

Page 29: Revitalizing Aging Architectures with Microservices

Heritage system

Page 30: Revitalizing Aging Architectures with Microservices

Future system

Page 31: Revitalizing Aging Architectures with Microservices

Clustered microservices» responsive to events, load,

failure, users

» embrace new concepts and patterns

» cluster computing

» distribution of data

» new patterns like circuit breakers

Page 32: Revitalizing Aging Architectures with Microservices

Async boundary

Page 33: Revitalizing Aging Architectures with Microservices

Async boundary

Page 34: Revitalizing Aging Architectures with Microservices

Synchronous

Page 35: Revitalizing Aging Architectures with Microservices

Asynchronous

Page 36: Revitalizing Aging Architectures with Microservices
Page 37: Revitalizing Aging Architectures with Microservices
Page 38: Revitalizing Aging Architectures with Microservices

Microservices Ecosystemplus:

» service registry

» service discovery

» architecture visualization

» security

Page 39: Revitalizing Aging Architectures with Microservices

Play

Page 40: Revitalizing Aging Architectures with Microservices

Play AnatomyStateless

» Session is stored in the browser cookie

Actions

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

Page 41: Revitalizing Aging Architectures with Microservices

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

Page 42: Revitalizing Aging Architectures with Microservices

Akka

Page 43: Revitalizing Aging Architectures with Microservices

Actor model» Distribution

» Location transparency

» Isolation

Page 44: Revitalizing Aging Architectures with Microservices

Supervision

Page 45: Revitalizing Aging Architectures with Microservices

Typical error channel

Page 46: Revitalizing Aging Architectures with Microservices

Dedicated error channel

Page 47: Revitalizing Aging Architectures with Microservices

Validation errors

Page 48: Revitalizing Aging Architectures with Microservices

Clustering

Page 49: Revitalizing Aging Architectures with Microservices

Spark & Fast Data

Page 50: Revitalizing Aging Architectures with Microservices
Page 51: Revitalizing Aging Architectures with Microservices

Streams?» A series of elements over time

» Events, chunks of files

» No beginning, no end

Page 52: Revitalizing Aging Architectures with Microservices

Akka Streams» Per-event processing

» Back-pressure

» Not distributed

» Reactive Streams compliant

» Integrate with Spark Streaming

Page 53: Revitalizing Aging Architectures with Microservices

What Typesafe offers

Page 54: Revitalizing Aging Architectures with Microservices

Typesafe ConductRManage Typesafe Reactive Platform applications across a cluster

Page 55: Revitalizing Aging Architectures with Microservices

Typesafe MonitoringKnow exactly what your Reactive system is doing

Page 56: Revitalizing Aging Architectures with Microservices

Commercial features» Akka Split Brain Resolver

» Akka 2.3 Cluster Support for Docker

» Play User Quotas

» Play SOAP

Page 57: Revitalizing Aging Architectures with Microservices

Project Success Subscription» Certified build

» Compatibility verifications

» Security alerts

» Binary updates

» Long-term support

» Legal protection

Page 58: Revitalizing Aging Architectures with Microservices

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

Contact info

» Twitter: @kvnwbbr

» Email: [email protected]