|Cloud Foundry: The Definitive Guide
Author: Duncan C. E. Winn
This is a guide to Cloud Foundry, the open source application platform originally developed by VMWare, and it lives up to its title of being the definitive guide.
The book was written by Duncan Winn, who has also written two other books on Cloud Foundry, has a long history working on Cloud Foundry and is obviously a keen advocate of the platform.
The book opens with a chapter on what the author means by a cloud-native platform and why you need it, before moving on to explain the concepts that Cloud Foundry is based on, including taking care of all the "heavy lifting" behind a cloud platform so you can do more of what is making you money.
The next chapter describes the components that make up Cloud Foundry - the cloud controller, the components that execute applications, those that manage metrics and logging, messaging, and the additional components in the marketplace. Having introduced the components, Winn then describes how to prepare your Cloud Foundry environment, and how to install and configure Cloud Foundry.
The next chapter is about Diego, Cloud Foundry's container runtime architecture. Diego handles the scheduling, orchestration and running of containerized workloads in Cloud Foundry, and is the most important element. Winn explains what it is, the architecture and concepts, how you work with it within Cloud Foundry, the state machine, and how it all fits together.
Routing considerations are the next topic to be covered in detail, including load balancer considerations, using Cloud Foundry's GoRouter component that routes traffic coming into Cloud Foundry to the appropriate component, and that is implemented in Go. The chapter also looks at the TCP Router, and Router services.
Containers are covered next, specifically OS-level containers, why they are useful, and how Cloud Foundry's Garden container manager works. This is followed by a chapter on Buildpacks and Docker, which are supported in Cloud Foundry as first-class citizens.
There's an interesting chapter on BOSH concepts. BOSH is a release-engineering tool chain that can be used to create versions of software, package and deploy it. BOSH was originally developed to deploy Cloud Foundry, and is also used within it as a major component. Having introduced BOSH, in the next two chapters Winn looks at the different BOSH releases and deployments, completing the coverage with a chapter on BOSH components and commands.
A chapter on debugging Cloud Foundry when things go wrong is next, looking at the most common reasons why things fail, then working through seven different scenarios that might happen. These include the app not being reachable; a security group misconfiguration blocking ingress traffic; high memory usage that kills a container; route collisions; and instance group failure. In each case, Winn gives a set of actions to work through that will pinpoint what exactly has gone wrong and the commands to put it right.
User account and authentication management is the topic of the next chapter, followed by chapter on "Design for resilience, plan for disaster" that looks at Cloud Foundry's built-in resilience features, how to use them and how you can expand resilience. Ways to back up and restore Cloud Foundry are also covered. The book ends with a chapter on the Cloud Foundry Roadmap, looking at what has been added recently, what's been announced for the near future, and some well-educated guesses on what might happen going further forward.
This is a well-written book that covers the topic in detail. If you need to understand Cloud Foundry and how it works, this is a good choice.