Cloud-native describes a way of building applications on a cloud platform to iteratively discover and deliver business value. We now have access to a lot of similar technology that the large internet companies pioneered and used to their advantage to dominate their respective markets. What challenges arise when we start building applications to take advantage of this new technology?
In this talk we'll explore the role of service meshes when building distributed systems, why they make sense, and where they don't make sense. We will look at a class of problem that crops up that service mesh cannot solve, but that frameworks and even new programming languages like Ballerina are aiming to solve
9. • Orchestrate calls across multiple microservices
• Calls in parallel, sequential, etc
• Aggregate, combine, transform, split, on “messages”
• Deal with errors, unexpected results
Application integration
@christianposta
10. • Deal with atomicity / consistency issues
• Message idempotency / message de-dupe
• APIs / DDD anti-corruption layers / adapters
• Tie in with existing “backend systems”
• Deal with making calls over the network
Application integration
@christianposta
16. • A new language purpose-built for creating services/APIs and
integrating with existing investments/services
• Built by WSO2
• Static, strong typing with language constructs that make
services and service interaction first-class citizens
• Strong focus on network awareness
Ballerina is…
@christianposta
17. • Built around a “sequence-diagram” mental model
• Round-trip development as a first-class citizen
• Native concurrency model
• Solves problems around application integration like:
Ballerina is…
@christianposta
• Service call orchestration
• Aggregating responses
• Data security
• Transactions, compensations
• Quickly build APIs based on OAPI
• Reusable protocol / backend adapters
• Long-running execution with checkpointing
• Stream based processing
33. A service mesh is a distributed application infrastructure
that is responsible for handling network traffic on behalf
of the application in a transparent, out of process manner.
A service mesh helps to solve problems related to
resiliency, security, observability, and routing control.
@christianposta
Time for definitions:
34. Service mesh technologies typically provide:
• Service discovery / Load balancing
• Secure service-to-service communication
• Traffic control / shaping / shifting
• Policy / Intention based access control
• Traffic metric collection
• Service resilience
@christianposta
38. @christianposta
Isn’t there overlap??
• Service discovery
• Load balancing
• Timeouts
• Retries
• Circuit breaking
• Rate limiting
• Distributed tracing
• … some others …
39. Leverage the service mesh for key, consistent application-
networking behavior.
Develop a workflow for application teams that includes
configuration of the service mesh as part of the application.
Opt for language-specific implementations when the general
service mesh solution doesn’t adequately solve a specific
problem.
@christianposta
Key takeaways:
40. Resist the urge to put application-integration logic into the
service mesh.
Understand the “why” of service mesh and seek to keep the
boundary delineated
@christianposta
Key takeaways:
42. Thanks!
BTW: Hand drawn diagrams made with Paper by FiftyThree.com
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: christian@redhat.com
Slides: http://slideshare.net/cepostaFollow up links:
• http://ballerina.io
• http://istio.io
• http://envoyproxy.io
• http://developers.redhat.com/blog
• http://blog.christianposta.com/istio-workshop/slides/
• http://blog.openshift.com
• https://www.redhat.com/en/open-innovation-labs
Editor's Notes
How many first KubeCon?
Lots of good technology coming out
Kubernetes has enabled lots of new cloud-native solutions to be layered on top and around
In this talk we’ll look at some of this new technology, and more importantly where they fit in our architecture and how to think about using them.
There are no silver bullets.
How many people are embarking on projects to drive innovation in their organizations?
How many people think those projects will succeed?
How many people can predict the future?
How many people believe their organization’s executives can predict the future?
How many people are embarking on projects to drive innovation in their organizations?
How many people think those projects will succeed?
How many people can predict the future?
How many people believe their organization’s executives can predict the future?
How many people are embarking on projects to drive innovation in their organizations?
How many people think those projects will succeed?
How many people can predict the future?
How many people believe their organization’s executives can predict the future?
How many people are embarking on projects to drive innovation in their organizations?
How many people think those projects will succeed?
How many people can predict the future?
How many people believe their organization’s executives can predict the future?
As we start to make calls out across multiple services, we have to deal with the network .
Apache Camel can enable legacy backends to participate in a REST-based set of services by quickly exposing a REST service interface using its expressive DSL.. The DSL plugins right into the rest of the Apache Camel DSL allowing you to quickly expose a REST endpoint that can describe an API as well as integrate with backend services by mediating, routing, transforming and otherwise changing the shape of data or even content of a payload with enricher, resequence, and recipient list patterns.
Apache Camel can enable legacy backends to participate in a REST-based set of services by quickly exposing a REST service interface using its expressive DSL.. The DSL plugins right into the rest of the Apache Camel DSL allowing you to quickly expose a REST endpoint that can describe an API as well as integrate with backend services by mediating, routing, transforming and otherwise changing the shape of data or even content of a payload with enricher, resequence, and recipient list patterns.
In the past we tried to hide the network with EJBs, DCOM, client server/CORBA abstractions
Network calls should NOT be treated like local calls
…… new challenge….. Let’s come back to that…..
There are ways to do this..
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
…… new challenge….. Let’s come back to that…..
At one point we called these “microservices patterns”
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
One large database!
We should focus on how we design our data models so that they can be sharded and distributed…. Focus on transactions, etc not 2PC
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
A service mesh is a distributed application infrastructure that is responsible for handling network traffic on behalf of the application in a transparent, out of process manner.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.
A service mesh is a distributed application infrastructure that is responsible for handling network traffic on behalf of the application in a transparent, out of process manner.
A service mesh is a distributed application infrastructure that is responsible for handling network traffic on behalf of the application in a transparent, out of process manner.
A service mesh is a distributed application infrastructure that is responsible for handling network traffic on behalf of the application in a transparent, out of process manner.
Get back to first principles.
Focus on principles, patterns, methodologies.
Tools will help, but you cannot start with tools.