Google Cloud DevOps Series: Introduction to DevOps in Google Cloud

Google Cloud DevOps Series: Part-1

Pushkar Kothavade
Google Cloud - Community
6 min readOct 8, 2021

--

*The company name and personas mentioned in the storyline are fictional

What is DevOps in a Google way?

As every organization is becoming a software company, agile software development practices and DevOps practices are becoming mainstream today. As a part of the digital transformation journey, organizations are adopting DevOps practices with the primary objective of increasing collaboration between the development team and operations team, to enable frequent, faster and reliable software releases. Improved return on investment (RoI) is a natural by-product of this process.

As each organization has different culture, processes, technical capabilities, technology adoption, and tech debt, Google Cloud offers a comprehensive solution through a Google Cloud Application Modernization Program (CAMP) to meet the customers where they are and make their application development and deployment process better. CAMP program leverages Google’s multiple decades of software development experience and research findings from the DevOps Research and Assessment (DORA) Project. Built on the foundation of CAMP and DORA, Google Cloud has come up with the opinionated solution for the end-to-end application development for the containerized workloads.

We will take a detailed look at all the DevOps stages below:

Part-1: Introduction to DevOps in Google Cloud (This blog)

Part-2: Google Cloud compute options for Kubernetes

Part-3: Google DevOps-Continuous Development Workflow

Part-4: Google DevOps-Continuous Integration / Continuous Deployment Workflow

Part-5: Google DevOps-Observability with SRE principles

Part-6: Google DevOps-Agility with Cost Optimisation

Kubernetes is the de-facto platform for the containers

Google is the birthplace of Kubernetes. It builds on 15+ years’ experience of running Google’s containerized production workloads and also the valuable contributions from the large open-source community. Kubernetes is a spinoff from Google’s internal cluster management system, Borg. Google decided to open-source the Kubernetes project in the year 2014 and currently the project is hosted under CNCF foundation.

Kubernetes is the leading open-source platform today for container orchestration and management. It provides automated deployment, operations, scaling, and management of the containerized applications. With the widespread adoption of containers among digital natives and enterprise businesses, Kubernetes has become the de-facto standard to deploy and operate containerized applications. Agility is the key to success in today’s fast paced cloud-scale world. Kubernetes provides an automated container orchestration that reduces the time-to-market (TTM) for mission-critical business applications, enabling you to deliver value to customers in faster iterations. It enhances reliability of the system and reduces the operational overhead which helps organizations obtain better RoI.

Google Kubernetes Engine (GKE) provides managed Kubernetes clusters on the Google Cloud Platform. GKE can be deployed in minutes with just a few clicks.

GKE provides a highly available, scalable, secured, and completely managed platform to run production grade workloads. (We will be exploring GKE in detail in part two of this blog series)

How can you build a CI/CD system for Kubernetes ?

Post release of Kubernetes in 2014, the entire CI/CD ecosystem around the containers also started evolving. As with any new technology, this evolution of DevOps processes for Kubernetes was also not free of challenges. On one hand, organizations started leveraging existing tools and deployment methodologies which were not optimized for containerized workloads; on the other hand, people also started experimenting and integrating various open-source tools like Argo CD for CI/CD, Harbour for container registry, Helm for package management etc. Kubernetes native CI/CD system mainly consists of the following building blocks:

  • Version control system (eg. Git)
  • CI tool (eg. Jenkins)
  • Container registry (eg. Docker registry)
  • CD tool (eg. Spinnaker)
  • Compute platform for containers (eg. self-managed or managed Kubernetes platform)

Though these solutions serve the purpose of CI/CD, the amount of effort it takes from the DevOps / Platform team to build and maintain the integrations is substantial. At Google Cloud, we solve this challenge by providing the complete end-to-end CI/CD platform, keeping containers at the center stage.

End-to-end Application Modernization platform using Google DevOps

Google Cloud provides end-to-end opinionated solutions for the entire DevOps process. The Google Site Reliability Engineering (SRE) team manages Google DevOps Platform services and it is also completely serverless in nature. It comes as no surprise that Google Cloud is positioned as a leader in the ‘Multi-Cloud Container Development Platform’ category as per the Forrester Wave, 2020 report (Reference).

Google DevOps Platform — Building blocks

Google DevOps platform consists of the following building blocks that describe key activities/tools at each stage- Code, Source Repo, Build & Package, Deploy, Run, Operate/SRE. A high-level overview of how they integrate with each other is shown below:

Let’s explore each of these building blocks in detail-

Code

Cloud Code is a set of Integrated Development Environment (IDE) plugins which can be used in conjunction with existing IDEs, in order to simplify the cloud-native development process, developers can write, deploy, and debug containerized applications directly from IDEs, such as VS Code and IntelliJ, onto fully-managed compute offerings like GKE and Cloud Run(serverless).

Source Repo

Google Source Repository is a single place for the entire team to store, manage, and track codebase. Some notable feature of the service are:

  • Google Source Repository is Git compliant
  • It can be configured to automatically sync with the hosted repository on GitHub or Bitbucket
  • Provides an inbuilt view to focus on a specific branch, tag, or commit

Build

Cloud Build provides a fully-managed serverless platform to build software quickly across all programming languages, including Golang, Java, Python, Node.js, and other programming languages.

Package

Artifact Registry is an universal package manager which enables customers to centrally store artifacts and build dependencies. Seamless integration with other cloud services, like Cloud Build and GKE, provides integrated Google Cloud experience.

Run

Google Cloud provides multiple options to run your containerized application workloads including:

  • GKE : Google Cloud provides GKE service which is a managed service for running Kubernetes
  • Cloud Run: It provides a fully-managed serverless platform to run containerized stateless application workloads

Operate/SRE

Google Cloud’s operations suite extends Google’s best SRE tools and practices to the customers. Cloud Monitoring, Cloud Logging, and Advanced Observability tools (Trace, Debugger, and Profiler) are part of Google Cloud’s operations suite and has the following capabilities available out of the box

  • Capture signals like metrics, logs, and trace from applications and cloud services
  • Provides dashboard and troubleshooting tools for visualization and analysis
  • Manage incidents through Alerts, Errors, and Service-Level Objectives (SLOs)

Coming up..

In this blog we listened to Ram’s suggestions to Guhan on the main constructs of Google Cloud DevOps and how Google Cloud can help him get started in his modernization journey through DevOps and containerized workloads. Let us stay tuned for further details shared by Ram to Guhan on the tools and managed services that can help him build his own DevOps processes for modern workloads.

Contributors: Shijimol A K, Dhandus, Anchit Nishant, Jeevana Hegde

Update: You can read Part-2 here.

--

--