Unicorn Workshop

Bookmark this page. You will use it as a home page or Agenda for the Unicorn Workshop.
Share this page:

Welcome to the Unicorn Workshop

This Workshop will help you become a Cloud Ninja.

Before you start, your answer needs to be “yes” to these 3 questions:

  • Do you understand this is a commitment, and it will take time?
  • Is goal to become a Cloud Engineer/Developer/Architect?
  • Do you understand this is an open source project, meaning - free work, and it gets better as people like you give feedback/contribute?

Before you start, try to define what you’re trying to get out of this workshop. Set a goal, write it down, and keep it in your mind at all times. This will help you decide where to spend more time. Some examples are:

  • You come from Infrastructure, you want to learn more about Cloud, Development and DevOps, to become a Cloud Architect.
  • You are a Developer, and you want to learn more about Cloud Infrastructue, and how you can leverage it, so that ultimately you can become a Cloud Architect.
  • You’ve been working with Cloud for a while, and you’re looking for a cool open source project to check out the best practices, and incorporate them in your daily work / your company, which will make you become a true Cloud Architect.

Some of the Workshop steps might seem awkwardly placed, but I promise you it will all make sense in the end. Technology Stack is complex, there’s always a lot of stuff you need to know from different areas to deploy your Infra or App, so just be patient, and enjoy the journey.

True beauty of this workshop is that it’s designed so that you choose the technologies you want to focus on, there is no need to follow the proposed oreder. The Unicorn App is ready and deployable, so just choose your tech. Hopefully you’ll end up contributing.

SECTION 1 Let’s set up the Tools and Platforms
1.1 Build your Dev Environment Before we start writting any code, you need to have the right tools. This includes AWS Account, GitHub, AWS CLI, AWS CDK, AWS SDK, Go etc.
1.2 Get familiar with GitHub Unicorn Repository Unicorn Project is an open source Cloud Learning Plarform. All the code we’re handling here is public. Read the contend of README.md to get acquainted with how code is organized.
1.3 Let’s read the Requirements, and you understand the Web App we’re building Remember this: before starting the design of any application, make sure you fully understand the requirements. How else will you know if your design meets the requirements if you don’t even know the requirements? This includes SLAs, Backup, how users need to authenticate, regulation and compliance etc.
1.4 Let’s get familiar with the Unicorn Pursuit Web App Architecture Understand the technology stack, and what each component does in the final architecture.
1.5 Intro to AWS CloudFormation How to write CloudFormation YAML Templates and create Stacks. Before going deep into individual AWS Services, we need to get familiar with configuration tools we’ll be using.
1.6 Start with AWS CDK (Cloud Development Kit) Learn how to seize the best of both, indicative and declarative programming. How to create CloudFormation Stacks using Python with special library called AWS CDK (Cloud Development Kit). AWS CDK with Python is our official deployment tool, which makes this exercise very important.
SECTION 2 AWS: Cloud Infrastructure
2.1 Understand Regions, TAGs, Naming Understand basic AWS concepts, including Availability Zones, Regions, Tagging, Naming, etc. as well as the rules we’ll be using them in this Workshop
2.2 S3 as Object Storage S3 will be used to store our static content. Learn how to configure S3 bucket.
2.3 DynamoDB as NoSQL Database DynamoDB is a NoSQL high performant database that fits perfectly in our example of Voting and forming Leaderboards for Unicorn Pursuit
2.4 Cognito for Authentication Even though we could just locally handle users and passwords, we’d prefer to do something enterprise production ready, with managed user pool and MFA, which we will achieve.
2.5 EC2 Learn everythink about AWS IaaS and Virtual Machines
2.6 ECS, managed Container Service - Fargate To make our app run the same on any platform, we will dockerize it, and deploy on container management platform with Fargate
2.7 CDN with CloudFront To enable caching on the edge, and improve user experience wherever our users are, we will use CloudFront, a Content Delivery Network by AWS.
2.8 IAM - Identity Access Management Learn how to manage users, and their access to the AWS resources.
2.9 KMS - Key Management Service Learn how to use KMS to encrypt data to help protect against improper access.
2.10 API Gateway API Gateway allows you to publish, maintain, monitor and secure your APIs. API Gateway basically exposes REST API HTTPS endpoints, and manages what each API endpoint “maps to” in the backend, what it triggers.
2.11 Messaging Services: SQS, SNS Messaging protocols can be very useful when you want to notify either users or other services of an event.
SECTION 3 Let’s dive into Web Development in GO
3.1 Start with Go basics Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. We need to learn the basic constructs, such as packages, routes, templates etc.
3.2 Gin Web development framework for Go Learn how to make Go Web development a bit more user-friendly and more performant using Gin framework.
3.3 Containerize Unicorn with Dockerfile How to containerize Golang Web App. Learn how to create a Dockerfile
3.4 Create Frontend with HTML, CSS, JS and React
3.5 Testing in Go
SECTION 4 AWS SDK (Software Development Kit) for Go and Python
4.1 Create AWS Session using AWS SDK
4.2 Use Systems Manager to store credentials How to safely store your passwords and other confidential info using AWS Systems Manager Parameter Store, and retreive the value to a variable in your code. Learn to NEVER store your passwords or access keys in plane text, anywhere.
4.3 Configure storing static files in S3 How to store and consume S3 objects from Golang. In Unicorn Pursuit, we’ll store Project Images and Diagrams in an S3 Bucket.
4.4 Handle Unicorn Users with Cognito We created the Cognito User Pool and App Client using AWS CDK. Now it’s time to create Login, Logout and Register page in Unicorn Pursuit, so our users can authenticate.
4.5 Unicorn Projects and Voting with DynamoDB
4.6 Build Unicorn container in Fargate How to containerize the Go application, and deploy it in ECS managed container orchestrator - Fargate.
4.7 Create required Lambdas Lambda is always handy to implement the functions we don’t have “out of the box”. Let’s use AWS SDK for Python, and fill the gaps.
SECTION 5 Site Reliability Engineering (SRE)
5.1 Why SRE could be the perfect implementation of DevOps
5.2 Day 2 Operations: SLOs, SLAs, Monitoring, Alarms
SECTION 6 Understand Shared Responsability model in Cloud
SECTION 7 Get Certified



Last modified May 19, 2020: NextLessionAdded (2213181)