Closing keynote by Jamie Allen

20
The Future of Services Jamie Allen Sr. Director of Global Solutions Architects

Transcript of Closing keynote by Jamie Allen

Page 1: Closing keynote by Jamie Allen

The Future of ServicesJamie Allen

Sr. Director of Global Solutions Architects

Page 2: Closing keynote by Jamie Allen

Traditional application architectures and platforms are obsolete.Gartner

Page 3: Closing keynote by Jamie Allen

• Accelerate teams• Reduce dependency nightmares• Increase application throughput

What are we trying to achieve?

Calvin and Hobbes, Bill Waterston

Page 4: Closing keynote by Jamie Allen

• Size is irrelevant

“Microservices” is a lousy term

Bing Images

Page 5: Closing keynote by Jamie Allen

• At the API• In our source• For our data

We want isolation

Wikipedia, Creative Commons, created by DFoerster

Page 6: Closing keynote by Jamie Allen

We want realistic data management• Use CQRS and Event Sourcing, not CRUD• Transactions, especially distributed, will not work• Consistency is an anti-pattern at scale• Distributed locks and shared data will limit you• Data fabrics break all of these conventions

Think in terms of compensation, not prevention.Kevin Webber, Lightbend

Page 7: Closing keynote by Jamie Allen

We want real resilience• It is merely whether or not something has been handled• It is only an external view, not internal where the failure has occurred• Resilience is being able to handle the “why” in a meaningful way

• Threads• Within One Node• Across Many Nodes• Across Many Servers• Across Data Centers

Page 8: Closing keynote by Jamie Allen

We want asynchronous APIs• Synchronous request/response semantics are expensive

• REST can be asynchronous, but still heavy• Each call requires a connection• Best used for external APIs

• Stream-based interactions for inter-service communication where responses are not required

• Message-based interactions for inter-service communication where responses are required

Page 9: Closing keynote by Jamie Allen

We want immutable deployments• We can bind a build of our application to a version of our configuration and

always know what is currently running • You cannot edit configuration and keep running

Dilbert, Scott Adams

Page 10: Closing keynote by Jamie Allen

We want to expose a “tip of the iceberg”

• Users see the public API• The API hides much complexity

MyBluePuzzle.org

Page 11: Closing keynote by Jamie Allen

We want Domain Driven Design• Knowing/understanding it is not necessarily a requirement• “Solving your pain” is the most important reason for microservices• In a greenfield project, Bounded Contexts and Aggregate Roots can help you to

decompose the problem

Page 12: Closing keynote by Jamie Allen

We want to ACID v2• Associativity, not Atomicity• Commutativity, not Consistency• Idempotent, not Isolation• Distributed, not Durable

Wikipedia, Creative Commons, created by Weston.pace

Page 13: Closing keynote by Jamie Allen

• Proxying• Service Discovery• Stateless aggregation• Orchestration• Failure management• Versioning

We will have additional operational complexity

Complexityandotherbeasts.com

Page 14: Closing keynote by Jamie Allen

• Service API• Persistence API• Development environment• Production environment

Page 15: Closing keynote by Jamie Allen

• IO and communication• Streaming between services as a first-class concept• Higher level of resilience and scalability with no blocking• Service is a Bounded Context in DDD

Lagom Service API

Page 16: Closing keynote by Jamie Allen

• Event sourced (deltas) with Cassandra backend by default• No object/relational impedance mismatch• Can always replay to determine current state• Allows you to learn more from your data later• Persistent entity is an Aggregate Root in DDD• Can be overridden for CRUD if you want

Lagom Persistence API

Page 17: Closing keynote by Jamie Allen

• Create single project definition in sbt, use runAll, includes:• In-memory Cassandra with own keyspaces• A service locator• A service gateway

• Overload Mode: recompile and redeploy on save

Development Environment

Page 18: Closing keynote by Jamie Allen

• Deployment• Monitoring• Scaling• Can test locally with ConductR then push to production• Launch multiple instances with a single command

Production Environment (Lightbend RP)

Page 20: Closing keynote by Jamie Allen