The Cloud Ready Hackathon prepares the engineers of all flavours for cloud-native development and deployment. It's focus is to give attendees a hands-on experience of working with Linux, Git, Docker, Kubernetes, popular DevOps tools such as GitHub Actions, Jenkins and Terraform. Attendees will work in teams completing a set of gated challenges that will take them on a journey to becoming the stars of today’s modern, cloud-native application world.
This Hackathon encompasses the modern software development toolbox – from source control, across testing tools to continuous integration and deployment. Each engineer working with software needs to have experience with these to be successful in the modern, cloud-native world.Every attendee will build the following technical skills:
- Fluency with the basic set of bash commands necessary to work in a Linux/Unix based environment
- Experience with Git commands to be able to successfully participate in development teams, both from the command line and chosen IDE
- Familiarity with software testing process, both the writing and executing tests
- Experience with Docker (creating and running custom images, pushing images to private docker repository)
- Experience with Kubernetes (running a cluster, deploying, running, and upgrading a microservice app)
- Working knowledge of chosen CI/CD automation tool (either Jenkins or GitHub actions)
Attendees will also explore the concepts of test-driven development, infrastructure as code, microservice architecture and service mesh.
Cloud Ready Hackathon builds on the concept of learning-by-doing in a highly interactive environment. Solving the real world problem without being told directly what to do will enable attendees to apply acquired skills immediately on their job
The challenges are connected – each of them builds on top of the previous one. The attendees will be given a repo containing the source code of the demo application consisting of several microservices developed using node.js. This application will be used throughout the Bootcamp, and each challenge will present a piece of the puzzle towards the story of continuous delivery into the Kubernetes environment. Challenges are briefly described below:
Challenge 1: Hello Linux
- A lap around Linux basics (most common bash commands, grep, vi/vim, writing scripts)
Challenge 2: To get or Git the code
- Introduction to Git concept of source control. Tasks include cloning repos, committing, pushing, branching, etc.
Challenge 3: Test, test, test… and then code
- Implement Unit tests for the existing code with Jest.
- Introducing Test-Driven Development. Implement new functionalities in a test-driven manner (first test, then code).
- Create a code-coverage report using SonarQube.
Challenge 4: Pack it and send it to the dock
- Introduction to containers with Docker.
- Creating Dockerfile, building images and pushing to Docker registry.
Challenge 5: Let the orchestration begin!
- Introduction to Kubernetes.
- Creating the first cluster using Google Kubernetes Engine. Deploying first container images to Kubernetes cluster.
Challenge 6: Let’s automate the packaging
- Introduction to CI/CD tools. Creating the continuous integration pipeline with unit testing, branch protection, code-quality gates, and creating and pushing container images.
- The attendee teams will be able to choose between Jenkins and GitHub Actions – whichever works for them
Challenge 7: Putting it all together
- Creating deployment pipeline for Continuous Delivery using Jenkins or GitHub Actions. Zero-downtime deployment using Helm.
Challenge 8: Coding the infrastructure
- Introduction to Terraform. Creating the infrastructure-as-code scripts for deploying the K8s and other services on GCP or Azure.
Challenge 9: What’s up with my application?
- Implementing monitoring solution leveraging Prometheus and Graphana. Deploying a “dirty” application and monitoring the status of the cluster.
- Implementing resource limitations for containers.
- Implementing alerting.
Challenge 10: Now, let’s mesh it up!
- Introduction of Istio as service mesh platform for Kubernetes. Implementing advanced microservices scenarios (advanced routing, retries with exponential backoff, circuit breaker, health checks, mutual TLS, …).
- Canary deployment