Book Profile
Bootstrapping Microservices, Second Edition With Docker, Kubernetes, GitHub Actions, and Terraform
Ashley Davis
A hands-on, project-driven guide that walks developers from zero to a fully deployed, production-ready microservices application using Docker, Kubernetes, GitHub Actions, and Terraform.
Get the book →Bootstrapping Microservices, Second Edition is the practical antidote to theoretical microservices books that leave developers wondering where to start. Author Ashley Davis guides readers through building FlixTube—a complete video-streaming application—from a single Node.js microservice all the way to a cloud-hosted Kubernetes cluster with automated CI/CD pipelines. Each chapter introduces the minimum tooling necessary (Docker, Docker Compose, Kubernetes, Terraform, GitHub Actions, Jest, Playwright) in carefully sequenced, working examples. Readers learn how to containerize services, manage data with MongoDB and Azure Storage, wire microservices together via HTTP and RabbitMQ, codify infrastructure with Terraform, automate deployments with GitHub Actions, and apply unit, integration, and end-to-end testing—all while keeping complexity manageable through iterative, keep-it-working development philosophy. Rather than prescribing dogma, the book positions microservices on a spectrum of architectural choices and equips readers with tools to choose freely.
What it argues
A causal model describing how design levers (architectural choices, tooling adoption, automation investment, and development practices) shape psychological and behavioral states in development teams, which in turn drive delivery and system quality outcomes when building microservices applications.
Key ideas it contributes
- Microservice Decomposition — The architectural decision to divide an application into multiple small, independently deployable processes, each with a single business responsibility and its own isolated data store, as opposed to a monolithic single-process architecture.
- Containerization Adoption — The extent to which every microservice is packaged as an immutable Docker image with explicit Dockerfiles for development and production, published to a versioned private container registry, and run exclusively as containers in both development and production environments.
- Infrastructure as Code — The practice of defining all cloud infrastructure (networking, compute, storage, identity) in version-controlled, executable code files (Terraform HCL) so that environments can be created, modified, and destroyed programmatically and repeatably without manual intervention.
- CI/CD Pipeline Investment — The degree to which automated GitHub Actions workflows (or equivalent) are implemented to build Docker images, run automated tests, and deploy microservices to production in response to code pushes, replacing manual build-publish-deploy sequences with reliable, auditable automation.
- Automated Test Coverage — The breadth and depth of code-driven tests across unit, integration, and end-to-end levels that exercise microservice behavior—including mocked dependencies, database fixtures, and browser-level simulations—providing a programmatic safety net that detects regressions before production deployment.
- Iterative Development Practice — The developer behavior pattern of making small, focused code changes in rapid succession, keeping the codebase in a continuously working state at each step, starting from the simplest implementation, and using live reload tooling to minimize the time between code change and observable test result.
- Loose Coupling Design — The architectural property of a microservices system whereby inter-service dependencies are minimized—achieved through indirect RabbitMQ messaging for notifications, isolated per-service databases, and well-defined REST API boundaries—so that each service can evolve, scale, or be replaced without requiring coordinated changes in other services.
- Team Skill Level — The collective technical proficiency of the development team in the specific tools and concepts required for microservices—Docker, Kubernetes, Terraform, CI/CD, distributed systems design, messaging patterns, and automated testing—which determines the effectiveness with which the architectural and tooling levers can be applied.