Preface

Cloud Foundry is a platform that helps you develop and deploy applications and tasks with velocity. Velocity, as a vector quantity, is different from raw speed because it is direction aware. In our case, direction is based on user feedback. Application velocity allows you to adopt an iterative approach to development through repeatedly gaining fast feedback from end users. Ultimately, this approach allows you to align your products, user requirements, and expectations. This book covers Cloud Foundry’s technical concepts, providing a breakdown of the various platform components and how they interrelate. It also will walk you through a typical setup of BOSH (a release-engineering tool chain) and Cloud Foundry, and unpack the broader considerations of adopting Cloud Foundry for enterprise workloads.

Like all distributed systems, Cloud Foundry involves various levels of complexity. Complexity is fine if it is well defined. Cloud Foundry does an excellent job defining its internal complexity by providing explicit boundaries between each of its components. For the most part, this removes the need for the platform operator to deal with Cloud Foundry’s internal complexity. However, there are still many other factors to consider when running Cloud Foundry; for example, choosing your underlying infrastructure, defining your networking architecture, and establishing your resiliency requirements. These concerns are environmental, relating to the ecosystem in which Cloud Foundry resides. Getting these concerns right is essential for reliably handling business critical workloads. Cloud Foundry: The Definitive Guide aims to tackle these environmental considerations and decision points that are required for configuring and running Cloud Foundry at scale.

In addition to unpacking the various considerations required for running the technology, this book also explores the concepts surrounding Cloud Foundry. My goal is to provide the necessary content for understanding the following:

  • Cloud Foundry’s underlying concepts

  • How Cloud Foundry works, including the flow of communication between the distributed components

  • How to begin deploying BOSH and Cloud Foundry, including the key configuration decision points

An understanding of how Cloud Foundry works is vital if you are running business-critical applications, services, and workloads on the platform. Understanding the role of each component along with the flow of communication is vital for troubleshooting platform issues.

Who Should Read This Book

My hope is that you are reading this book because you already believe Cloud Foundry will enable you to deliver software with higher velocity. If you are unfamiliar with the high-level concepts of Cloud Foundry and what it enables you to achieve, I suggest (shameless plug, I know) that you begin by reading Cloud Foundry: The Cloud-Native Platform. The purpose of that book is to provide an understanding of why you should care about using a platform to achieve application velocity.

This book is primarily aimed at Cloud Foundry operators who are responsible for installing, configuring, and operating Cloud Foundry. Cloud Foundry significantly simplifies the operational concerns of running applications and services. For example, imagine not having to provision infrastructure for every new project, and systematically repaving all your deployed machines via rolling upgrades with zero downtime. Empowering developers to deliver software with significantly less complexity and overhead is powerful. However, configuring and running Cloud Foundry itself can involve some complexity.

The team responsible for operating Cloud Foundry is often known as the platform operations team. This team’s responsibility includes deploying and operating Cloud Foundry so that application developers can take advantage of its capabilities.

Typical expertise required for the platform operations team is very broad. A list of required roles and skills is discussed at length in “Team Structure: Platform Operations for the Enterprise”. The list is diverse because Cloud Foundry leverages different technology layers across your infrastructure. Many platform operators have expertise with a subset of these disciplines. The challenge of adopting technology that touches so many varied layers is understanding each layer and how it should be configured to interact with the others. An additional objective of this book is therefore to enable platform operators to quickly expand their areas of expertise, and to gain understanding of the salient points of any unfamiliar territory.

The approaches in this text come from real experience with numerous companies from many different industries. The companies I have worked with all have embarked on a journey toward establishing Cloud Foundry at scale. If you are looking for a way of introducing Cloud Foundry into your development and deployment pipeline, this book is for you.

Cloud Foundry also makes developers’ lives easier, abstracting away the middleware, OS, and infrastructure concerns so that they can focus on just their application and desired backing services. Using Cloud Foundry is straightforward and sufficiently covered in the Cloud Foundry documentation. Therefore, developer usage of Cloud Foundry is not a focus of this book. With that said, many developers I have worked with find Cloud Foundry’s technology interesting and often desire a deeper understanding of the operational aspects detailed in this book.

This is a technically focused book intended for platform operators. Therefore, you should have some of the following basic system administrative skills:

  • Know how to open a terminal window in your OS of choice

  • Know how to install software tools such as command-line interfaces (CLIs)

  • Know how to use secure shell (SSH) and work with virtual machines (VMs)

  • Know how to work with source code from GitHub by both downloading and installing it (Mac users—Homebrew should be your go-to tool of choice here)

When I talk about specific Cloud Foundry tools such as BOSH, I will link you to an appropriate download location (often a GitHub repository). You can then follow the instructions in the linked repositories. For Mac users, you can also install most Cloud Foundry tools via Homebrew.

Why I Wrote This Book

As a platform architect for Pivotal, I have worked with numerous companies from various industries to help them install and configure Cloud Foundry. Like most platform operators, I began with knowledge of a subset of the technology; everything else I learned on the job. In my early days with Cloud Foundry, there are two key things that would have helped me:

  • An understanding of the critical configuration considerations for both the platform and the underlying distributed infrastructure

  • A reference architecture detailing the rationale and trade-offs for all implementation decisions

To address the first point, Cloud Foundry has forged a fantastic collaborative community from numerous companies and industries. I have been fortunate to work alongside an incredibly talented team with a diverse skill set, both within Pivotal and from other companies within the Cloud Foundry community. The reason I wrote this book is to document the best practices and considerations I have learned through working with Cloud Foundry.

Regarding the second point, as a consultant working across numerous industries, I see the same issues and questions coming up with every new engagement. It is therefore my hope that this book will explain the basic reference architecture for Cloud Foundry deployments, including detailing the rationale and trade-offs for all implementation decisions.

A Word on Cloud-Native Platforms

Cloud Foundry is a cloud-native platform. Such platforms are designed to do more for you so that you can focus on what is important: delivering applications that directly affect your business. Specifically, cloud-native platforms are designed to do more (including reliably and predictably running and scaling applications) on top of potentially unreliable cloud-based infrastructure. If you are unfamiliar with the high-level concepts of Cloud Foundry and what it enables you to achieve, you should begin by reading Cloud Foundry: The Cloud-Native Platform.

Online Resources

There are some great online references that you should familiarize yourself with as you embark on your Cloud Foundry journey:

Conventions Used in This Book

The following typographical conventions are used in this book:

Italics

Indicates new terms, URLs, email addresses, filenames, and file extensions.

Constant width

Used for program listings, as well as within paragraphs to refer to program elements such as variable or function names, databases, data types, environment variables, statements, and keywords.

Constant width bold

Shows commands or other text that should be typed verbatim by the user.

Constant width italics

Shows text that should be replaced with user-supplied values or by values determined by context.

Tip

This icon signifies a tip, suggestion, or general note.

Warning

This icon indicates a warning or caution.

Note

This icon indicates a item to take note of.

Command prompts always start with $, for example:

$ cf push

O’Reilly Safari

Note

Safari (formerly Safari Books Online) is a membership-based training and reference platform for enterprise, government, educators, and individuals.

Members have access to thousands of books, training videos, Learning Paths, interactive tutorials, and curated playlists from over 250 publishers, including O’Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, and Course Technology, among others.

For more information, please visit http://oreilly.com/safari.

How to Contact Us

Please address comments and questions concerning this book to the publisher:

  • O’Reilly Media, Inc.
  • 1005 Gravenstein Highway North
  • Sebastopol, CA 95472
  • 800-998-9938 (in the United States or Canada)
  • 707-829-0515 (international or local)
  • 707-829-0104 (fax)

To comment or ask technical questions about this book, send email to .

For more information about our books, courses, conferences, and news, see our website at http://www.oreilly.com.

Find us on Facebook: http://facebook.com/oreilly

Follow us on Twitter: http://twitter.com/oreillymedia

Watch us on YouTube: http://www.youtube.com/oreillymedia

Acknowledgments

One of the things I love about Cloud Foundry is its community. It is genuinely collaborative, and many people within the community have invested both time and expertise helping to shape the content and accuracy of this book. A brief section is not enough to encapsulate the extent to which my friends, family, and colleagues have helped me, but I will most certainly mention their names. Due to the breadth of support and the time it took to write this book, I have a sinking feeling that I’ve missed someone really important, in which case I apologize.

Various product managers and subject matter experts were incredibly generous with their time, both upfront to go deep on specific topics, and later on reviewing the relevant sections at length. In chapter order, I would like to thank: David Sabeti and Evan Farrar on Chapter 5; Eric Malm and Brandon Shroyer on Diego; Shannon Coen on Routing; Will Pragnell, Glyn Normington, and Julian Friedman on Containers; Ben Hale on Buildpacks; Dmitriy Kalinin on BOSH; Dan Higham on Debugging; Allen Duet and Mark Alston on Logging; Sree Tummidi and Filip Hanik on UAA; Haydon Ryan and Sean Keery on HA and DR; and Dieu Cao on the final Summary.

Numerous colleagues provided incredibly valuable input and tech reviews, including Matthew Stine, James Bayer, Onsi Fakhouri, Robert Mee, Graham Winn, Amit Gupta, Ramiro Salas, Ford Donald, Merlin Glynn, Shaozhen Ding, John Calabrese, Caleb Washburn, Ian Zink, Keith Strini, Shawn Neal, Rohit Kelapure, Dave Wallraff, David Malone, Christopher Umbel, Rick Farmer, Stu Radnidge, Stuart Charlton, Jim Park, and Dr. Nic Williams—along with many folks in Stark and Wayne, including Alex Ley and Daniel Jones.

Most of the material in this book was derived from experiences in the trenches, and there are many people who have toughed it out in those trenches alongside me. Several of the people already mentioned belong in this category, but in addition, I would like to thank Raghvender Arni, Mark Ruesink, Dino Cicciarelli, Joe Fitzgerald, and Matt Russell for their superb guidance and for establishing excellent teams in which I had the good fortune to work.

Thanks also to my good friend Vinodini Murugesan for her excellent editing. Special thanks to my mother, who always invested in my education, and to my father, who provided tireless coaching and feedback throughout my career; you both inspired me to do what I love to the best of my ability. And, finally, and most importantly, thanks to my wonderful wife, Tanya Winn, for her endless understanding and support in all my endeavors.

Get Cloud Foundry: The Definitive Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.