Chapter 6 overview

How to Work with Multiple Teams and Environments

Learn how to deal with problems of scale by breaking up your deployments into multiple environments and breaking up your codebase into multiple libraries and services.

Key ideas you'll learn

  • Multiple environments
  • Multiple libraries
  • Multiple services

Examples you'll try

  • Create multiple AWS accounts
  • Configure apps for multiple environments
  • Deploy microservices in Kubernetes

Table of contents

6.1 Breaking Up Your Deployments
6.1.1 Why Deploy Across Multiple Environments
Isolating tests
Isolating products and teams
Reducing latency
Complying with local laws and regulations
Increasing resiliency
6.1.2 How to Set Up Multiple Environments
6.1.3 Challenges with Multiple Environments
Increased operational overhead
Increased data storage complexity
Increased application configuration complexity
6.1.4 Example: Set Up Multiple AWS Accounts
Create child accounts
Access your child accounts
Deploy into your child accounts
Use different configurations for different environments
Close your child accounts
6.2 Breaking Up Your Codebase
6.2.1 Why Break Up Your Codebase
Managing complexity
Isolating products and teams
Handling different scaling requirements
Using different programming languages
6.2.2 How to Break Up Your Codebase
Breaking a codebase into multiple libraries
Breaking a codebase into multiple services
6.2.3 Challenges with Breaking Up Your Codebase
Challenges with managing multiple code bases
Challenges with integration
Challenges with managing multiple services
6.2.4 Example: Deploy Microservices in Kubernetes
Creating a backend sample app
Creating a frontend sample app
6.3 Conclusion

Related Books

Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization

By Susan J. Fowler (O'Reilly)

One of the biggest challenges for organizations that have adopted microservice architecture is the lack of architectural, operational, and organizational standardization. After splitting a monolithic application or building a microservice ecosystem from scratch, many engineers are left wondering what s next. In this practical book, author Susan Fowler presents a set of microservice standards in depth, drawing from her experience standardizing over a thousand microservices at Uber. You ll learn how to design microservices that are stable, reliable, scalable, fault tolerant, performant, monitored, documented, and prepared for any catastrophe.

Team Topologies: Organizing Business and Technology Teams for Fast Flow

By Matthew Skelton and Manuel Pais (IT Revolution Press)

Effective software teams are essential for any organization to deliver value continuously and sustainably. But how do you build the best team organization for your specific goals, culture, and needs? Team Topologies is a practical, step-by-step, adaptive model for organizational design and team interaction based on four fundamental team types and three team interaction patterns. It is a model that treats teams as the fundamental means of delivery, where team structures and communication pathways are able to evolve with technological and organizational maturity. In Team Topologies, IT consultants Matthew Skelton and Manuel Pais share secrets of successful team patterns and interactions to help readers choose and evolve the right team patterns for their organization, making sure to keep the software healthy and optimize value streams. Team Topologies is a major step forward in organizational design for software, presenting a well-defined way for teams to interact and interrelate that helps make the resulting software architecture clearer and more sustainable, turning inter-team problems into valuable signals for the self-steering organization.

Microservices in Action

By Morgan Bruce and Paulo A. Pereira (Manning)

Microservices in Action teaches you how to write and maintain microservice-based applications. Created with day-to-day development in mind, this informative guide immerses you in real-world use cases from design to deployment. You'll discover how microservices enable an efficient continuous delivery pipeline, and explore examples using Kubernetes, Docker, and Google Container Engine.

Microservices Patterns: With Examples in Java

By Chris Richardson (Manning)

The monolithic architecture works well for small, simple applications. However, successful applications have a habit of growing. Eventually the development team ends up in what is known as monolithic hell. All aspects of software development and deployment become painfully slow. The solution is to adopt the microservice architecture, which structures an application as a services, organized around business capabilities. This architecture accelerates software development and enables continuous delivery and deployment of complex software applications. Microservice Patterns teaches enterprise developers and architects how to build applications with the microservice architecture. Rather than simply advocating for the use the microservice architecture, this clearly-written guide takes a balanced, pragmatic approach. You'll discover that the microservice architecture is not a silver bullet and has both benefits and drawbacks. Along the way, you'll learn a pattern language that will enable you to solve the issues that arise when using the microservice architecture. This book also teaches you how to refactor a monolithic application to a microservice architecture.

Building Microservices: Designing Fine-Grained Systems

By Sam Newman (O'Reilly)

Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures. Microservice technologies are moving quickly. Author Sam Newman provides you with a firm grounding in the concepts while diving into current solutions for modeling, integrating, testing, deploying, and monitoring your own autonomous services. You'll follow a fictional company throughout the book to learn how building a microservice architecture affects a single domain.

Other Related Resources

Gruntwork DevOps Foundations

By Yevgeniy Brikman (Blog post)

same-author

Fast, secure, reliable AWS environments using Terraform/OpenTofu.

Microservices

By James Lewis and Martin Fowler (Blog post)

Defining the microservices architectural style by describing their nine common characteristics.

Configuration Language Tools

Cue

CUE makes it easy to validate data, write schemas, and ensure configurations align with policies.

Jsonnet

A powerful DSL for elegant description of JSON data.

Dhall

Maintainable configuration files.

Configuration Data Store Tools

Consul

Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime.

etcd

etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. It gracefully handles leader elections during network partitions and can tolerate machine failure, even in the leader node.

ZooKeeper

ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or another by distributed applications. Each time they are implemented there is a lot of work that goes into fixing the bugs and race conditions that are inevitable. Because of the difficulty of implementing these kinds of services, applications initially usually skimp on them, which make them brittle in the presence of change and difficult to manage. Even when done correctly, different implementations of these services lead to management complexity when the applications are deployed.

AWS Account Clean Up Tools

AWS Resource Explorer

Use AWS Resource Explorer to more easily search for and discover your resources across AWS and navigate directly to act on them.

Cloud Nuke

same-author

A tool for cleaning up your cloud accounts by nuking (deleting) all resources within it.

Automatic Update Tools

DependaBot

You can use Dependabot to alert you when your repository is using a software dependency with a known vulnerability.

Renovate

recommended

Mend Renovate products help developers automate dependency updates by detecting newer package versions and providing updates directly to the application code.

Snyk

Enable developers to build securely from the start while giving security teams complete visibility and comprehensive controls.

Patcher

same-author

Keep IaC up to date, even with breaking changes.

Comments