Welcome to Bootcamp AI

Introduction

Jobs in Cloud Computing

Cloud Computing

The cloud has become a key enabler for innovation with beneficial features like high availability, unlimited capacity, and on-demand scalability and elasticity. Learn the fundamentals of cloud computing while being introduced to compute power, security, storage, networking, messaging, and management services in the cloud. While learning the fundamentals, you will explore tools and services offered by Amazon Web Services (AWS) through interactive hands-on exercises. By the end of the course, you will have deployed your first website to AWS, and you will be prepared to continue your learning journey in the Cloud Developer Nanodegree program

Storage & Content Delivery

Security

Networking & Elasticity

Messaging & Containers

AWS Management

Deploy Static Website on AWS

Getting Started with CloudFormation

With the advent of cloud computing, along came several tools that enabled us to deploy the underlying infrastructure components that provide security and services to our servers by writing scripts. In this course, you’ll learn how to deploy this infrastructure using CloudFormation, AWS’ tool for Infrastructure as Code. You will use CloudFormation to deploy Infrastructure patterns that are used broadly in the industry and can be readily used to deploy any cloud application. Like in the real world, you will begin with initial business requirements that you will turn into Cloud Architecture Diagrams. Then, you will deploy this architecture using CloudFormation

Infrastructure Diagrams

Networking Infrastructure

Servers and Security Groups

Storage and Databases

Monitoring & Logging

In this course, you’ll learn the process of taking software from source code to deployment and beyond. You’ll learn about automated testing, choosing the right deployment strategy for your business needs and deploying an appropriate CI/CD pipeline. You’ll also learn about monitoring and logging to ensure that your application is running at peak performance and stays that way. You’ll also learn to manage and make changes to your servers in an automated way, using Ansible, a leading Configuration Management tool.

Continuous Integration and Continuous Deployment—

Continuous Integration and Continuous Deployment Strategies —

Building a Continuous Integration Pipeline –

Enabling Continuous Delivery with Deployment Pipelines

Monitoring Environments

Deploy an Event-Driven Microservice

In this course, you will learn to create and deploy a Kubernetes cluster, configure Kubernetes autoscale, and load test a Kubernetes application. You’ll learn to operationalize both existing and new microservices, and apply containers best practices. You’ll learn to deploy Machine Learning microservices that are elastic and fault tolerant. You’ll learn to pick the appropriate abstraction for microservices: Serverless (AWS Lambda) or Container Orchestration (Kubernetes).

Using Docker Format Containers

Containerization of an Existing Application

Container Orchestration with Kubernetes

Operationalizing Microservices

Operationalize a Machine Learning Microservice API

Job

Find your dream job with continuous learning and constant effort

Refine Your Entry-Level Resume

Craft Your Cover Letter

Optimize Your GitHub Profile

Develop Your Personal Brand

Alerts and Incidents Response

Operationalizing a Microservice Overview

One important factor in developing a microservice is to think about the feedback loop. In this diagram, a GitOps style workflow is described.

  1. Application is stored in Git.
  2. Changes in Git trigger the continuous delivery server which then tests and deploys the code to a new environment. This environment is configured as Infrastructure as Code (IaC).
  3. The microservice, which could be a containerized service running in Kubernetes or a FaaS (Function as a Service) running on AWS Lambda, has logging, metrics, and instrumentation.
  4. A load test using a tool like locust.
  1. When the performance and auto-scaling is verified the code is merged to production and deployed

What are some of the items that could be alerted on with Kubernetes?

  • Alerting on application layer metrics
  • Alerting on services running on Kubernetes
  • Alerting on the Kubernetes infrastructure
  • Alerting on the host/node layer

How could you collect metrics with Kubernetes and Prometheus? Here is a diagram that walks through a potential workflow. Note that there are two pods. One pod is dedicated to the Prometheus collector and the second pod has a “sidecar” Prometheus container that sits alongside the Flask application. This all propagates up to a centralized monitoring system that visualizes the health of the clusters and trigger alerts.

Another helpful resource is an official sample project from Google Cloud Monitoring apps running on multiple GKE clusters using Prometheus and Stackdriver.

Reference

Creating Effective Alerts

At one company I worked at there was a homegrown monitoring system (again, initially created by the founders) that alerted on average every 3–4 hours, 24 hours a day.

Because everyone in engineering, except the CTO, was on call, most of the engineering staff was always sleep deprived. This system guaranteed that every night there were alerts about the system not working. The “fix” to the alerts was to restart services. I volunteered to be on call for one month straight to allow engineering the time to fix the problem. This sustained period of suffering and lack of sleep led me to realize several things: one, the monitoring system was no better than random; two, I could potentially replace the entire system with a random coin flip.

Alerts by Day

Even more distressing, when looking at the data, it was clear that engineers had spent YEARS of their lives responding to pages and getting woken up at night. All that, and it was utterly useless. The suffering and sacrifice accomplished nothing and reinforced the sad truth that life is not fair. The unfairness of the situation was quite depressing, and it took quite a bit of convincing to get people to agree to turn off the alerts. There is a built-in bias in human behavior to continue to do what you have always done. Additionally, because the suffering was so severe and sustained, there was a tendency to attribute a deeper meaning to it. Ultimately, it was a false God.