SlideShare a Scribd company logo
1 of 81
Download to read offline
A Microservices Journey
@christianposta
Christian Posta
Chief Architect, cloud application development
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: christian@redhat.com
Slides: http://slideshare.net/ceposta
• Author “Microservices for Java developers”
• Committer/contributor lots of open-source
projects
• Worked with large Microservices, web-scale,
unicorn company
• Blogger, speaker about DevOps, integration,
and microservices
Rough path of discussions
today
• Microservices: What, Why, When?
• “Cloud-native” with a Platform
• Microservices frameworks
• Service decomposition and boundaries
• Microservice resilience, routing, and control
@christianposta
Microserivces:
What, Why, When
@christianposta
“The microservice architectural style is an
approach to developing a single application as
a suite of small services, each running in its
own process and communicating with
lightweight mechanisms, often an HTTP
resource API. These services are built around
business capabilities and independently
deployable by fully automated deployment
machinery.”
A microservices definition
• Single, self-contained, autonomous
• Isolated and Resilient to faults
• Faster software delivery
• Own their own data
• Easier to understand individually
• Scalability
• Right technology for the problem
• Test individual services
• Individual deployments
Microservices?
@christianposta
• System complexity
• Operational complexity
• Testing is harder across services
• Security
• Hard to get boundaries right (transactions,
APIs, etc)
• Resource overhead
• Network overhead
• Lack of tooling
Drawbacks to microservices
@christianposta
Why would one implement a system
as microservices?
@christianposta
Pain we may feel…
@christianposta
• Making changes in one place negatively affects
unrelated areas
• Low confidence making changes that don’t break
things
• Spend lots of time trying to coordinate work between
team members
• Structure in the application has eroded or is non-
existant
• We have no way to quantify how long code merges
will take
@christianposta
• Development time is slow simply because the project
is so big (IDE bogs down, running tests is slow, slow
bootstrap time, etc)
• Changes to one module force changes across other
modules
• Difficult to sunset outdated technology
• We’ve built our new applications around old
premises like batch processing
• Application steps on itself at runtime managing
resources, allocations, computations
Pain we may feel…
Microservices is about optimizing for speed.
@christianposta
If change is happening on the
outside faster than on the inside
the end is in sight.
S&P company life expectancy
@christianposta
Jack Welch, former CEO, GE
Fortune 500 firms in 1955 vs. 2014;
88% are gone
@christianposta
Competitive advantage is transient.
We need to continuously re-invent our
business models to compete and stay
relevant.
We need to continuously innovate.
@christianposta
Innovation is admitting we don’t
have all the answers
Mark Schwartz – Former CIO USCIS
@christianposta
We need to figure out the right
questions to ask…
Mark Schwartz – Former CIO USCIS
@christianposta
How do we do this?
@christianposta
• Identify goals
• Free teams to explore possible solution spaces
• Generate hypothesis
• Design cheap experiments to test hypothesis
• Work in small batches
• Learn from results
• Calibrate investment; rinse, repeat
“If I invest $5-$10M in your company and you fail, I have 30
other investments. It’s just a footnote in my investment history.”
https://medium.com/@mattklein123/optimizing-impact-why-i-will-not-start-an-envoy-platform-company-8904286658cb
https://barryoreilly.com/2017/04/06/optimize-to-be-wrong-not-right/
Create options through experiments
@christianposta
Learning through build-measure-learn
Microservices help us go faster.
@christianposta
So do we microservices all the way down?
@christianposta
@christianposta
http://blog.hypeinnovation.com/using-the-three-horizons-framework-for-innovation
IT Portfolio management strategies
@christianposta
Lean Enterprise: http://shop.oreilly.com/product/0636920030355.do
@christianposta
http://blog.hypeinnovation.com/using-the-three-horizons-framework-for-innovation
IT Portfolio management
MVPs, experiments, small apps
(co-locate if you have to write an app)
Product development, initial scale
(co-locate perfectly okay here!! ..
Microserices? possibly…)
Starting to feel the weight of maintenance,
need to shoot for efficiencies, integrate
new approaches to increase revenue
(microservices land)
Microservices != good design
AND
Co-location != bad design
@christianposta
DON’T optimize for microservices if…
@christianposta
• You’re building a Minimum Viable Product (MVP), testing a
hypothesis
• You’re building a CRUD application
• You system isn’t CRUD, but the business logic not very
complicated
• Your system doesn’t have > 10 people all trying to
coordinate to work on it
• Your application doesn’t need to scale
• You deliver packaged software
• You’re building HPC systems
Making “cloud-native” economical
@christianposta
We can now assert with confidence that
high IT performance correlates with
strong business performance, helping
to boost productivity, profitability and
market share.
@christianposta
https://puppet.com/resources/whitepaper/2014-state-devops-report
High performing IT teams
@christianposta
• …are encouraged to experiment
• …learn from failure
• …work in small batches
• …focus on getting continuous feedback
• …are held to outcomes, not output
• …continuously prioritize and reprioritize based on
cost of delay (http://blackswanfarming.com/cost-of-
delay/)
High performing IT teams need these
IT capabilities and practices
@christianposta
• Continuous Integration (build from master)
• Continuous Delivery (automated pipelines)
• Safe, reliable delivery mechanisms
• Modern, scalable, resilient application architectures
• Self-service, on-demand infrastructure
• Automated testing
• Metrics, logs, traces, observability
• Feedback loops
• Security as part of the pipeline
@christianposta
https://www.infoq.com/articles/cloud-native-panel
"Cloud native” describes applications, architectures,
platforms/infrastructure, and processes, that together
make it economical to work to in small batches to learn
and reduce uncertainty.
• Distributed configuration
• Service Discovery
• Loadbalancing
• Circuit Breakers
• Bulkheading
• Versioning/Routing
• Based on AWS
“Cloud-native” platform
What about non-java?
@christianposta
Kubernetes
@christianposta
Cluster management
• Distributed configuration
• Service Discovery
• Loadbalancing
• Versioning/Routing
• Deployments
• Scaling/Autoscaling
• Liveness/Health checking
• Self healing
• Logging, Metrics, Tracing
@christianposta
@christianposta
• Team self service application deployment
• Developer workflow
• Enterprise focused (LDAP, RBAC, Oauth, etc)
• Integrated Docker registry
• Jenkins Pipeline (CI/CD) out of the box
• Build/deployment triggers
• Software Defined Networking (SDN)
• Docker native format/packaging
• CLI/IDE/Web based tooling
OpenShift is a Kubernetes platform
@christianposta
@christianposta
@christianposta
@christianposta
@christianposta
• Simple configuration
• Curated dependencies and transitive
dependencies
• Built in metrics, monitoring
• Slim profile for deployment
• Strong communities (spring, vert.x,
microprofile.io)
OpenShift Application Runtimes
Use Kubernetes/OpenShift
• Distributed configuration
• Service Discovery
• Loadbalancing
• Versioning/Routing
• Deployments
• Scaling/Autoscaling
• Liveness/Health checking
• Self healing
• Logging, Metrics, Tracing
@christianposta
What if we’re already using
things like Spring Cloud and/or
Netflix OSS?!
@christianposta
spring-cloud-kubernetes
• DiscoveryClient
• Ribbon integration
• Actuator/Health integrations
• Hystrix/Turbine Dashboard integrations
(kubeflix)
• Zipkin Tracing
• Configuration via ConfigMaps
• Archaius Bridge for dynamic configs
https://github.com/spring-cloud-incubator/spring-cloud-kubernetes
Microservices boundaries
@christianposta
@christianposta
Book checkout / purchase Title Search
Recommendations
Weekly reporting
@christianposta
@christianposta
• Break things into smaller,
understandable models
• Surround a model and its
“context” with a boundary
• Implement the model in code
or get a new model
• Explicitly map between
different contexts
• Model transactional
boundaries as aggregates
Focus on domain models, not data models
@christianposta
Service Cutter: A systemic approach to
service
decomposition
@christianposta
https://servicecutter.github.io
@christianposta
How do we share information?
• REST, RPC
• Streams/Events(ActiveMQ, JMS, AMQP, STOMP, Kafka,
etc)
• Legacy (SOAP, mainframe, file processing, proprietary)
• Routing, Aggregation, Splitting, Transactions,
Compensations, Filtering, etc.
@christianposta
• Small Java library
• 200+ components for integrating systems (bring along only
the ones you use)
• Powerful EIPs (routing, transformation, error handling)
• Distributed-systems swiss-army knife!
• Declarative DSL
• Embeddable into any JVM (EAP, Karaf, Tomcat, Spring
Boot, Dropwizard, Wildfly Swarm, no container, etc)
Apache Camel
@christianposta
@christianposta
public class OrderProcessorRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
rest().post(“/order/socks”)
.description(“New Order for pair of socks”)
.consumes(“application/json”)
.route()
.to(“activemq:topic:newOrder”)
.log(“received new order ${body.orderId}”)
.to(“ibatis:storeOrder?statementType=Insert”);
}
Camel REST DSL
@christianposta
Microservices resilience, routing,
control
@christianposta
Things you must solve for because…
distributed systems
• Service discovery
• Retries
• Timeouts
• Load balancing
• Rate limiting
• Thread bulk heading
• Circuit breaking
…continued
• Routing between services (adaptive, zone-aware)
• Deadlines
• Back pressure
• Outlier detection
• Health checking
• Traffic shaping
• Request shadowing
…continued
• Edge/DMZ routing
• Surgical / fine / per-request routing
• A/B rollout
• Internal releases / dark launches
• Fault injection
• Stats, metric, collection
• Logging
• Tracing
@christianposta
http://bit.ly/application-networking
@christianposta
http://bit.ly/application-networking
@christianposta
http://bit.ly/application-networking
• Netflix Hystrix (circuit breaking / bulk heading)
• Netflix Zuul (edge router)
• Netflix Ribbon (client-side service discovery / load balance)
• Netflix Eureka (service discovery registry)
• Brave / Zipkin (tracing)
• Netflix spectator / atlas (metrics)
“Microservices” patterns
@christianposta
@christianposta
http://bit.ly/application-networking
But I’m using Spring!
• spring-cloud-netflix-hystrix
• spring-cloud-netflix-zuul
• spring-cloud-netflix-eureka-client
• spring-cloud-netflix-ribbon
• spring-cloud-netflix-atlas
• spring-cloud-netflix-spectator
• spring-cloud-netflix-hystrix-stream
• …..
• ......
• @Enable....150differentThings
But I’m using Vert.x!
• vertx-circuit-breaker
• vertx-service-discovery
• vertx-dropwizard-metrics
• vertx-zipkin?
• …..
• ......
But I’m using NodeJS!
But I’m using Go!
But I’m using Python!
Get the point?
@christianposta
https://lyft.github.io/envoy/
Meet Envoy Proxy
Sidecar pattern
Meet Istio Service Mesh
https://istio.io
Quick Demo
https://istio.io/docs/samples/bookinfo.html
• Have self-service infrastructure automation?
• Have self-service application automation?
• Have working CI/CD?
• Have health checking, monitoring,
instrumentation?
• Have logging, distributed tracing?
• Able to release services independently?
• Honoring backward and forward
Are you doing microservices?
@christianposta
• Number of features accepted
• % of features completed
• User satisfaction
• Feature Cycle time
• defects discovered after deployment
• customer lifetime value (future profit as a result of relationship with the
customer) https://en.wikipedia.org/wiki/Customer_lifetime_value
• revenue per feature
• mean time to recovery
• % improvement in SLA
• number of changes
• number of user complaints, recommendations, suggestions
• % favorable rating in surveys
• % of users using which features
• % reduction in error rates
• avg number of tx / user
• MANY MORE!
Focus on going fast and learning
• The hardest part of microservices? Your data
https://developers.redhat.com/blog/2016/08/02/the-hardest-part-about-microservices-your-data/
• Microservices patterns:
circuit breaking with Envoy Proxy
https://developers.redhat.com/blog/2017/05/31/microservices-patterns-with-envoy-sidecar-proxy-
part-i-circuit-breaking/
• Monolith to microservices Part I
https://developers.redhat.com/blog/2017/09/26/low-risk-monolith-microservice-evolution-part/
• Monolith to microservices Part II
https://developers.redhat.com/blog/2017/10/23/low-risk-monolith-microservice-evolution-part-ii/
More material
@christianposta
• Download and explore OpenShift
• https://www.openshift.org/minishift/
• Checkout Spring Boot/WildFlySwarm/Vert.x on
OpenShift:
• https://launch.openshift.io
• Reach out to your Red Hat rep to discuss more and/or
get me/my team involved with your initiatives
What next?
Thanks!
BTW: Hand drawn diagrams made with Paper by FiftyThree.com @christianposta
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: christian@redhat.com
Slides: http://slideshare.net/ceposta
Follow up links:
• http://openshift.io
• http://launch.openshift.io
• http://blog.openshift.com
• http://developers.redhat.com/blog
• https://www.redhat.com/en/open-innovation-labs
• https://www.redhat.com/en/technologies/jboss-middleware/3scale
• https://www.redhat.com/en/technologies/jboss-middleware/fuse

More Related Content

What's hot

What's hot (20)

How Apache Spark and Apache Hadoop are being used to keep banking regulators ...
How Apache Spark and Apache Hadoop are being used to keep banking regulators ...How Apache Spark and Apache Hadoop are being used to keep banking regulators ...
How Apache Spark and Apache Hadoop are being used to keep banking regulators ...
 
Next Generation Enterprise Architecture
Next Generation Enterprise ArchitectureNext Generation Enterprise Architecture
Next Generation Enterprise Architecture
 
Exploring microservices in a Microsoft landscape
Exploring microservices in a Microsoft landscapeExploring microservices in a Microsoft landscape
Exploring microservices in a Microsoft landscape
 
IlOUG Tech Days 2016 - Big Data for Oracle Developers - Towards Spark, Real-T...
IlOUG Tech Days 2016 - Big Data for Oracle Developers - Towards Spark, Real-T...IlOUG Tech Days 2016 - Big Data for Oracle Developers - Towards Spark, Real-T...
IlOUG Tech Days 2016 - Big Data for Oracle Developers - Towards Spark, Real-T...
 
SQL Server on Linux - march 2017
SQL Server on Linux - march 2017SQL Server on Linux - march 2017
SQL Server on Linux - march 2017
 
Cortana Analytics Workshop: The "Big Data" of the Cortana Analytics Suite, Pa...
Cortana Analytics Workshop: The "Big Data" of the Cortana Analytics Suite, Pa...Cortana Analytics Workshop: The "Big Data" of the Cortana Analytics Suite, Pa...
Cortana Analytics Workshop: The "Big Data" of the Cortana Analytics Suite, Pa...
 
Modern Data Warehousing with the Microsoft Analytics Platform System
Modern Data Warehousing with the Microsoft Analytics Platform SystemModern Data Warehousing with the Microsoft Analytics Platform System
Modern Data Warehousing with the Microsoft Analytics Platform System
 
Enterprise Data Warehouse Optimization: 7 Keys to Success
Enterprise Data Warehouse Optimization: 7 Keys to SuccessEnterprise Data Warehouse Optimization: 7 Keys to Success
Enterprise Data Warehouse Optimization: 7 Keys to Success
 
Securing your Big Data Environments in the Cloud
Securing your Big Data Environments in the CloudSecuring your Big Data Environments in the Cloud
Securing your Big Data Environments in the Cloud
 
Cortana Analytics Suite
Cortana Analytics SuiteCortana Analytics Suite
Cortana Analytics Suite
 
The Future of Data Warehousing, Data Science and Machine Learning
The Future of Data Warehousing, Data Science and Machine LearningThe Future of Data Warehousing, Data Science and Machine Learning
The Future of Data Warehousing, Data Science and Machine Learning
 
McGraw-Hill Optimizes Analytics Workloads with Databricks
 McGraw-Hill Optimizes Analytics Workloads with Databricks McGraw-Hill Optimizes Analytics Workloads with Databricks
McGraw-Hill Optimizes Analytics Workloads with Databricks
 
AWS Cloud Kata 2013 | Singapore - Getting to Scale on AWS
AWS Cloud Kata 2013 | Singapore - Getting to Scale on AWSAWS Cloud Kata 2013 | Singapore - Getting to Scale on AWS
AWS Cloud Kata 2013 | Singapore - Getting to Scale on AWS
 
Modern Data Warehouse Overview
Modern Data Warehouse OverviewModern Data Warehouse Overview
Modern Data Warehouse Overview
 
Building the Data Lake with Azure Data Factory and Data Lake Analytics
Building the Data Lake with Azure Data Factory and Data Lake AnalyticsBuilding the Data Lake with Azure Data Factory and Data Lake Analytics
Building the Data Lake with Azure Data Factory and Data Lake Analytics
 
Still on IBM BigInsights? We have the right path for you
Still on IBM BigInsights? We have the right path for youStill on IBM BigInsights? We have the right path for you
Still on IBM BigInsights? We have the right path for you
 
Cloudera Analytics and Machine Learning Platform - Optimized for Cloud
Cloudera Analytics and Machine Learning Platform - Optimized for Cloud Cloudera Analytics and Machine Learning Platform - Optimized for Cloud
Cloudera Analytics and Machine Learning Platform - Optimized for Cloud
 
Scaling Data Science on Big Data
Scaling Data Science on Big DataScaling Data Science on Big Data
Scaling Data Science on Big Data
 
Db2 event store
Db2 event storeDb2 event store
Db2 event store
 
The Practice of Big Data - The Hadoop ecosystem explained with usage scenarios
The Practice of Big Data - The Hadoop ecosystem explained with usage scenariosThe Practice of Big Data - The Hadoop ecosystem explained with usage scenarios
The Practice of Big Data - The Hadoop ecosystem explained with usage scenarios
 

Similar to Sidecars and a Microservices Mesh

Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
Christian Posta
 

Similar to Sidecars and a Microservices Mesh (20)

Microservices Journey Summer 2017
Microservices Journey Summer 2017Microservices Journey Summer 2017
Microservices Journey Summer 2017
 
A microservices journey - Round 2
A microservices journey - Round 2A microservices journey - Round 2
A microservices journey - Round 2
 
A Microservice Journey
A Microservice JourneyA Microservice Journey
A Microservice Journey
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
 
SOA to Microservices
SOA to MicroservicesSOA to Microservices
SOA to Microservices
 
Lowering the risk of monolith to microservices
Lowering the risk of monolith to microservicesLowering the risk of monolith to microservices
Lowering the risk of monolith to microservices
 
The Hardest Part of Microservices: Calling Your Services
The Hardest Part of Microservices: Calling Your ServicesThe Hardest Part of Microservices: Calling Your Services
The Hardest Part of Microservices: Calling Your Services
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
 
Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...
Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...
Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...
 
KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...
KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...
KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers
 
Microservices and Integration: what's next with Istio service mesh
Microservices and Integration: what's next with Istio service meshMicroservices and Integration: what's next with Istio service mesh
Microservices and Integration: what's next with Istio service mesh
 
An evolution of application networking: service mesh
An evolution of application networking: service meshAn evolution of application networking: service mesh
An evolution of application networking: service mesh
 
How to create awesome customer experiences
How to create awesome customer experiencesHow to create awesome customer experiences
How to create awesome customer experiences
 
DevOps: What, who, why and how?
DevOps: What, who, why and how?DevOps: What, who, why and how?
DevOps: What, who, why and how?
 
I Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at AmazonI Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at Amazon
 
Customer Sharing: Trend Micro - Trend Micro's DevOps Practices
Customer Sharing: Trend Micro - Trend Micro's DevOps Practices Customer Sharing: Trend Micro - Trend Micro's DevOps Practices
Customer Sharing: Trend Micro - Trend Micro's DevOps Practices
 
Dashlane Mission Teams
Dashlane Mission TeamsDashlane Mission Teams
Dashlane Mission Teams
 

More from Red Hat Developers

More from Red Hat Developers (20)

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOps
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on Kubernetes
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech Talk
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech Talk
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech Talk
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech Talk
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
 

Recently uploaded

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Recently uploaded (20)

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 

Sidecars and a Microservices Mesh

  • 2. Christian Posta Chief Architect, cloud application development Twitter: @christianposta Blog: http://blog.christianposta.com Email: christian@redhat.com Slides: http://slideshare.net/ceposta • Author “Microservices for Java developers” • Committer/contributor lots of open-source projects • Worked with large Microservices, web-scale, unicorn company • Blogger, speaker about DevOps, integration, and microservices
  • 3.
  • 4. Rough path of discussions today • Microservices: What, Why, When? • “Cloud-native” with a Platform • Microservices frameworks • Service decomposition and boundaries • Microservice resilience, routing, and control @christianposta
  • 6. “The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery.” A microservices definition
  • 7. • Single, self-contained, autonomous • Isolated and Resilient to faults • Faster software delivery • Own their own data • Easier to understand individually • Scalability • Right technology for the problem • Test individual services • Individual deployments Microservices? @christianposta
  • 8. • System complexity • Operational complexity • Testing is harder across services • Security • Hard to get boundaries right (transactions, APIs, etc) • Resource overhead • Network overhead • Lack of tooling Drawbacks to microservices @christianposta
  • 9. Why would one implement a system as microservices? @christianposta
  • 10. Pain we may feel… @christianposta • Making changes in one place negatively affects unrelated areas • Low confidence making changes that don’t break things • Spend lots of time trying to coordinate work between team members • Structure in the application has eroded or is non- existant • We have no way to quantify how long code merges will take
  • 11. @christianposta • Development time is slow simply because the project is so big (IDE bogs down, running tests is slow, slow bootstrap time, etc) • Changes to one module force changes across other modules • Difficult to sunset outdated technology • We’ve built our new applications around old premises like batch processing • Application steps on itself at runtime managing resources, allocations, computations Pain we may feel…
  • 12. Microservices is about optimizing for speed. @christianposta
  • 13. If change is happening on the outside faster than on the inside the end is in sight. S&P company life expectancy @christianposta Jack Welch, former CEO, GE
  • 14. Fortune 500 firms in 1955 vs. 2014; 88% are gone @christianposta
  • 15. Competitive advantage is transient. We need to continuously re-invent our business models to compete and stay relevant. We need to continuously innovate. @christianposta
  • 16. Innovation is admitting we don’t have all the answers Mark Schwartz – Former CIO USCIS @christianposta
  • 17. We need to figure out the right questions to ask… Mark Schwartz – Former CIO USCIS @christianposta
  • 18. How do we do this? @christianposta • Identify goals • Free teams to explore possible solution spaces • Generate hypothesis • Design cheap experiments to test hypothesis • Work in small batches • Learn from results • Calibrate investment; rinse, repeat
  • 19. “If I invest $5-$10M in your company and you fail, I have 30 other investments. It’s just a footnote in my investment history.” https://medium.com/@mattklein123/optimizing-impact-why-i-will-not-start-an-envoy-platform-company-8904286658cb https://barryoreilly.com/2017/04/06/optimize-to-be-wrong-not-right/ Create options through experiments
  • 21. Microservices help us go faster. @christianposta
  • 22. So do we microservices all the way down? @christianposta
  • 25. @christianposta http://blog.hypeinnovation.com/using-the-three-horizons-framework-for-innovation IT Portfolio management MVPs, experiments, small apps (co-locate if you have to write an app) Product development, initial scale (co-locate perfectly okay here!! .. Microserices? possibly…) Starting to feel the weight of maintenance, need to shoot for efficiencies, integrate new approaches to increase revenue (microservices land)
  • 26. Microservices != good design AND Co-location != bad design @christianposta
  • 27. DON’T optimize for microservices if… @christianposta • You’re building a Minimum Viable Product (MVP), testing a hypothesis • You’re building a CRUD application • You system isn’t CRUD, but the business logic not very complicated • Your system doesn’t have > 10 people all trying to coordinate to work on it • Your application doesn’t need to scale • You deliver packaged software • You’re building HPC systems
  • 29. We can now assert with confidence that high IT performance correlates with strong business performance, helping to boost productivity, profitability and market share. @christianposta https://puppet.com/resources/whitepaper/2014-state-devops-report
  • 30. High performing IT teams @christianposta • …are encouraged to experiment • …learn from failure • …work in small batches • …focus on getting continuous feedback • …are held to outcomes, not output • …continuously prioritize and reprioritize based on cost of delay (http://blackswanfarming.com/cost-of- delay/)
  • 31. High performing IT teams need these IT capabilities and practices @christianposta • Continuous Integration (build from master) • Continuous Delivery (automated pipelines) • Safe, reliable delivery mechanisms • Modern, scalable, resilient application architectures • Self-service, on-demand infrastructure • Automated testing • Metrics, logs, traces, observability • Feedback loops • Security as part of the pipeline
  • 32. @christianposta https://www.infoq.com/articles/cloud-native-panel "Cloud native” describes applications, architectures, platforms/infrastructure, and processes, that together make it economical to work to in small batches to learn and reduce uncertainty.
  • 33. • Distributed configuration • Service Discovery • Loadbalancing • Circuit Breakers • Bulkheading • Versioning/Routing • Based on AWS “Cloud-native” platform What about non-java? @christianposta
  • 35. Cluster management • Distributed configuration • Service Discovery • Loadbalancing • Versioning/Routing • Deployments • Scaling/Autoscaling • Liveness/Health checking • Self healing • Logging, Metrics, Tracing @christianposta
  • 37. • Team self service application deployment • Developer workflow • Enterprise focused (LDAP, RBAC, Oauth, etc) • Integrated Docker registry • Jenkins Pipeline (CI/CD) out of the box • Build/deployment triggers • Software Defined Networking (SDN) • Docker native format/packaging • CLI/IDE/Web based tooling OpenShift is a Kubernetes platform @christianposta
  • 38.
  • 42. @christianposta • Simple configuration • Curated dependencies and transitive dependencies • Built in metrics, monitoring • Slim profile for deployment • Strong communities (spring, vert.x, microprofile.io) OpenShift Application Runtimes
  • 43. Use Kubernetes/OpenShift • Distributed configuration • Service Discovery • Loadbalancing • Versioning/Routing • Deployments • Scaling/Autoscaling • Liveness/Health checking • Self healing • Logging, Metrics, Tracing @christianposta
  • 44. What if we’re already using things like Spring Cloud and/or Netflix OSS?! @christianposta
  • 45. spring-cloud-kubernetes • DiscoveryClient • Ribbon integration • Actuator/Health integrations • Hystrix/Turbine Dashboard integrations (kubeflix) • Zipkin Tracing • Configuration via ConfigMaps • Archaius Bridge for dynamic configs https://github.com/spring-cloud-incubator/spring-cloud-kubernetes
  • 47.
  • 49. Book checkout / purchase Title Search Recommendations Weekly reporting @christianposta
  • 51. • Break things into smaller, understandable models • Surround a model and its “context” with a boundary • Implement the model in code or get a new model • Explicitly map between different contexts • Model transactional boundaries as aggregates Focus on domain models, not data models @christianposta
  • 52. Service Cutter: A systemic approach to service decomposition @christianposta https://servicecutter.github.io
  • 54. How do we share information? • REST, RPC • Streams/Events(ActiveMQ, JMS, AMQP, STOMP, Kafka, etc) • Legacy (SOAP, mainframe, file processing, proprietary) • Routing, Aggregation, Splitting, Transactions, Compensations, Filtering, etc. @christianposta
  • 55. • Small Java library • 200+ components for integrating systems (bring along only the ones you use) • Powerful EIPs (routing, transformation, error handling) • Distributed-systems swiss-army knife! • Declarative DSL • Embeddable into any JVM (EAP, Karaf, Tomcat, Spring Boot, Dropwizard, Wildfly Swarm, no container, etc) Apache Camel @christianposta
  • 57. public class OrderProcessorRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { rest().post(“/order/socks”) .description(“New Order for pair of socks”) .consumes(“application/json”) .route() .to(“activemq:topic:newOrder”) .log(“received new order ${body.orderId}”) .to(“ibatis:storeOrder?statementType=Insert”); } Camel REST DSL @christianposta
  • 59. Things you must solve for because… distributed systems • Service discovery • Retries • Timeouts • Load balancing • Rate limiting • Thread bulk heading • Circuit breaking
  • 60. …continued • Routing between services (adaptive, zone-aware) • Deadlines • Back pressure • Outlier detection • Health checking • Traffic shaping • Request shadowing
  • 61. …continued • Edge/DMZ routing • Surgical / fine / per-request routing • A/B rollout • Internal releases / dark launches • Fault injection • Stats, metric, collection • Logging • Tracing
  • 65. • Netflix Hystrix (circuit breaking / bulk heading) • Netflix Zuul (edge router) • Netflix Ribbon (client-side service discovery / load balance) • Netflix Eureka (service discovery registry) • Brave / Zipkin (tracing) • Netflix spectator / atlas (metrics) “Microservices” patterns @christianposta
  • 67. But I’m using Spring! • spring-cloud-netflix-hystrix • spring-cloud-netflix-zuul • spring-cloud-netflix-eureka-client • spring-cloud-netflix-ribbon • spring-cloud-netflix-atlas • spring-cloud-netflix-spectator • spring-cloud-netflix-hystrix-stream • ….. • ...... • @Enable....150differentThings
  • 68. But I’m using Vert.x! • vertx-circuit-breaker • vertx-service-discovery • vertx-dropwizard-metrics • vertx-zipkin? • ….. • ......
  • 69. But I’m using NodeJS! But I’m using Go! But I’m using Python!
  • 73.
  • 74. Meet Istio Service Mesh https://istio.io
  • 76. • Have self-service infrastructure automation? • Have self-service application automation? • Have working CI/CD? • Have health checking, monitoring, instrumentation? • Have logging, distributed tracing? • Able to release services independently? • Honoring backward and forward Are you doing microservices? @christianposta
  • 77. • Number of features accepted • % of features completed • User satisfaction • Feature Cycle time • defects discovered after deployment • customer lifetime value (future profit as a result of relationship with the customer) https://en.wikipedia.org/wiki/Customer_lifetime_value • revenue per feature • mean time to recovery • % improvement in SLA • number of changes • number of user complaints, recommendations, suggestions • % favorable rating in surveys • % of users using which features • % reduction in error rates • avg number of tx / user • MANY MORE! Focus on going fast and learning
  • 78. • The hardest part of microservices? Your data https://developers.redhat.com/blog/2016/08/02/the-hardest-part-about-microservices-your-data/ • Microservices patterns: circuit breaking with Envoy Proxy https://developers.redhat.com/blog/2017/05/31/microservices-patterns-with-envoy-sidecar-proxy- part-i-circuit-breaking/ • Monolith to microservices Part I https://developers.redhat.com/blog/2017/09/26/low-risk-monolith-microservice-evolution-part/ • Monolith to microservices Part II https://developers.redhat.com/blog/2017/10/23/low-risk-monolith-microservice-evolution-part-ii/ More material @christianposta
  • 79. • Download and explore OpenShift • https://www.openshift.org/minishift/ • Checkout Spring Boot/WildFlySwarm/Vert.x on OpenShift: • https://launch.openshift.io • Reach out to your Red Hat rep to discuss more and/or get me/my team involved with your initiatives What next?
  • 80.
  • 81. Thanks! BTW: Hand drawn diagrams made with Paper by FiftyThree.com @christianposta Twitter: @christianposta Blog: http://blog.christianposta.com Email: christian@redhat.com Slides: http://slideshare.net/ceposta Follow up links: • http://openshift.io • http://launch.openshift.io • http://blog.openshift.com • http://developers.redhat.com/blog • https://www.redhat.com/en/open-innovation-labs • https://www.redhat.com/en/technologies/jboss-middleware/3scale • https://www.redhat.com/en/technologies/jboss-middleware/fuse