The document discusses microservices architecture and related challenges. It provides advice on failure injection testing, versioning and routing, protocols and interfaces, timeouts and retries, managing inconsistency, denormalized data models, and cloud native monitoring of microservices. The author emphasizes designing services to fail independently, incremental versioning, avoiding unproductive work from retries, and dealing with the inherent inconsistency of distributed systems.
Discussion of how microservices are being applied across both web scale and enterprise/government use cases to help speed up development.
Video available at http://www.ustream.tv/recorded/86151804
QCon New York - Migrating to Cloud Native with MicroservicesAdrian Cockcroft
The document discusses Adrian Cockcroft's experience at Netflix and lessons learned about building cloud native systems with microservices. Some key points include:
- Typical reactions to Cockcroft's early talks about Netflix's architecture evolved from skepticism to admiration as the approach was proven at Netflix.
- Speed wins in the marketplace and removing friction from product development are important.
- Having high trust between teams with low processes and no handoffs enables faster innovation.
Opening talk at Monitorama, talks about the problems of monitoring, challenges of creating monitoring tools and why monitoring vendors keep getting disrupted. Ended with a discussion of simulation testing and serverless architectures - Monitorless.
Scaling Gilt: from monolith ruby app to micro service scala service architectureGilt Tech Talks
This document summarizes Yoni Goldberg's talk on Gilt's transition from a monolithic Ruby on Rails application to a distributed system of over 450 Scala microservices. Some of the key challenges they faced included scaling issues as traffic grew, difficulties deploying and testing changes across many interdependent services, and a lack of clear ownership over parts of the codebase. Gilt addressed these by moving to the JVM, embracing microservice architecture, implementing tools like Docker and a custom SBT build to simplify deployments, and establishing clear ownership for each microservice.
The document summarizes Adrian Cockcroft's experience giving talks about Netflix's approach to technology over time. It notes that initially people reacted skeptically, saying Netflix's approach was crazy and wouldn't work (2009-2010). Later, people said it could only work for large companies like Netflix (2011). By 2012, people said they wanted to adopt a similar approach but couldn't. The document outlines key lessons learned from Cockcroft's time at Netflix, including that speed wins in the marketplace and removing friction from product development helps enable faster innovation.
Software Architecture Conference - Monitoring Microservices - A ChallengeAdrian Cockcroft
The document discusses the challenges of monitoring microservices architectures. It notes that microservices are deployed much more frequently than traditional applications, sometimes in seconds or milliseconds. This rapid deployment rate requires monitoring tools that can measure and report metrics at an equally fast pace. It also explains that microservices architectures involve large numbers of loosely coupled services distributed across multiple regions, zones, and instances. Monitoring tools must be able to handle the scale and complexity of these distributed systems. Other challenges discussed include visualizing request flows, understanding common failure scenarios, and testing monitoring systems at a large scale. The document advocates for using simulations to model microservices architectures and stress test monitoring tools to help address these challenges.
Discussion of how microservices are being applied across both web scale and enterprise/government use cases to help speed up development.
Video available at http://www.ustream.tv/recorded/86151804
QCon New York - Migrating to Cloud Native with MicroservicesAdrian Cockcroft
The document discusses Adrian Cockcroft's experience at Netflix and lessons learned about building cloud native systems with microservices. Some key points include:
- Typical reactions to Cockcroft's early talks about Netflix's architecture evolved from skepticism to admiration as the approach was proven at Netflix.
- Speed wins in the marketplace and removing friction from product development are important.
- Having high trust between teams with low processes and no handoffs enables faster innovation.
Opening talk at Monitorama, talks about the problems of monitoring, challenges of creating monitoring tools and why monitoring vendors keep getting disrupted. Ended with a discussion of simulation testing and serverless architectures - Monitorless.
Scaling Gilt: from monolith ruby app to micro service scala service architectureGilt Tech Talks
This document summarizes Yoni Goldberg's talk on Gilt's transition from a monolithic Ruby on Rails application to a distributed system of over 450 Scala microservices. Some of the key challenges they faced included scaling issues as traffic grew, difficulties deploying and testing changes across many interdependent services, and a lack of clear ownership over parts of the codebase. Gilt addressed these by moving to the JVM, embracing microservice architecture, implementing tools like Docker and a custom SBT build to simplify deployments, and establishing clear ownership for each microservice.
The document summarizes Adrian Cockcroft's experience giving talks about Netflix's approach to technology over time. It notes that initially people reacted skeptically, saying Netflix's approach was crazy and wouldn't work (2009-2010). Later, people said it could only work for large companies like Netflix (2011). By 2012, people said they wanted to adopt a similar approach but couldn't. The document outlines key lessons learned from Cockcroft's time at Netflix, including that speed wins in the marketplace and removing friction from product development helps enable faster innovation.
Software Architecture Conference - Monitoring Microservices - A ChallengeAdrian Cockcroft
The document discusses the challenges of monitoring microservices architectures. It notes that microservices are deployed much more frequently than traditional applications, sometimes in seconds or milliseconds. This rapid deployment rate requires monitoring tools that can measure and report metrics at an equally fast pace. It also explains that microservices architectures involve large numbers of loosely coupled services distributed across multiple regions, zones, and instances. Monitoring tools must be able to handle the scale and complexity of these distributed systems. Other challenges discussed include visualizing request flows, understanding common failure scenarios, and testing monitoring systems at a large scale. The document advocates for using simulations to model microservices architectures and stress test monitoring tools to help address these challenges.
Slides originally written in April 2013 for a private conference and internal use at Netflix. Publishing now since Heartbleed is another example of an epidemic failure mode.
Delivering with Microservices - How to Iterate Towards SophisticationThoughtworks
A microservices architecture requires some complex engineering. So when choosing microservices, a software engineering team must be prepared to tackle some challenges early in the project. On the other hand, an Agile approach requires the team to focus on delivering business value from Iteration 1. The fully-featured architecture of the solution will not emerge until later.
While clear and strong technical choices must be made early in a microservices project, how do you resist the temptation of building the infrastructure first? In this presentation, Jean Robert D'Amore talks about the tools and techniques you can use to let your product evolve towards a microservices architecture, while setting up the team for success.
This document provides an overview of a workshop on cloud native, capacity, performance and cost optimization tools and techniques. It begins with introducing the difference between a presentation and workshop. It then discusses introducing attendees, presenting on various cloud native topics like migration paths and operations tools, and benchmarking Cassandra performance at scale across AWS regions. The goal is to explore cloud native techniques while discussing specific problems attendees face.
Sildes of an internal talk given at Twitter similar to a previous webinar for Redhat with the same title.
Speeding up development is a key concern, cloud and technology improvements like Docker speed up key steps that make continuous delivery possible. Breaking up the work into many separate microservices and datastores with stable APIs allows teams to make progress independently so that the organization scales. Monolithic apps are preferred for small projects, built by small teams and when very low latency and high efficiency is the primary requirement. Monitoring microservices is currently a challenge with solutions starting to emerge.
GameDay - Achieving resilience through Chaos EngineeringDiUS
http://dius.com.au/resources/game-day/
Agility has brought us iterative software development, independent feature teams, nimble architectures and distributed, scalable infrastructure. But how do you maintain confidence in these systems in the face of this emergent complexity and fast paced change? The answer is to anticipate and practice failure!
In this session we explore GameDays, a collaborative exercise where teams safely introduce chaos into their systems, in order to make them better.
Software application development and delivery often involves multiple development, infrastructure and operations teams, each with their own preferred “tools of the trade” for building, testing and deploying code changes
For years, virtualization and cloud technologies have provided agile, on-demand infrastructure. The advent of Microservices promises even more agility– but what is required to take advantage of Microservices?
Join Electric Cloud CTO Anders Wallgren and Trace3 Principal Consultant - DevOps Marc Hornbeek as they discuss what is required to:
- Overcome culture and architecture challenges created when decomposing monolithic applications into Microservices-based applications.
- Coordinate integration, testing, monitoring, packaging, release approval and deployment of Microservices-based applications over elastic infrastructures
- Create a controlled and auditable delivery pipeline to support
Microservices-based application.
- Prepare for “future” applications, pipelines and patterns.
This document summarizes a presentation on microservices architectures. It begins with an introduction to microservices and some of the benefits they provide like scalability and faster development. It then discusses challenges like configuration, tooling, discovery, routing, and observability. Examples are provided of microservices architectures at companies like Netflix, Twitter, and Gilt. Key aspects covered include programming languages, containerization, orchestration, and data stores.
Businesses are speeding up development and automating operations to remain competitive and to get large organizations to scale. Project based monolithic application updates are replaced by product teams owning containerized microservices. This puts developers on call, responsible for pushing code to production, fixing it when it breaks, and managing the cost and security aspects of running their microservices. In this world operations skill-sets are either embedded in the microservices development teams, or building and operating API driven platforms. The platform automates stress testing, canary based deployment, penetration testing and enforces availability and security requirements. There are no meetings or tickets to file in the delivery process for updating a containerized microservice, which can happen many times a day, and takes seconds to complete. The role of site reliability engineering moves from firefighting and fixing outages to buiding tools for finding problems and routing those problems to the right developers. SREs manage the incident lifecycle for customer visible problems, and measure and publish availability metrics. This may sound futuristic but Werner Vogels described this as “You build it, you run it” in 2006.
It’s Not Just Request/Response: Understanding Event-driven Microservicescornelia davis
The document discusses event-driven microservice architectures as an alternative to traditional request/response microservice patterns. It describes how each microservice can operate independently by broadcasting state changes as events, rather than making direct requests to other services. This allows services to have autonomous control loops and respond immediately to requests if they are already aware of the necessary data states. The approach derives the CQRS pattern of separating query and command handling. It also advocates for an event store to decouple services and act as a message bus to distribute events.
This document discusses how PagerDuty can be used to alert teams when incidents occur and mobilize people to respond. However, long incidents and escalations still occur when it is time to take action. This is where integrating PagerDuty with Rundeck for runbook automation can help by automatically triggering Rundeck jobs at the start of PagerDuty incidents, during incidents using custom actions, and having Rundeck jobs update incident notes in PagerDuty. This allows teams to leverage existing automation tools and scripts through Rundeck to shorten incidents and reduce escalations.
Adrian Cockcroft discusses the challenges of building reliable cloud services in an imperfect environment. He describes Netflix's approach of using microservices, continuous delivery, and automation to create stability. Cockcroft also introduces NetflixOSS, an open source platform that provides libraries and tools to help other companies adopt this "cloud native" architecture. The talk outlines opportunities to improve portability and foster an ecosystem around NetflixOSS.
In June 2017 at the Devops Enterprise Summit in London, while announcing the 2017 State of Devops Report with his esteemed colleagues, Jez Humble reveled that their studies showed that there was a strong correlation between high-functioning teams and the architecture of the software they are building, deploying and managing. In short - architecture matters to Devops.
In this talk Cornelia goes over a host of software architectural patterns and their relationship to some of the key goals of Devops - "higher throughput and higher quality and stability." Cloud native applications and cloud native data are both covered.
<November 2017 Updated from earlier presentations on Cloud-native Data>
Cloud-native applications form the foundation for modern, cloud-scale digital solutions, and the patterns and practices for cloud-native at the app tier are becoming widely understood – statelessness, service discovery, circuit breakers and more. But little has changed in the data tier. Our modern apps are often connected to monolithic shared databases that have monolithic practices wrapped around them. As a result, the autonomy promised by moving to a microservices application architecture is compromised.
What we need are patterns and practices for cloud-native data. The anti-patterns of shared databases and simple proxy-style web services to front them give way to approaches that include use of caches (Netflix calls caching their hidden microservice), database per service and polyglot persistence, modern versions of ETL and data integration and more. In this session, aimed at the application developer/architect, Cornelia will look at those patterns and see how they serve the needs of the cloud-native application.
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...Amazon Web Services
AWS offers a number of services that help you easily develop, build, deploy and run applications in the cloud. In this session you’ll learn best practices for managing your application lifecycle with these tools with a particular focus on development speed and release agility. Through interactive demonstrations, this session shows you how to get an application running using AWS Elastic Beanstalk, CloudFormation and CodeDeploy. You will also see how advanced techniques such as blue/green deployment, AMI baking, customer resources and in-place deployment reduce deployment friction and rapid change in your environment.
Speaker: Adrian White, Solutions Architect, Amazon Web Services
This document provides an overview and agenda for a presentation on microservice architecture. It begins with defining microservices as small, independent applications that communicate via APIs. It then gives an example of how the Dropwizard framework can be used to build production-ready microservices. The remainder of the document outlines five requirements for an internal loan underwriting system and how each could be implemented as an independent microservice. It discusses tooling, deployment strategies, testing approaches, and concludes with a discussion of the Unix philosophy and how it relates to microservices.
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...Amazon Web Services
Organizations around the globe are leveraging the cloud to accomplish world-changing missions. This session will address how AWS can help organizations put more money toward their mission and scale outreach and operations to achieve more with less. Hear some of AWS’s most advanced customers on how their organizations handle DevOps, continuous integration and deployment. Learn how these practices allow them to rapidly develop, iterate, test and deploy highly-scalable web applications and core operational systems on AWS. The discussion will focus on best practices, lessons learned, and the specific technologies and services they use.
Summary of fast development and cloud native architecture along with cost optimization techniques. Presented as opening keynote at the Utility and Cloud Computing 2014 as part of the Cloud Control Workshop.
Microservices Application Tracing Standards and Simulators - Adrians at OSCONAdrian Cockcroft
This document discusses distributed tracing standards and microservices simulations. It introduces OpenZipkin and OpenTracing as open source distributed tracing projects. It also discusses Pivot Tracing and the OpenTracing initiative to standardize instrumentation. The document proposes using a microservices simulator called Spigo to generate test data and visualize traces. It provides an example of defining a LAMP stack architecture in JSON to simulate with Spigo.
DevOps Days Boston 2017: Developer first workflows for KubernetesAmbassador Labs
Kubernetes is a powerful, operational platform for containerized applications. However, the developer workflow on Kubernetes – how you code, deploy, update, and monitor your services – is much less mature.
How should you lay out your Git repo? How do you create loosely coupled services? How do you support deploying your service at any time?
In this talk, we’ll talk about these questions and more. We’ll discuss the journey towards a rapid development workflow, discuss best practices, and, talk about the process we followed to get to a rapid development workflow.
DevOps Days Boston 2017
Slides originally written in April 2013 for a private conference and internal use at Netflix. Publishing now since Heartbleed is another example of an epidemic failure mode.
Delivering with Microservices - How to Iterate Towards SophisticationThoughtworks
A microservices architecture requires some complex engineering. So when choosing microservices, a software engineering team must be prepared to tackle some challenges early in the project. On the other hand, an Agile approach requires the team to focus on delivering business value from Iteration 1. The fully-featured architecture of the solution will not emerge until later.
While clear and strong technical choices must be made early in a microservices project, how do you resist the temptation of building the infrastructure first? In this presentation, Jean Robert D'Amore talks about the tools and techniques you can use to let your product evolve towards a microservices architecture, while setting up the team for success.
This document provides an overview of a workshop on cloud native, capacity, performance and cost optimization tools and techniques. It begins with introducing the difference between a presentation and workshop. It then discusses introducing attendees, presenting on various cloud native topics like migration paths and operations tools, and benchmarking Cassandra performance at scale across AWS regions. The goal is to explore cloud native techniques while discussing specific problems attendees face.
Sildes of an internal talk given at Twitter similar to a previous webinar for Redhat with the same title.
Speeding up development is a key concern, cloud and technology improvements like Docker speed up key steps that make continuous delivery possible. Breaking up the work into many separate microservices and datastores with stable APIs allows teams to make progress independently so that the organization scales. Monolithic apps are preferred for small projects, built by small teams and when very low latency and high efficiency is the primary requirement. Monitoring microservices is currently a challenge with solutions starting to emerge.
GameDay - Achieving resilience through Chaos EngineeringDiUS
http://dius.com.au/resources/game-day/
Agility has brought us iterative software development, independent feature teams, nimble architectures and distributed, scalable infrastructure. But how do you maintain confidence in these systems in the face of this emergent complexity and fast paced change? The answer is to anticipate and practice failure!
In this session we explore GameDays, a collaborative exercise where teams safely introduce chaos into their systems, in order to make them better.
Software application development and delivery often involves multiple development, infrastructure and operations teams, each with their own preferred “tools of the trade” for building, testing and deploying code changes
For years, virtualization and cloud technologies have provided agile, on-demand infrastructure. The advent of Microservices promises even more agility– but what is required to take advantage of Microservices?
Join Electric Cloud CTO Anders Wallgren and Trace3 Principal Consultant - DevOps Marc Hornbeek as they discuss what is required to:
- Overcome culture and architecture challenges created when decomposing monolithic applications into Microservices-based applications.
- Coordinate integration, testing, monitoring, packaging, release approval and deployment of Microservices-based applications over elastic infrastructures
- Create a controlled and auditable delivery pipeline to support
Microservices-based application.
- Prepare for “future” applications, pipelines and patterns.
This document summarizes a presentation on microservices architectures. It begins with an introduction to microservices and some of the benefits they provide like scalability and faster development. It then discusses challenges like configuration, tooling, discovery, routing, and observability. Examples are provided of microservices architectures at companies like Netflix, Twitter, and Gilt. Key aspects covered include programming languages, containerization, orchestration, and data stores.
Businesses are speeding up development and automating operations to remain competitive and to get large organizations to scale. Project based monolithic application updates are replaced by product teams owning containerized microservices. This puts developers on call, responsible for pushing code to production, fixing it when it breaks, and managing the cost and security aspects of running their microservices. In this world operations skill-sets are either embedded in the microservices development teams, or building and operating API driven platforms. The platform automates stress testing, canary based deployment, penetration testing and enforces availability and security requirements. There are no meetings or tickets to file in the delivery process for updating a containerized microservice, which can happen many times a day, and takes seconds to complete. The role of site reliability engineering moves from firefighting and fixing outages to buiding tools for finding problems and routing those problems to the right developers. SREs manage the incident lifecycle for customer visible problems, and measure and publish availability metrics. This may sound futuristic but Werner Vogels described this as “You build it, you run it” in 2006.
It’s Not Just Request/Response: Understanding Event-driven Microservicescornelia davis
The document discusses event-driven microservice architectures as an alternative to traditional request/response microservice patterns. It describes how each microservice can operate independently by broadcasting state changes as events, rather than making direct requests to other services. This allows services to have autonomous control loops and respond immediately to requests if they are already aware of the necessary data states. The approach derives the CQRS pattern of separating query and command handling. It also advocates for an event store to decouple services and act as a message bus to distribute events.
This document discusses how PagerDuty can be used to alert teams when incidents occur and mobilize people to respond. However, long incidents and escalations still occur when it is time to take action. This is where integrating PagerDuty with Rundeck for runbook automation can help by automatically triggering Rundeck jobs at the start of PagerDuty incidents, during incidents using custom actions, and having Rundeck jobs update incident notes in PagerDuty. This allows teams to leverage existing automation tools and scripts through Rundeck to shorten incidents and reduce escalations.
Adrian Cockcroft discusses the challenges of building reliable cloud services in an imperfect environment. He describes Netflix's approach of using microservices, continuous delivery, and automation to create stability. Cockcroft also introduces NetflixOSS, an open source platform that provides libraries and tools to help other companies adopt this "cloud native" architecture. The talk outlines opportunities to improve portability and foster an ecosystem around NetflixOSS.
In June 2017 at the Devops Enterprise Summit in London, while announcing the 2017 State of Devops Report with his esteemed colleagues, Jez Humble reveled that their studies showed that there was a strong correlation between high-functioning teams and the architecture of the software they are building, deploying and managing. In short - architecture matters to Devops.
In this talk Cornelia goes over a host of software architectural patterns and their relationship to some of the key goals of Devops - "higher throughput and higher quality and stability." Cloud native applications and cloud native data are both covered.
<November 2017 Updated from earlier presentations on Cloud-native Data>
Cloud-native applications form the foundation for modern, cloud-scale digital solutions, and the patterns and practices for cloud-native at the app tier are becoming widely understood – statelessness, service discovery, circuit breakers and more. But little has changed in the data tier. Our modern apps are often connected to monolithic shared databases that have monolithic practices wrapped around them. As a result, the autonomy promised by moving to a microservices application architecture is compromised.
What we need are patterns and practices for cloud-native data. The anti-patterns of shared databases and simple proxy-style web services to front them give way to approaches that include use of caches (Netflix calls caching their hidden microservice), database per service and polyglot persistence, modern versions of ETL and data integration and more. In this session, aimed at the application developer/architect, Cornelia will look at those patterns and see how they serve the needs of the cloud-native application.
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...Amazon Web Services
AWS offers a number of services that help you easily develop, build, deploy and run applications in the cloud. In this session you’ll learn best practices for managing your application lifecycle with these tools with a particular focus on development speed and release agility. Through interactive demonstrations, this session shows you how to get an application running using AWS Elastic Beanstalk, CloudFormation and CodeDeploy. You will also see how advanced techniques such as blue/green deployment, AMI baking, customer resources and in-place deployment reduce deployment friction and rapid change in your environment.
Speaker: Adrian White, Solutions Architect, Amazon Web Services
This document provides an overview and agenda for a presentation on microservice architecture. It begins with defining microservices as small, independent applications that communicate via APIs. It then gives an example of how the Dropwizard framework can be used to build production-ready microservices. The remainder of the document outlines five requirements for an internal loan underwriting system and how each could be implemented as an independent microservice. It discusses tooling, deployment strategies, testing approaches, and concludes with a discussion of the Unix philosophy and how it relates to microservices.
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...Amazon Web Services
Organizations around the globe are leveraging the cloud to accomplish world-changing missions. This session will address how AWS can help organizations put more money toward their mission and scale outreach and operations to achieve more with less. Hear some of AWS’s most advanced customers on how their organizations handle DevOps, continuous integration and deployment. Learn how these practices allow them to rapidly develop, iterate, test and deploy highly-scalable web applications and core operational systems on AWS. The discussion will focus on best practices, lessons learned, and the specific technologies and services they use.
Summary of fast development and cloud native architecture along with cost optimization techniques. Presented as opening keynote at the Utility and Cloud Computing 2014 as part of the Cloud Control Workshop.
Microservices Application Tracing Standards and Simulators - Adrians at OSCONAdrian Cockcroft
This document discusses distributed tracing standards and microservices simulations. It introduces OpenZipkin and OpenTracing as open source distributed tracing projects. It also discusses Pivot Tracing and the OpenTracing initiative to standardize instrumentation. The document proposes using a microservices simulator called Spigo to generate test data and visualize traces. It provides an example of defining a LAMP stack architecture in JSON to simulate with Spigo.
DevOps Days Boston 2017: Developer first workflows for KubernetesAmbassador Labs
Kubernetes is a powerful, operational platform for containerized applications. However, the developer workflow on Kubernetes – how you code, deploy, update, and monitor your services – is much less mature.
How should you lay out your Git repo? How do you create loosely coupled services? How do you support deploying your service at any time?
In this talk, we’ll talk about these questions and more. We’ll discuss the journey towards a rapid development workflow, discuss best practices, and, talk about the process we followed to get to a rapid development workflow.
DevOps Days Boston 2017
Microservices, Kubernetes and Istio - A Great Fit!Animesh Singh
Microservices and containers are now influencing application design and deployment patterns. Sixty percent of all new applications will use cloud-enabled continuous delivery microservice architectures and containers. Service discovery, registration, and routing are fundamental tenets of microservices. Kubernetes provides a platform for running microservices. Kubernetes can be used to automate the deployment of Microservices and leverage features such as Kube-DNS, Config Maps, and Ingress service for managing those microservices. This configuration works fine for deployments up to a certain size. However, with complex deployments consisting of a large fleet of microservices, additional features are required to augment Kubernetes.
Just about all of my current technical content in one 364 slide mega-deck. Source files at https://github.com/adrianco/slides
Sections on:
Scene Setting
State of the Cloud
What Changes?
Product Processes
Microservices
State of the Art
Segmentation
What’s Missing?
Monitoring
Challenges
Migration
Response Times
Serverless
Lock-In
Teraservices
Wrap-Up
Microservices are small services with independent lifecycles that work together. There is an underlying tension in that definition – how independent can you be when you have to be part of a whole? I’ve spent much of the last couple of years trying to understand how to find the right balance, and in this talk/tutorial I’ll be presenting the core seven principles that I think represent what makes microservices tick.
After a brief introduction of what microservices are and why they are important, we’ll spend the bulk of the time looking at the principles themselves, wherever possible covering real-world examples and technology:
- Modelled around business domain – using techniques from domain-driven design to find service boundaries leads to better team alignment and more stable service boundaries, avoiding expensive cross-service changes.
- Culture of automation – all organisations that use microservices at scale have strong cultures of automation. We’ll look at some of their stories and think about which sort of automation is key.
- Hide implementation details – how do you hide the detail inside each service to avoid coupling, and ensure each service retains its autonomous nature?
- Decentralize all the things! – we have to push power down as far as we can, and this goes for both the system and organisational architecture. We’ll look at everything from autonomous self-contained teams and internal open source, to using choreographed systems to handle long-lived business transactions.
- Deploy independently – this is all about being able to deploy safely. So we’ll cover everything from deployment models to consumer-driven contracts and the importance of separating deployment from release.
- Isolate failure – just making a system distributed doesn’t make it more stable than a monolithic application. So what do you need to look for?
- Highly observable – we need to understand the health of a single service, but also the whole ecosystem. How?
In terms of learning outcomes, beginners will get a sense of what microservices are and what makes them different, whereas more experienced practitioners will get insight and practical advice into how to implement them.
Top 5 Deep Learning and AI Stories - October 6, 2017NVIDIA
Read this week's top 5 news updates in deep learning and AI: Gartner predicts top 10 strategic technology trends for 2018; Oracle adds GPU Accelerated Computing to Oracle Cloud Infrastructure; chemistry and physics Nobel Prizes are awarded to teams supported by GPUs; MIT uses deep learning to help guide decisions in ICU; and portfolio management firms are using AI to seek alpha.
A rough and researchy presentation where I tried out some new material in front of a local audience. Skipped the usual introduction and talked about some of the problems people run into when they do microservices and miss a few things. More refined version of this talk to be shown at O'Reilly Software Architecture Conference in New York in April.
This document provides an overview of architecting microservices using .NET. It discusses why microservices are used, common architecture patterns, and implementation considerations. Key points include:
- Independent, loosely coupled services that are fault tolerant and easy to scale are goals of a microservices architecture.
- Communication between services should be kept simple, using either synchronous HTTP or asynchronous messaging. Synchronous calls can lead to temporal coupling so circuit breakers and failure handling are important.
- Domain-driven design principles like bounded contexts and separating queries from commands (CQRS) can help define appropriate service boundaries and responsibilities.
- Event sourcing avoids shared state and two-phase commits by persisting a sequence of events rather than
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/29ZQmIx.
Adrian Cockcroft discusses success/failure stories of adopting microservices, overviews what’s next with microservices and presents some of the techniques that have led to successful deployments. Filmed at qconnewyork.com.
Adrian Cockcroft works at Battery where he advises the firm and its portfolio companies about technology issues and also assists with deal sourcing and due diligence. He was a founding member of eBay Research Labs, developing advanced mobile applications and even building his own homebrew phone, years before iPhone and Android launched.
Metrics-Driven DevOps discusses how Dynatrace has shifted to continuous delivery of software using a DevOps approach. Some key points:
- Dynatrace has moved to releasing major updates 26 times per year with 170 production deployments daily, up from a previous model of major releases every 6 months.
- They implemented practices like continuous integration/delivery, performance testing pipelines, and monitoring of production metrics to optimize lead time and catch issues earlier.
- Dynatrace uses its own products to monitor pipelines and applications, enabling teams to get feedback and fail builds quickly when issues arise.
- Culture change and collaboration across teams was important to align engineers as the company transformed practices to support continuous delivery at
Top Performance Problems in Distributed ArchitecturesAndreas Grabner
When moving to a more distributed architecture, you introduce more dependencies and potential for failures to impact services. Common anti-patterns that can arise include making excessive duplicate calls or queries (N+1 patterns), transmitting unnecessary payload data, having services with tight coupling, and inefficient service flows. It is important to understand dependencies between services and automate performance tests and validations as part of continuous integration/deployment pipelines to identify issues and prevent regressions.
Supercharging Optimizely Performance by Moving Decisions to the EdgeOptimizely
To survive in today’s competitive market, it’s imperative that you drive high-velocity experimentation and maximize site performance. In this talk, Optimizely will be joined by performance experts, Cloudflare to share latest updates to the Optimizely platform to make client-side experimentation blazing fast.
In this session you’ll learn:
- How to take advantage of the latest performance enhancements to the Optimizely platform
- Best practices for implementing Optimizely for maximum performance including how to take advantage of your CDN
- How to have an informed conversation with your performance engineering team when it comes to Optimizely
Managing microservices with Istio Service MeshRafik HARABI
Developing and managing hundreds (or maybe thousands) of microservices at scale is a challenge for both development and operations teams.
We have seen over the last years the appearance of new frameworks dedicated to deliver ‘Cloud Native’ applications by providing a set of (out of box) building blocks. Most of these frameworks integrate microservices concerns at the code level.
Recently, we have seen the emerging of a new pattern known as sidecar or proxy promoting to push all these common concerns outside of the business code and provides them on the edge by integrate a new layer to the underlying platform called Service Mesh.
Istio is one of the leading Service Mesh implementing sidecar pattern.
We will go during the presentation throw the core concepts behind Istio, the capabilities that provides to manage, secure and observe microservices and how it gives a new breath for both developers and operations.
The presentation will be guided by a sequence of demo exposing Istio capabilities.
Forward Networks - Networking Field Day 13 presentationAndrew Wesbecher
On November 17th, 2016, Forward Networks conducted its first public unveiling of its Network Assurance platform at Networking Field Day 13. Visit https://www.forwardnetworks.com/ for more details.
Service Virtualization - Next Gen Testing Conference Singapore 2013Min Fang
Most major enterprises have invested millions of dollars on soIware performance lab infrastructure, that develop recurring maintenance effort and costs, unstable environments, and conflicts over constrained resources. To combat this drain and deliver value, companies need to find ways to optimize. Virtualizing the behavior and performance characteristics of test lab dependencies, CA LISA Service Virtualization has helped many enterprises achieving highly available labs that allow earlier performance testing with greater flexibility, at a much lower cost. Techniques discussed in this session include:
Removing capacity constraints from performance testing lab
Optimizing performance management by decomposing SLAs
Shift-Left: conducting incremental, iterative performance testing
"Shift-Left." Performance And Architecture Validation with Continuous Integra...DevOps.com
For DevOps efforts to be a true success, it’s crucial to have real-time performance monitoring and metrics that can be reviewed and shared across teams. By accessing real-time and historical metrics, from architecture and application performance, to customer experience and business metrics – you can ensure you are meeting all of your technology and business objectives. Electric Cloud and Dynatrace have partnered up to bring tight integrations to your CI/CD and release pipelines, with ElectricFlow and Dynatrace AppMon. Dynatrace AppMon’s test automation integration stops bad code in its tracks by inspecting key performance and architectural metrics. Now, if a deployment makes it into production but shows problems, the ElectricFlow integration allows AppMon to trigger an automatic rollback or other actions to make sure the system can self-heal. Teammates can collaborate easier and faster, with shared insights, and leaders benefit from knowing that everyone is aligned and moving toward the same goals. In this webinar, we will give a live demonstration on release automation by pushing code changes through the ElectricFlow pipeline.
“Shift-Left.” Performance And Architecture Validation with Continuous Integra...Deborah Schalm
For DevOps efforts to be a true success, it’s crucial to have real-time performance monitoring and metrics that can be reviewed and shared across teams. By accessing real-time and historical metrics, from architecture and application performance, to customer experience and business metrics – you can ensure you are meeting all of your technology and business objectives. Electric Cloud and Dynatrace have partnered up to bring tight integrations to your CI/CD and release pipelines, with ElectricFlow and Dynatrace AppMon. Dynatrace AppMon’s test automation integration stops bad code in its tracks by inspecting key performance and architectural metrics. Now, if a deployment makes it into production but shows problems, the ElectricFlow integration allows AppMon to trigger an automatic rollback or other actions to make sure the system can self-heal. Teammates can collaborate easier and faster, with shared insights, and leaders benefit from knowing that everyone is aligned and moving toward the same goals. In this webinar, we will give a live demonstration on release automation by pushing code changes through the ElectricFlow pipeline.
The document discusses various concepts and patterns related to microservices architecture using Spring, including:
- Microservices provide loosely coupled services with distributed architecture compared to monolithic applications.
- Spring Boot Actuator provides endpoints for monitoring microservice health and metrics.
- Service discovery tools like Eureka and Consul allow services to register and discover each other.
- Other patterns and tools discussed include API gateways, configuration management, circuit breakers, load balancing, messaging queues, REST client generation, and security.
Apply best parts of microservices to serverlessYan Cui
Whenever a new paradigm comes along, we often cast the previous incumbents as relics to be forgotten by history, only to then repeat the same mistakes as they once did. On the surface Serverless has revolutionised how we build and run software, but deep down we are still building microservices and face the same challenges. As more of us adopt Serverless and build increasingly complex systems using this new paradigm, it's important to take a moment to reflect on the lessons others have learnt about building microservices and how they can be applied to our Serverless applications.
Forward Networks - Networking Field Day 13 presentationForward Networks
On November 17th, 2016, Forward Networks conducted its first public unveiling of its Network Assurance platform at Networking Field Day 13. Visit https://www.forwardnetworks.com/ for more details.
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...Andreas Grabner
Do it like the "DevOps Unicorns" Etsy, Facebook and Co: Deploy more frequently. But how and why? Challenges?
Deploying Software Faster without Failing Faster is possible through Metrics driven Engineering. Identify problems early on using a "Shift-Left in Quality". This requires a Level-Up of Dev, Test, Ops, Biz
See some of the metrics that I think you need to look at and how to upgrade your engineering team to produce better quality right from the start
DevOps Pipelines and Metrics Driven Feedback LoopsAndreas Grabner
The goal behind devops is Faster Lead Times
What this really means for Software Delivery -> my Kodak/Smart Phone Analogy
How and Which Metrics to use along the Delivery Pipeline to make better decisions along the way.
Performance Metrics Driven CI/CD - Introduction to Continuous Innovation and ...Mike Villiger
Deck used for my talk at the 2016 Spring User Conference in Toronto. Deck was followed up by a walkthrough of a Jenkins workflow that deployed to Cloud Foundry based on jmeter test results
The mainstreaming of containerization and microservices is raising a critical question by both developers and operators: how do we debug all this?
Debugging microservices applications is a difficult task. The state of the application is spread across multiple microservices, and it is hard to get a holistic view of the state of the application. Currently debugging of microservices is assisted by openTracing, which helps in tracing of a transaction or workflow for post-mortem analysis, and linkerd and itsio which monitor the network to identify latency problems. These tools however, do not allow to monitor and interfere with the application during run time.
In this talk, we will describe and demonstrate common debugging techniques and we will introduce Squash, a new tool and methodology.
Meteor is a reactive web application framework that uses JavaScript on both the client and server. It allows for real-time updates as data changes automatically propagate to connected clients without page refresh. The key aspects of Meteor include its reactivity system using Tracker.autorun, the Distributed Data Protocol (DDP) for client-server communication, and Minimongo which mirrors the MongoDB API in the browser for local data caching and manipulation. Meteor applications have a uniform codebase, use reactive templates, publish-subscribe for data synchronization, and allow building isomorphic apps that run on both client and server with shared code.
Unlocking the Power of IoT: A comprehensive approach to real-time insightsconfluent
In today's data-driven world, the Internet of Things (IoT) is revolutionizing industries and unlocking new possibilities. Join Data Reply, Confluent, and Imply as we unveil a comprehensive solution for IoT that harnesses the power of real-time insights.
Similar to Microservices: What's Missing - O'Reilly Software Architecture New York (20)
Historical view of process and channel oriented programming idioms: CSP 1978, Occam 1983, Pi-Calculus 1993 etc. How they map to Go and some examples of dynamic channel routing using Go to simulate peer-to-peer networks and microservices networks.
Full slide deck for day long discussion of microservices topics. Why use microservices, what options exist and how to migrate to them and address common problems.
The document discusses the challenges of implementing effective network segmentation across modern distributed systems. It outlines several common mechanisms used for segmentation, such as VPC networks, security groups, Docker networking, and eBPF/Calico policies. However, it notes that individually these approaches face issues with scalability, coordination, and potential for misconfiguration. The document advocates for a hierarchical approach to segmentation that enforces consistent policies across layers from IAM roles to security groups to individual networks or segments. It raises open questions around coordinating policy specification and management across the different available mechanisms.
Microxchg Analyzing Response Time Distributions for MicroservicesAdrian Cockcroft
The document summarizes Adrian Cockcroft's work analyzing response time distributions for microservices. It discusses challenges in managing scale for microservice platforms and visualizing request flows across many services. It also introduces Spigo, a tool developed by Cockcroft that can simulate microservice architectures and interactions, generate traces, and collect response time histograms for analysis.
Updated slides for 2016 presentation on innovation in large organizations, why microservices and Docker can be useful, thoughts on monitoring for large complex architectures, some discussion of new topics - serverless architectures AWS Lambda and teraservices.
This document summarizes trends in cloud and container ecosystems observed by Adrian Cockcroft in November 2015. It notes rapid adoption and evolution of container technologies like Docker. Standards bodies are emerging around container orchestration. Cloud ecosystems like AWS, Azure, and GCE continue expanding globally while new players like DigitalOcean see strong growth. SaaS investment is growing fastest in areas like application performance management, ERP/accounting, and sales/marketing tools. Serverless architectures and "teraservices" using huge amounts of memory are trends to watch in 2016.
It's clear that Docker speeds up development and makes testing and deployment more efficient. As Docker moves into production new use cases and patterns are emerging that address availability and security concerns. With microservices, safety is part of the architecture that developers need to understand and build for. It's no longer good enough to wrap a firewall around an entire app when it goes to production, and have a cold standby in case it breaks.
Gluecon Monitoring Microservices and Containers: A ChallengeAdrian Cockcroft
This document discusses the challenges of monitoring microservices and containers. It provides six rules for effective monitoring: 1) spend more time on analysis than data collection, 2) reduce latency of key metrics to under 10 seconds, 3) validate measurement accuracy, 4) make monitoring more available than services monitored, 5) optimize for distributed cloud-native applications, 6) fit metrics to models to understand relationships. It also examines models for infrastructure, flow, and ownership and discusses speed, scale, failures, and testing challenges with microservices.
Keynote at Dockercon Europe Amsterdam Dec 4th, 2014.
Speeding up development with Docker.
Summary of some interesting web scale microservice architectures.
Please send me updates and corrections to the architecture summaries @adrianco
Thanks Adrian
This document discusses strategies for optimizing cloud costs using cloud native architectures. It provides examples of how Netflix optimized costs by rapidly experimenting in the cloud without capacity planning. It then outlines several approaches to reduce cloud costs including turning off idle resources, rightsizing instances, using auto-scaling, mixing reserved and on-demand instances, consolidating accounts, and expecting price reductions over time. Combining these approaches could potentially reduce costs by over 90% compared to traditional architectures over three years.
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...Adrian Cockcroft
Monitorama opening keynote talk on the challenges of Monitoring in a world where we need to deal with continuous delivery, cloud, and automated control feedback loops.
Hack Kid Con - Learn to be a Data Scientist for $1Adrian Cockcroft
Attempt to inspire some kids to pay attention in Math and Science classes so they can get a good job and help fill the skills gap in the years to come.
WhatsApp offers simple, reliable, and private messaging and calling services for free worldwide. With end-to-end encryption, your personal messages and calls are secure, ensuring only you and the recipient can access them. Enjoy voice and video calls to stay connected with loved ones or colleagues. Express yourself using stickers, GIFs, or by sharing moments on Status. WhatsApp Business enables global customer outreach, facilitating sales growth and relationship building through showcasing products and services. Stay connected effortlessly with group chats for planning outings with friends or staying updated on family conversations.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Odoo ERP software
Odoo ERP software, a leading open-source software for Enterprise Resource Planning (ERP) and business management, has recently launched its latest version, Odoo 17 Community Edition. This update introduces a range of new features and enhancements designed to streamline business operations and support growth.
The Odoo Community serves as a cost-free edition within the Odoo suite of ERP systems. Tailored to accommodate the standard needs of business operations, it provides a robust platform suitable for organisations of different sizes and business sectors. Within the Odoo Community Edition, users can access a variety of essential features and services essential for managing day-to-day tasks efficiently.
This blog presents a detailed overview of the features available within the Odoo 17 Community edition, and the differences between Odoo 17 community and enterprise editions, aiming to equip you with the necessary information to make an informed decision about its suitability for your business.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
SOCRadar's Aviation Industry Q1 Incident Report is out now!
The aviation industry has always been a prime target for cybercriminals due to its critical infrastructure and high stakes. In the first quarter of 2024, the sector faced an alarming surge in cybersecurity threats, revealing its vulnerabilities and the relentless sophistication of cyber attackers.
SOCRadar’s Aviation Industry, Quarterly Incident Report, provides an in-depth analysis of these threats, detected and examined through our extensive monitoring of hacker forums, Telegram channels, and dark web platforms.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
2. What does @adrianco do?
@adrianco
Technology Due
Diligence on Deals
Presentations at
Conferences
Presentations at
Companies
Technical
Advice for Portfolio
Companies
Program
Committee for
Conferences
Networking with
Interesting PeopleTinkering with
Technologies
Maintain
Relationship with
Cloud Vendors
Previously: Netflix, eBay, Sun Microsystems, CCL, TCU London BSc Applied Physics
6. @adrianco
Discussion Points
Failure injection testing
Versioning, routing
Protocols and interfaces
Timeouts and retries
Denormalized data models
Monitoring, tracing
Simplicity through symmetry
7. @adrianco
Failure Injection Testing
Netflix Chaos Monkey and Simian Army
http://techblog.netflix.com/2011/07/netflix-simian-army.html
http://techblog.netflix.com/2014/10/fit-failure-injection-testing.html
http://techblog.netflix.com/2016/01/automated-failure-testing.html
8. ! Chaos Monkey - enforcing stateless business logic
! Chaos Gorilla - enforcing zone isolation/replication
! Chaos Kong - enforcing region isolation/replication
! Security Monkey - watching for insecure configuration settings
! Latency Monkey & FIT - inject errors to enforce robust dependencies
! See over 100 NetflixOSS projects at netflix.github.com
! Get “Technical Indigestion” reading techblog.netflix.com
Trust with Verification
9. @adrianco
Benefits of version aware routing
Immediately and safely introduce a new version
Canary test in production
Use feature flags n
Route clients to a version so they can’t get disrupted
Change client or dependencies but not both at once
Eventually remove old versions
Incremental or infrequent “break the build” garbage collection
10. @adrianco
Versioning, Routing
Version numbering: Interface.Feature.Bugfix
V1.2.3 to V1.2.4 - Canary test then remove old version
V1.2.x to V1.3.x - Canary test then remove or keep both
Route V1.3.x clients to new version to get new feature
Remove V1.2.x only after V1.3.x is found to work for V1.2.x clients
V1.x.x to V2.x.x - Route clients to specific versions
Remove old server version when all old clients are gone
11. @adrianco
Protocols
Measure serialization, transmission, deserialization costs
“Sending a megabyte of XML between microservices will
make you sad…”
Use Thrift, Protobuf/gRPC, Avro, SBE internally
Use JSON for external/public interfaces
https://github.com/real-logic/simple-binary-encoding
12. @adrianco
Interfaces
When you build a service, build a “driver” client for it
Reference implementation error handling and serialization
Release automation stress test using client
Validate that service interface is usable!
Minimize additional dependencies
Swagger - OpenAPI Specification
Datawire Quark adds behaviors to API spec
23. @adrianco
Interface Version Pinning
Change one thing at a time!
Pin the version of everything else
Incremental build/test/deploy pipeline
Deploy existing app code with new platform
Deploy existing app code with new dependencies
Deploy new app code with pinned platform/dependencies
24. @adrianco
Timeouts and Retries
Connection timeout vs. request timeout confusion
Usually setup incorrectly, global defaults
Systems collapse with “retry storms”
Timeouts too long, too many retries
Services doing work that can never be used
25. @adrianco
Connections and Requests
TCP makes a connection, HTTP makes a request
HTTP hopefully reuses connections for several requests
Both have different timeout and retry needs!
TCP timeout is purely a property of one network latency hop
HTTP timeout depends on the service and its dependencies
connection path
request path
26. @adrianco
Timeouts and Retries
Edge
Service
Good
Service
Good
Service
Bad config: Every service defaults to 2 second timeout, two retries
Edge
Service not
responding
Overloaded
service not
responding
Failed
Service
If anything breaks, everything upstream stops responding
Retries add unproductive work
27. @adrianco
Timeouts and Retries
Edge
Service
Good
Service
Good
Service
Bad config: Every service defaults to 2 second timeout, two retries
Edge
Service not
responding
Overloaded
service not
responding
Failed
Service
If anything breaks, everything upstream stops responding
Retries add unproductive work
28. @adrianco
Timeouts and Retries
Edge
Service
Good
Service
Good
Service
Bad config: Every service defaults to 2 second timeout, two retries
Edge
Service not
responding
Overloaded
service not
responding
Failed
Service
If anything breaks, everything upstream stops responding
Retries add unproductive work
29. @adrianco
Timeouts and Retries
Bad config: Every service defaults to 2 second timeout, two retries
Edge
service
responds
slowly
Overloaded
service
Partially
failed
service
30. @adrianco
Timeouts and Retries
Bad config: Every service defaults to 2 second timeout, two retries
Edge
service
responds
slowly
Overloaded
service
Partially
failed
service
First request from Edge timed out so it ignores the successful
response and keeps retrying. Middle service load increases as
it’s doing work that isn’t being consumed
31. @adrianco
Timeouts and Retries
Bad config: Every service defaults to 2 second timeout, two retries
Edge
service
responds
slowly
Overloaded
service
Partially
failed
service
First request from Edge timed out so it ignores the successful
response and keeps retrying. Middle service load increases as
it’s doing work that isn’t being consumed
32. @adrianco
Timeout and Retry Fixes
Cascading timeout budget
Static settings that decrease from the edge
or dynamic budget passed with request
How often do retries actually succeed?
Don’t ask the same instance the same thing
Only retry on a different connection
34. @adrianco
Timeouts and Retries
Edge
Service
Good
Service
Budgeted timeout, one retry
Failed
Service
3s
1s
1s
Fast fail
response
after 2s
Upstream timeout must always be longer than
total downstream timeout * retries delay
No unproductive work while fast failing
36. @adrianco
Timeouts and Retries
Edge
Service
Good
Service
Budgeted timeout, failover retry
Failed
Service
3s 1s
For replicated services with multiple instances
never retry against a failed instance
No extra retries or unproductive work
Good
Service
Successful
response
delayed 1s
37. @adrianco
Manage Inconsistency
ACM Paper: "The Network is Reliable"
Distributed systems are inconsistent by nature
Clients are inconsistent with servers
Most caches are inconsistent
Versions are inconsistent
Get over it and
Deal with it
38. @adrianco
Denormalized Data Models
Any non-trivial organization has many databases
Cross references exist, inconsistencies exist
Microservices work best with individual simple stores
Scale, operate, mutate, fail them independently
NoSQL allows flexible schema/object versions
39. @adrianco
Denormalized Data Models
Build custom cross-datasource check/repair processes
Ensure all cross references are up to date
Immutability Changes Everything
http://highscalability.com/blog/2015/1/26/paper-immutability-changes-everything-by-pat-helland.html
Memories, Guesses and Apologies
https://blogs.msdn.microsoft.com/pathelland/2007/05/15/memories-guesses-and-apologies/
41. Cloud Native Microservices
! High rate of change
Code pushes can cause floods of new instances and metrics
Short baseline for alert threshold analysis – everything looks unusual
! Ephemeral Configurations
Short lifetimes make it hard to aggregate historical views
Hand tweaked monitoring tools take too much work to keep running
! Microservices with complex calling patterns
End-to-end request flow measurements are very important
Request flow visualizations get overwhelmed
42. Low Latency SaaS Based Monitors
https://www.datadoghq.com/ http://www.instana.com/ www.bigpanda.io www.vividcortex.com signalfx.com wavefront.com sysdig.com
See www.battery.com for a list of portfolio investments
46. Some tools can show
the request flow
across a few services
47. Interesting
architectures have a
lot of microservices!
Flow visualization is
a big challenge.
See http://www.slideshare.net/LappleApple/gilt-from-monolith-ruby-app-to-micro-service-scala-service-architecture
48. Simulated Microservices
Model and visualize microservices
Simulate interesting architectures
Generate large scale configurations
Eventually stress test real tools
Code: github.com/adrianco/spigo
Simulate Protocol Interactions in Go
Visualize with D3
See for yourself: http://simianviz.surge.sh
Follow @simianviz for updates
ELB Load Balancer
Zuul
API Proxy
Karyon
Business Logic
Staash
Data Access Layer
Priam
Cassandra Datastore
Three
Availability
Zones
Denominator
DNS Endpoint
49. Spigo Nanoservice Structure
func Start(listener chan gotocol.Message) {
...
for {
select {
case msg := <-listener:
flow.Instrument(msg, name, hist)
switch msg.Imposition {
case gotocol.Hello: // get named by parent
...
case gotocol.NameDrop: // someone new to talk to
...
case gotocol.Put: // upstream request handler
...
outmsg := gotocol.Message{gotocol.Replicate, listener, time.Now(),
msg.Ctx.NewParent(), msg.Intention}
flow.AnnotateSend(outmsg, name)
outmsg.GoSend(replicas)
}
case <-eurekaTicker.C: // poll the service registry
...
}
}
}
Skeleton code for replicating a Put message
Instrument incoming requests
Instrument outgoing requests
update trace context
51. Open Zipkin
A common format for trace annotations
A Java tool for visualizing traces
Standardization effort to fold in other formats
Driven by Adrian Cole (currently at Pivotal)
Extended to load Spigo generated trace files
57. Single Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
See for yourself: http://simianviz.surge.sh/riak
58. Single Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
Load Balancer
Load Balancer
Load Balancer
See for yourself: http://simianviz.surge.sh/riak
59. Single Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
Load Balancer
Normalization Services
Load Balancer
Load Balancer
Stream Service
Analytics Service
See for yourself: http://simianviz.surge.sh/riak
60. Single Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
Load Balancer
Normalization Services
Enrich Message Queue
Riak KV
Enricher Services
Load Balancer
Load Balancer
Stream Service
Analytics Service
See for yourself: http://simianviz.surge.sh/riak
61. Single Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
Load Balancer
Normalization Services
Enrich Message Queue
Riak KV
Enricher Services
Ingest Message Queue
Load Balancer
Load Balancer
Stream Service
Analytics Service
See for yourself: http://simianviz.surge.sh/riak
62. Single Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
Load Balancer
Normalization Services
Enrich Message Queue
Riak KV
Enricher Services
Ingest Message Queue
Load Balancer
Load Balancer
Stream Service Riak TS
Analytics Service
Ingester Service
See for yourself: http://simianviz.surge.sh/riak
63. Two Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
East Region Ingestion
West Region Ingestion
Multi Region TS Analytics
See for yourself: http://simianviz.surge.sh/riak
64. Two Region Riak IoT
IoT Ingestion Endpoint
Stream Endpoint
Analytics Endpoint
East Region Ingestion
West Region Ingestion
Multi Region TS Analytics
What’s the response
time of the stream
endpoint?
See for yourself: http://simianviz.surge.sh/riak
66. What’s the response time distribution of a very
simple storage backed web service?
memcached
mysql
disk volume
web
service
load
generator
memcached
68. memcached hit %
memcached response mysql response
service cpu time
memcached hit mode
mysql cache hit mode
mysql disk access mode
Hit rates: memcached 40% mysql 70%
72. Changes made to codahale/hdrhistogram
Changes made to go-kit/kit/metrics
Implementation in adrianco/spigo/collect
73. What to measure?
Client Server
GetRequest
GetResponse
Client
Time
Client Send CS
Server Receive SR
Server Send SS
Client Receive CR
Server
Time
74. What to measure?
Client Server
GetRequest
GetResponse
Client
Time
Client Send CS
Server Receive SR
Server Send SS
Client Receive CR
Response
CR-CS
Service
SS-SR
Network
SR-CS
Network
CR-SS
Net Round Trip
(SR-CS) + (CR-SS)
(CR-CS) - (SS-SR)
Server
Time
76. Go-Kit Histogram Example
const (
maxHistObservable = 1000000
sampleCount = 500
)
func NewHist(name string) metrics.Histogram {
var h metrics.Histogram
if name != "" && archaius.Conf.Collect {
h = expvar.NewHistogram(name, 1000, maxHistObservable, 1, []int{50, 99}...)
if sampleMap == nil {
sampleMap = make(map[metrics.Histogram][]int64)
}
sampleMap[h] = make([]int64, 0, sampleCount)
return h
}
return nil
}
func Measure(h metrics.Histogram, d time.Duration) {
if h != nil && archaius.Conf.Collect {
if d > maxHistObservable {
h.Observe(int64(maxHistObservable))
} else {
h.Observe(int64(d))
}
s := sampleMap[h]
if s != nil && len(s) < sampleCount {
sampleMap[h] = append(s, int64(d))
}
}
}
Nanoseconds!
Median and 99%ile
Slice for first 500
values as samples for
export to Guesstimate
80. @adrianco
“We see the world as increasingly more complex and chaotic
because we use inadequate concepts to explain it. When we
understand something, we no longer see it as chaotic or complex.”
Jamshid Gharajedaghi - 2011
Systems Thinking: Managing Chaos and Complexity: A Platform for Designing Business Architecture
83. Security
Visit http://www.battery.com/our-companies/ for a full list of all portfolio companies in which all Battery Funds have invested.
Palo Alto Networks
Enterprise IT
Operations &
Management
Big DataCompute
Networking
Storage