0%

Book Description

These days, you can’t swing a dry erase marker without hitting someone talking about microservices. But as developers write more code and build more applications than ever before, the trick is knowing which systems should use microservices and which shouldn’t. This report provides a set of principles you can use to focus your efforts.

Nataniel Schutta—prolific author, seasoned speaker, and proponent of polyglot programming—explains that while there are many good reasons to use microservices, this architecture can make things more complex. If you answer "yes" to one or more of the principles in this report, then your application is a good candidate for microservices. Answering "no" to every principle means you’d likely introduce accidental complexity into your system.

This report helps you examine:

  • Parts of your system that evolve at different speeds or in different directions
  • Independent lifecycles among the features in your application
  • Meeting demand by allowing components to scale independently
  • Using an abstraction layer to isolate third-party dependencies
  • Choosing different technologies to tackle different jobs
  • The impact that a technological change has on company culture

Table of Contents

  1. 1. The Microservice Revolution
    1. How Did We Get Here?
    2. What Is a Microservice?
    3. Microservices Are a Tool
  2. 2. Multiple Rates of Change
    1. Parts of Your System Evolve at Different Rates
    2. How Do We Know What Changes Faster Than the Rest?
    3. Applying the Strangler Pattern
  3. 3. Independent Life Cycles
    1. Always Be Changing
    2. Independent Life Cycles Boost Developer Productivity
    3. From Code to Prod: A Tale of Two Life Cycles
    4. Hypothesis-Driven Development
    5. Deployment Pipelines
    6. Move Fast and Fix Things
  4. 4. Independent Scalability
    1. The Monolith Forced Decisions Early—with Incomplete Information
    2. Not All Traffic Is Predictable
    3. Scale Up Where It Is Needed
    4. Monitoring for Fun and Profit
    5. All Services Are Equal (But Some Services Are More Equal than Others)
    6. Modernize Your Architecture to Use Modern Infrastructure
  5. 5. Failure Isolation
    1. No Service Is an Island
    2. Architectural Reviews
    3. Failures Find a Way
      1. The Circuit Breaker Pattern
      2. Spring Cloud Circuit Breaker
      3. Chaos Engineering
    4. Engineering Discipline
  6. 6. Indirection Layers
    1. Abstract Away External Dependencies
    2. Managing Your Services
    3. The Importance of Architecture
  7. 7. Polyglot Technology Stacks
    1. We’re a Java Shop
    2. One Size Fits None
    3. Paved Roads
    4. They’re Called Microservices
  8. 8. The Importance of Culture
    1. Culture Impacts Everything
    2. Evolving Your Organization
  9. 9. Migrating to Microservices
    1. Modular Monoliths, Macro Services, Oh My!
    2. Decomposing the Monolith
    3. Next Steps
18.216.149.94