├── README.md
├── projects
├── cloud-developer
│ └── linktree-clone-barebones.md
├── cloud-native
│ ├── k8s-mindfulness-service.md
│ ├── k8s-mindfulness.png
│ └── placeholder.png
└── linktree-clone.md
└── requirements
├── architectual-diagrams.md
├── cost-anaylsis.md
├── presentation.md
├── project-journal.md
├── security-anaylsis.md
└── showcase.md
/README.md:
--------------------------------------------------------------------------------
1 | # Cloud Projects
2 |
3 | ## Why do I need to build a Cloud Project?
4 | In order to obtain a cloud role at a technology company, it is strongly recommended to build your own Cloud Project so that during your interview process you can demostrate practical working knowledge of cloud workloads.
5 |
6 | ## What does this projects repository provide?
7 |
8 | This repository contains "project blueprints" to help guide you towards building a well rounded cloud project.
9 |
10 | A blueprint is a just checklist of suggested requirements accompanied with additional information to get you started.
11 |
12 | ## Are their accompanying videos with these cloud projects?
13 |
14 | This projects repository does not contain one-to-one instructional steps to build a cloud project end to end.
15 |
16 | The value of a cloud project is you attempting to figure out how to complete a project without video instruction.
17 |
18 | # Cloud Project Requirements
19 |
20 | Your project needs to contain the following requirements:
21 |
22 | - [Project Journal](requirements/project-journal.md)
23 | - [Architectual Diagram(s)](requirements/architectual-diagrams.md)
24 | - [Presentation](requirements/presentation.md)
25 | - [Cost Anaylsis](requirements/cost-anaylsis.md)
26 | - [Security Anaylsis](requirements/security-anaylsis.md)
27 | - [Project Showcase (Codebase, Live Demo, IaC)](requirements/showcase.md)
28 |
29 | Please explore each of the requirements above before proceeding to create your Cloud Project.
30 |
31 | # Cloud Projects by Cloud Role
32 |
33 | ## Cloud Engineer Projects
34 |
35 | | Project Name | Difficulty |
36 | |---|---|
37 | | | Easy |
38 | | | Medium |
39 | | | Hard |
40 |
41 | ## Cloud Developer Projects
42 |
43 | | Project Name | Difficulty |
44 | |---|---|
45 | | [Linktr.ee Clone - Bare Bones](projects/cloud-developer/linktree-clone-bare-bones.md) | Beginner |
46 | | [Linktr.ee Clone - Data Driven](projects/cloud-developer/linktree-clone.md) | Associate |
47 | | [Linktr.ee Clone - Multi-Tenant SaaS](projects/cloud-developer/linktree-clone.md) | Professional |
48 |
49 | ## Cloud Architect Projects
50 |
51 | | Project Name | Difficulty |
52 | |---|---|
53 | | | Easy |
54 | | | Medium |
55 | | | Hard |
56 |
57 | ## DevOps Engineer Projects
58 |
59 | | Project Name | Difficulty |
60 | |---|---|
61 | | | Easy |
62 | | | Medium |
63 | | | Hard |
64 |
65 | ## Site Reliability Engineer (SRE) Projects
66 |
67 | | Project Name | Difficulty |
68 | |---|---|
69 | | | Easy |
70 | | | Medium |
71 | | | Hard |
72 |
73 | ## Data Analytics Projects
74 |
75 | | Project Name | Difficulty |
76 | |---|---|
77 | | | Easy |
78 | | | Medium |
79 | | | Hard |
80 |
81 | ## Data Engineer Projects
82 |
83 | | Project Name | Difficulty |
84 | |---|---|
85 | | | Easy |
86 | | | Medium |
87 | | | Hard |
88 |
89 | ## DevSecOps Projects
90 |
91 | | Project Name | Difficulty |
92 | |---|---|
93 | | | Easy |
94 | | | Medium |
95 | | | Hard |
96 |
97 | ## Cloud Security Engineer Projects
98 |
99 | | Project Name | Difficulty |
100 | |---|---|
101 | | | Easy |
102 | | | Medium |
103 | | | Hard |
104 |
105 | ## Cloud-Native Engineer
106 |
107 | | Project Name | Difficulty |
108 | |---|---|
109 | | [Free Mindfuless Service](projects/cloud-native/k8s-mindfulness-service.md) | Beginner |
110 | | | Associate |
111 | | | Professional |
--------------------------------------------------------------------------------
/projects/cloud-developer/linktree-clone-barebones.md:
--------------------------------------------------------------------------------
1 | # Link.tree Clone - Bare Bones
2 |
3 | Linktree is a Software as a Service (SaaS) to create a social media landing page around your personal brand.
4 |
5 | ## Cloud Project Scope
6 |
7 | The scope of this project is to:
8 | - build a static website
9 | - driven by static data
10 | - deployed to a cloud storage service
11 | - served by a Content Delivery Network
12 | - register a domain name and direct to your website
13 |
14 | ## Frontend (Static Website)
15 |
16 | You will neeed to build a frontend.
17 |
18 | [ Linktree HTML and CSS Clone Tutorial](https://www.youtube.com/watch?v=lUo6O_L-V-4) by Danny Thompson
19 |
20 | ## Cloud Storage
21 |
22 | - [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
23 | - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/)
24 | - [Google Cloud Storage](https://cloud.google.com/storage/docs)
25 |
26 | ## Content Delivery Network
27 |
28 | - [AWS CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html)
29 | - [Azure Content Delivery Network](https://docs.microsoft.com/en-us/azure/cdn/)
30 | - [Google Cloud CDN](https://cloud.google.com/cdn)
31 | - [Fastly](https://www.fastly.com/)
32 |
33 | ## Domain Name Service
34 |
35 | We will need to purchase or obtain a free domain.
36 |
37 | ## Deployment
38 |
39 | Deployment will be a manual process. In future versions of this projoect we will create a deployment pipeline.
--------------------------------------------------------------------------------
/projects/cloud-native/k8s-mindfulness-service.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Kubernetes Mindfulness Service
4 |
5 | ## Contributors
6 |
7 | The following people helped in the developement and finetuning of this community project idea.
8 |
9 |
21 |
22 | ## Hall of Completion
23 |
24 | This is a list of people who have succcesfully completed this project.
25 |
26 |
38 |
39 | To submit your project to the Hall of Completion, open a Github Issue and share your public repository for review and consideration of approval.
40 |
41 | ## Technical Goal
42 |
43 | This project aims to demonstrate you can deploy a simple production web application to Kubernetes to a managed service provider utilizing standard Kubernetes components and third-party services.
44 |
45 | ## Scenario
46 |
47 | A non-profit organization has received government funding to leverage cloud-native services for building public services accessible online. The org has hired you as their (only) Cloud-Native/Kubernetes Engineer.
48 |
49 | ### Feature Requirements
50 |
51 | The mindfulness app is accessible via any web browser.
52 | The mindfulness app consists of a single page that displays a breathing exercise that the user can perform.
53 |
54 | eg. two deep breaths, one short breath
55 |
56 | The breathing excerise must change every 15 minutes.
57 |
58 | There should be between 50 to 100 different breathing excerises
59 |
60 | ### Business Requirements
61 |
62 | The government funding works in two parts:
63 | 1. The non-profit will be provided funding to hire an engineer (that's you) to build a production-ready prototype
64 | 2. The non-profit will only receive ongoing funding to retain the engineer and maintain the service cost if the organization submits a: Architectural Diagram, a Technical Journal, a Cost Analysis, A Security Analysis.
65 |
66 | #### Architectural Diagram
67 |
68 | A PDF architectural diagram showing as much possible detail of the final architecture will need to be submitted to the government to obtain funding.
69 |
70 | #### Technical Journal
71 |
72 | There is concern that if the engineer (you) were to leave the project, the next person would not know what to do to carry on the project or may not understand your decisions.
73 |
74 | Another concern is that the service in question is only a production prototype and will be pulled down while the organization awaits approval for the second level of funding.
75 |
76 | A Technical Journal is required to mitigate the concerns
77 | The Technical journal is composed of different digital documents, Work Log, Technical Steps:
78 |
79 | ##### Technical Steps
80 |
81 | In the technical steps digital document, you need to write out all the technical steps taken. Similar to writing a tutorial.
82 |
83 | ##### Work Log
84 |
85 | In this document, every day you decide to work on the project, you describe what you plan to do today, what you think the solution will be, and the outcome (regardless of whether it was successful or failure.)
86 |
87 | #### Security Analysis
88 |
89 | While the app does not contain any sensitive organizational data or stores user data, you must describe the security of your service. Do your best here to meet what you think are the requirements.
90 |
91 | #### Cost Anaylsis
92 |
93 | The government needs to know the monthly spending to receive funding for ongoing costs.
94 |
95 | For two years out, a detailed breakdown of cost for three years out with the assumption there will be an increase in traffic and usage. (It is up to you to describe what the increase in capacity will be)
96 |
97 | You can factor in extra labour if it's not as simple as scaling to more machines.
98 |
99 | ## Third-Party Consultant Recommedations
100 |
101 | To obtain the initial funding, the organization had to by requirement consult a third-party Cloud-Native Engineer on how the service should be built. Therefore, you need to try and meet these requirements.
102 |
103 | 🚨 📖 Please Read All Requirements before getting started
104 |
105 | - [1. Building the application](#1-building-the-application)
106 | - [2. Managed database service](#2-managed-database-service)
107 | - [3. Containerizing the application](#3-containerizing-the-application)
108 | - [4. Managed Cloud Service Provider (CSPs)](#4-managed-cloud-service-provider-csps)
109 | - [5. External Load Balanacer](#5-external-load-balanacer)
110 | - [6. Domain Name](#6-domain-name)
111 | - [7. Encyption-in-Transit](#7-encyption-in-transit)
112 | - [8. Scheduled CronJob](#8-scheduled-cronjob)
113 | - [9. General Availability and AutoScaling](#9-general-availability-and-autoscaling)
114 | - [10. Right-sizing Pods](#10-right-sizing-pods)
115 | - [11. Multiple Fault Zones (Optional, Bonus Points)](#11-multiple-fault-zones-optional-bonus-points)
116 | - [12. Cluster Autoscaling (Optional Big Bonus Points](#12-cluster-autoscaling-optional-big-bonus-points)
117 | - [13. Block Storage and Snapshots](#13-block-storage-and-snapshots)
118 | - [14. Namespace](#14-namespace)
119 | - [15. Role Based Acess Controls (RBAC)](#15-role-based-acess-controls-rbac)
120 | - [16. Deployment](#16-deployment)
121 | - [17. Service Mesh](#17-service-mesh)
122 |
123 | ### 1. Building the application
124 |
125 | The web-application requirements is single web-app.
126 |
127 | You can build this web-application using any web-framework. Here are some examples.
128 | - Ruby on Rails
129 | - Sinatra
130 | - Laravel
131 | - Flask
132 |
133 | The web-application needs to retrieve a record from a single table of a relational database.
134 | You can either use:
135 | - MySQL
136 | - Postgres
137 | - MariaDB
138 |
139 | ### 2. Managed database service
140 |
141 | While you could use Stateful Sets to deploy the database within the cluster, the consultant specifically said to use a managed service by a Cloud Service Provider (CSPs).
142 |
143 | Examples of managed relational database services:
144 | - Amazon Relational Database Service (RDS)
145 | - Azure Database for MySQL or Postgres
146 | - Google Cloud SQL for MySQL or Postgres
147 |
148 | You will need to use a Kubernetes ExternalName Service
149 |
150 | ### 3. Containerizing the application
151 |
152 | Once you have built the web-application you need to ensure it can run in its own container.
153 |
154 | - You need to find an existing base container image that can run your web-framework.
155 | - You need create your own Dockerfile an extend that base image.
156 | - You need to build that image and store it in a container repository.
157 |
158 | ### 4. Managed Cloud Service Provider (CSPs)
159 |
160 | You need to host the cluster on a managed kuberenetes service.
161 | The following were suggested:
162 |
163 | - Elastic Kubernetes Service (EKS)
164 | - Azure Kuberenetes Service (AKS)
165 | - Google Kuberentes Engine (GKE)
166 | - IBM Kubrenetes Service (IKS)
167 | - CIVO Kubernetes Service (CKS)
168 | - Digital Ocean Kubernetes Service (DOKS)
169 |
170 | > CIVO does not have a managed relational database service so in this case you'll need to use CIVO alongside another Cloud Service Provider.
171 |
172 | Some CSPs have two different options for nodes, Virtual Machines, or Serverless Containers.
173 | You must avoid using serverless containers for the underyling compute for this project.
174 |
175 | ### 5. External Load Balanacer
176 |
177 | In order for traffic to reach the service you will need to leverage the Cloud Service Providers (CSPs) load balanacer.
178 |
179 | - You'll need to install an Ingress Controller
180 | - You'll need to create an Kubernetes Ingress
181 |
182 | > Make sure you are using the CSPs load balancer, and not the Nginx Ingress Controller.
183 |
184 | ### 6. Domain Name
185 |
186 | You need a domain name, purchase it or get a free domain name and point it to your service.
187 |
188 | ### 7. Encyption-in-Transit
189 |
190 | The web application needs to run on HTTPS.
191 |
192 | ### 8. Scheduled CronJob
193 |
194 | A Kubernetes CronJob should run every 15 minutes, and it should update your ConfigMap that stores a reference to the current record that should be retrieved from the database.
195 |
196 | ### 9. General Availability and AutoScaling
197 |
198 | There should always be at least three pods of the web-application running.
199 |
200 | You need to create a HorizontalPodAutoscaler and then use a Load-Testing Tool
201 |
202 | ### 10. Right-sizing Pods
203 |
204 | Use an AutoPodVertical scaler to right-size your pods to determine the best CPU and Memory usage.
205 |
206 | ### 11. Multiple Fault Zones (Optional, Bonus Points)
207 |
208 | Run your pods across at least three different fault zones.
209 | A fault zone is a collection of datacenters running in a different location.
210 |
211 | eg. AWS calls the Availability Zones.
212 |
213 | > You will have to run at leaast 3 nodes and this will greatly increase cost.
214 |
215 | ### 12. Cluster Autoscaling (Optional Big Bonus Points)
216 |
217 | Implement Cluster Autoscaling so more nodes will be added when using a Load Testing Tool.
218 |
219 | ### 13. Block Storage and Snapshots
220 |
221 | Your pods should utilize Block Storage from a cloud service provide.
222 |
223 | You must perform a Kubernetes Volume Snapshot
224 |
225 | ### 14. Namespace
226 |
227 | You need to namespace your web-application in a namespace called "mindfulness"
228 |
229 | ### 15. Role Based Acess Controls (RBAC)
230 |
231 | You need to create a user that can gain access to the cluster but only have read access to all components in the "mindfulness" namespace
232 |
233 | ### 16. Deployment
234 |
235 | You need setup a deployment tool that supports GitOps:
236 | - Argo
237 | - Flux
238 |
239 | You need to demostrate that it works with any kind of superfical change to your code to a git repository.
240 |
241 | Use need to use a *Blue/Green* deployment strategy
242 |
243 | ### 16. Service Mesh
244 |
245 | Implement a service mesh:
246 | - Istio
247 | - LinkerD
248 |
249 | Show that you can view service mesh information from Grapha and Promethous.
--------------------------------------------------------------------------------
/projects/cloud-native/k8s-mindfulness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/100DaysOfCloud/CloudProjects/48e64ead969cea7aa5aef1215ee5b35c05f54d34/projects/cloud-native/k8s-mindfulness.png
--------------------------------------------------------------------------------
/projects/cloud-native/placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/100DaysOfCloud/CloudProjects/48e64ead969cea7aa5aef1215ee5b35c05f54d34/projects/cloud-native/placeholder.png
--------------------------------------------------------------------------------
/projects/linktree-clone.md:
--------------------------------------------------------------------------------
1 | # Linktree Clone
2 |
3 | ## Project Summary
4 |
5 | Linktree is a tool that allows you to share multiple links on social media.
6 |
7 | Builda clone of Linktree.
8 |
9 | ## Certifications
10 |
11 | Choose one of the follow cloud certifications to use as your general study path, and build this cloud project while you study or after you have passed your exam.
12 |
13 | - [Azure Developer Associate](https://docs.microsoft.com/en-us/learn/certifications/azure-developer/)
14 | - [AWS Developer Associate](https://aws.amazon.com/certification/certified-developer-associate/)
15 | - [Google Cloud Associate Cloud Engineer](https://cloud.google.com/certification/cloud-engineer)
16 |
17 | ## Project Requirements
18 |
19 | - [ ] Build a frontend and deploy to it to a cloud storage service served by a Content Delivery Network (CDN)
20 | - [ ] Build an api backend and deploy it to a cloud computing service
21 | - [ ] Implement a decenteralized authenication service for signup, login and reset password
22 |
23 | ### Frontend
24 |
25 | You will need to build a frontend.
26 |
27 | [ Linktree HTML and CSS Clone Tutorial](https://www.youtube.com/watch?v=lUo6O_L-V-4) by Danny Thompson
28 |
29 | ## Backend
30 |
31 | You will need to build a backend
32 |
33 | ## Cloud Storage
--------------------------------------------------------------------------------
/requirements/architectual-diagrams.md:
--------------------------------------------------------------------------------
1 | # Architectual Diagrams
2 |
3 | ## What is an architectual diagram?
4 |
5 | An architectual diagram in the context of cloud is a visual representation of cloud services interconnected with other cloud services that make up a cloud workload.
6 |
7 | ## What is the point of an architectual diagram?
8 |
9 | An architectual diagram is used to quickly communicate a proposed or an existing cloud workload and its accompanying infrastructure to other team members or stakeholders.
10 |
11 |
12 | ## Why do I need to create an architectual diagram for my cloud project?
13 |
14 | Creating Architectual diagrams is a fundemental skill for any cloud role and during the interview process it is very common to be asked to draw an architectual diagram on a whiteboard to showcase or describe a cloud workload.
15 |
16 | # Architectual Diagrams Resources
17 |
18 | ## Architecture Icon Kits
19 | You can download Cloud Service Provider icons from the following links:
20 |
21 | - [AWS Architecture Icons](https://aws.amazon.com/architecture/icons/)
22 | - [Azure Architecture Icons](https://docs.microsoft.com/en-us/azure/architecture/icons/)
23 | - [Google Cloud Architecture Icons](https://cloud.google.com/icons)
24 | - [CNCF Architecture Icons](https://github.com/cncf/artwork)
25 | - [CISCO Network Topology Icons](https://www.cisco.com/c/en/us/about/brand-center/network-topology-icons.html)
26 |
27 | ## Graphical Software
28 |
29 | You will need some kind of graphical software to assemble your architectual diagrams. Here are your possible options:
30 |
31 | - [LucidChart](https://lucidchart.com)
32 | - [Draw.io](https://draw.io)
33 | - [PowerPoint](https://office.live.com/start/powerpoint.aspx)
34 | - [Google Slides](https://www.google.ca/slides/about/)
35 | - [System Architect](https://www.teamblue.unicomsi.com/products/system-architect/)
36 | - [OmniGraffle](https://www.omnigroup.com/omnigraffle)
37 | - [Microsoft Visio](https://www.microsoft.com/en-ca/microsoft-365/visio/flowchart-software)
38 |
39 | ## The C4 Model
40 |
41 | C4 Model is a lean graphical notation technique for modelling the architecture of software systems.
42 |
43 | C4 Model is not specific to cloud architectual diagrams but is appicable to any software systems including cloud workloads.
44 |
45 | C4 Model will help you understand what information is important to capture and what should be left out in your architectual diagrams.
46 |
47 | - [C4 Model Wikipedia Article](https://en.wikipedia.org/wiki/C4_model)
48 | - [C4 Model Website](https://c4model.com/)
49 | - [C4 Model Tech Talk by Simon Brown](https://youtu.be/x2-rSnhpw0g)
50 |
51 | ## Diagrams as Code
52 |
53 | Diagrams as Code allows you to programmatically generate architectual diagrams usingg python code.
54 |
55 | [Diagram as Code](https://diagrams.mingrammer.com/)
--------------------------------------------------------------------------------
/requirements/cost-anaylsis.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/100DaysOfCloud/CloudProjects/48e64ead969cea7aa5aef1215ee5b35c05f54d34/requirements/cost-anaylsis.md
--------------------------------------------------------------------------------
/requirements/presentation.md:
--------------------------------------------------------------------------------
1 | # Presentation
--------------------------------------------------------------------------------
/requirements/project-journal.md:
--------------------------------------------------------------------------------
1 | # Project Journal
2 |
3 | ## What is a Technical Narrative?
4 |
5 | A Technical Narrative is a document that shows the incremental history of the research and development you undertook during your project.
6 |
7 | For our purpose we'll call our Technical Narrative a "Project Journal".
8 |
9 | ## What should be written in a Project Journal?
10 |
11 | - A hypothesis for the technical solution
12 | - Outline the current limitations eg. Knowledge, Budget, Time
13 | - The documentation and education resources you used
14 | - The challenges you faces
15 | - The outcomes you were able to achieve (success or failures)
16 | - The evolution of your architectual diagram
17 |
18 | ## Why can't I just build the project, why bother with a Project Journal?
19 |
20 | The process you undertook to build your Cloud Project is equal or more important then the outcome of your Cloud Project.
21 |
22 | - A project journal will demostrate strong documentation skills
23 | - A project journal will help you recall and
24 | - A project journal will prove
--------------------------------------------------------------------------------
/requirements/security-anaylsis.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/100DaysOfCloud/CloudProjects/48e64ead969cea7aa5aef1215ee5b35c05f54d34/requirements/security-anaylsis.md
--------------------------------------------------------------------------------
/requirements/showcase.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/100DaysOfCloud/CloudProjects/48e64ead969cea7aa5aef1215ee5b35c05f54d34/requirements/showcase.md
--------------------------------------------------------------------------------