20160520 The Future of Services
-
Upload
shinolajla -
Category
Technology
-
view
576 -
download
2
Transcript of 20160520 The Future of Services
![Page 1: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/1.jpg)
The Future of ServicesJamie Allen
Sr. Director of Global Solutions Architects
![Page 2: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/2.jpg)
@jamie_allen
Traditional application architectures and platforms are obsolete.Gartner
![Page 3: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/3.jpg)
@jamie_allen
• Accelerate teams• Reduce dependency nightmares• Increase application throughput
What are we trying to achieve?
Calvin and Hobbes, Bill Waterston
![Page 4: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/4.jpg)
@jamie_allen
• Size is irrelevant
“Microservices” is a lousy term
Bing Images
![Page 5: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/5.jpg)
@jamie_allen
• At the API• In our source• For our data
We want isolation
Wikipedia, Creative Commons, created by DFoerster
![Page 6: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/6.jpg)
@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: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/7.jpg)
@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 8: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/8.jpg)
@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 9: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/9.jpg)
@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 10: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/10.jpg)
@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 11: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/11.jpg)
@jamie_allen
We want to expose a “tip of the iceberg”
• Users see the public API• The API hides much complexity
MyBluePuzzle.org
![Page 12: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/12.jpg)
@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 13: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/13.jpg)
@jamie_allen
• Proxying• Service Discovery• Stateless aggregation• Orchestration• Failure management• Versioning
We will have additional operational complexity
Complexityandotherbeasts.com
![Page 14: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/14.jpg)
@jamie_allen
• Service API• Persistence API• Development environment• Production environment
![Page 15: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/15.jpg)
@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: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/16.jpg)
@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: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/17.jpg)
@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: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/18.jpg)
@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 19: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/19.jpg)
@jamie_allen
LinksProject Site:http://www.lightbend.com/lagom
GitHub Repo:https://github.com/lagom
Documentation:http://www.lagomframework.com/documentation/1.0.x/Home.html
![Page 20: 20160520 The Future of Services](https://reader031.fdocuments.us/reader031/viewer/2022030308/58ef4b371a28ab69428b4645/html5/thumbnails/20.jpg)