Defining Development Environments
Working with Kubernetes Locally
Integrating GCP into our Development Workflow
Deploying to Google Cloud Platform
In this course, we will explore some of the tools available to build and manage development environments intended for deployment on Google Cloud Platform products. We will also demonstrate how to easily push builds from our local machine to Google-hosted services.
We will start the course by covering the different types of development environments and their purposes. We will touch briefly on popular software methodologies and frameworks as they relate to choices in number and type of development environments.
This course will focus on container-based application development environments, tools, and services. We will first walk through installing and using Docker and Kubernetes on your local machine. Then we will explore how to push projects to Google Cloud Run and Google Kubernetes Engine.
Writing applications using Kubernetes or Cloud Run can be further streamlined with Google Cloud Code, which provides direct IDE support for development on these platforms. We will examine how to install and use Google Cloud Code with Visual Studio Code.
- Understand the types of development environments and when to use them
- Install a container-based local development environment
- Add Google Cloud Code support to VS Code
- Push code from a local development environment and run on Google Cloud Platform using:
- Google Cloud Run
- Google Kubernetes Engine
- Google Deployment Manager
- Programmers interested in developing containerized applications on Google Cloud Platform
- Solo developers new to working on a development team
- Anyone preparing for the Google Professional Cloud DevOps Engineer certification
To get the most out of this course, you should:
- Have a Google Cloud Platform account
- Have Google Cloud SDK installed and initialized
- Be familiar with IAM role management for GCP resources
- Have Visual Studio Code, Python 3, and Git installed
Knowledge of Python would also be beneficial for scripting with GCP, but it's not essential.
The easy accessibility of cloud-hosted environments allows us to streamline the software development life cycle in ways that were previously not possible. For small cloud DevOps teams, it's not uncommon to drop the testing environment and have a software development life cycle composed of just Development, Staging, and Production.
Since we are able to very closely replicate our production environment directly on our development machine with containers, and have many testing automation tools we can use in both development and staging, a separate testing environment isn't always needed. Since cloud DevOps teams can be small and nimble, the extra overhead of a separate testing environment may be unnecessary and can actually slow development down while incurring needless expenses.
With a large team of developers making frequent code changes to a complicated application, however, a testing environment will likely still be required to keep the latest builds organized. Multiple further testing environments for Quality Assurance, User Acceptance Testing, or Client Demos may even be required.
While the testing environment can sometimes be eliminated, it would still be unwise to skip from development straight to production without a staging environment. Even with nearly identical environments, the staging environment lets us perform those final preflight checks using live data sources before a new version is released to production.
Working with cloud-based infrastructure creates some complications for our development and testing environments. Extra steps need to be taken to connect a Google Cloud SQL database to our development environment using Google Cloud SQL Proxy, for example. There are many cloud-based services that we can’t replicate locally, so we will need proxy services like this for our application to function in our development environment.
Arthur spent seven years managing the IT infrastructure for a large entertainment complex in Arizona where he oversaw all network and server equipment and updated many on-premise systems to cloud-based solutions with Google Cloud Platform. Arthur is also a PHP and Python developer who specializes in database and API integrations. He has written several WordPress plugins, created an SDK for the Infusionsoft API, and built a custom digital signage management system powered by Raspberry Pis. Most recently, Arthur has been building Discord bots and attempting to teach a Python AI program how to compose music.