Microservices
Microservices is a software development technique—a variant of the service-oriented architecture (SOA) architectural style that structures an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. The benefit of decomposing an application into different smaller services is that it improves modularity and makes the application easier to understand, develop, test, and more resilient to architecture erosion. It also parallelizes development by enabling small autonomous teams to develop, deploy and scale their respective services independently. It also allows the architecture of an individual service to emerge through continuous refactoring. Microservices-based architectures enable continuous delivery and deployment.
Source: https://en.wikipedia.org/wiki/Microservices
Position on the Adoption Curve

Presentations about Microservices
No Microservice Is an Island

Designing Events-First Microservices

Debugging Microservices: How Google SREs Resolve Outages

Debugging Microservices: How Google SREs Resolve Outages

Skype's Journey From P2P: It's Not Just About the Services

Forced Evolution: Shopify's Journey to Kubernetes

3 Common Pitfalls in Microservice Integration

Design Microservice Architectures the Right Way

Digital Publishing for Scale: The Economist and Go

Microservice Open Space

Autonomous Microservices

Continuous Delivery of Microservices

Operating Microservices AMA w/ Google Engineers

Operating Microservices AMA w/ Google Engineers

Operating Microservices AMA w/ Google Engineers

Mastering Microservices Monitoring with Prometheus

Mastering Microservices Monitoring with Prometheus

Reactive Microservices and DevOps Pipelines with Red Hat OpenShift Application Runtimes

Reactive Microservices and DevOps Pipelines with Red Hat OpenShift Application Runtimes

Reactive Microservices and DevOps Pipelines with Red Hat OpenShift Application Runtimes

Practical Microservice, Full Day Build

Practical Microservice, Full Day Build

Practical Microservice, Full Day Build
Interviews
Debugging Microservices: How Google SREs Resolve Outages
What is the work that you do today as a Google SRE?
Adam: I work for a Google DevOps team that takes care of Monarch. Monarch is a very large time series database used for querying and metrics collection. Monarch is roughly the internal equivalent of combining Prometheus, Grafana, and Graphite from the open source world. Monarch also adds to that stack all of Stackdriver and provides the backend for a lot of our cloud signals product. My role is an SRE-SWE which means I'm involved in the software engineering side as well. So a lot of my time is spent taking apart Monarch and putting it back together more durably and more reliably. Durability is especially important because Monarch is a globally distributed system (it runs in every single availability zone).
Can you give me an idea of the scope and size we’re talking about with Monarch?
Adam: I can’t be specific, but it’s very large in terms of both QPS and resources. The quantity of data per stream is extremely variable in size, from periodically receiving one byte, to receiving a constant stream of high-cardinality data. The same applies to the query side, where some queries need only fetch a single stream, and some need to fetch and aggregate a lot of them. Some consumers are doing ad hoc queries, and other teams are doing a tremendous number of queries per second to inform their actual customer facing products. Without Monarch, we have no monitoring or alerting, so it’s a critical system.
See more interviews


