My Journey through the Cloud Challenge!
Tags: aws, serverless, career
Published: 2020-08-03 03:19:26

### The start
My AWS journey actually started about 2 years ago when I joined [A Cloud Guru](https://acloud.guru/), although the timing wasn't right professionally or personally to fully dedicate myself to go through the training, it really sparked my interest to learn about the cloud.

### Getting certified
Fast forward to spring of 2020, yikes! Testing positive for covid-19 meant I was going to be at home for a while. I said no better time to learn a new skill. I studied and dove head first for couple months studying for the AWS Certified Solutions Architect Associate exam, even while having to return to work. By May I was ready and passed the exam!
 
[![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qbmepx8urjiku6b29zir.png)](https://www.youracclaim.com/badges/61c7fbbc-08a5-4d04-836d-fbe036c25c40/public_url)

With my new found confidence and excitement to learn more, I decided to go for the Solution Architect Pro exam. Purchased the early access [Pro course](https://learn.cantrill.io/p/aws-certified-solutions-architect-professional) from Adrian Cantrill. Great course but was still waiting for it to be completed, so in the meantime I came accross The Cloud Resume Challenge by [@Forrestbrazeal](https://twitter.com/forrestbrazeal)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/z3i08iybpd5z80y0ha51.png)


### The Challenge
This was going to be challenging to say the least. It was going to require me learning new things, which I love, but would definitely require a time commitment.Since this challenge ended at the end of July 2020, it gave me 26 days. Since my birthday is on the 29th:tada::tada::tada:, this would be a great gift to myself if I could finish it by then! I would employ agile methodologies by using sprints to keep me organized and not fall behind getting stuck on a particular problem. [Challenge requirements](https://cloudresumechallenge.dev/instructions/) were as follow.
1. **Certification**- Lucky for me I had just completed this!:muscle:
2. **HTML/CSS** - It was time to dust of my old html/css skills. Havent used these in a while, but Google is became my friend during this challenge.:earth_americas:	
4. **Static S3 Website** - The new site [ordeproject.com](https://ordeproject.com) had to be hosted on AWS S3, this was simple to set up and do. Just easing into it!:slightly_smiling_face:	
5. **DNS/HTTPS/SSL Certificates**- I used AWS Route 53 to create record sets in order to use the custom url to the site and redirect the (www.)address over to just [ordeproject.com](https://ordeproject.com). Also created a record set to point to the Cloudfront distribution in order to use HTTPS. To use HTTPS, you had to use AWS Cloudfront with S3 Website endpoint as an origin. Doing this I had to make a public bucket policy for the S3 bucket. Here also had to make SSL certificates using AWS Certificate Manager.:cloud:	
7. **Javascript**- Now this would be time consuming for me as Ive never used JS. I watched many youtube tutorials to get the some basics. I ended up signing up to [Codeacademy Pro](https://www.codecademy.com/) and started to go through the 'Learn Javascript' course. I will continue to use this for other courses on the site, I really like the interactive learning style that they offer. :nerd_face:	
8. **Database** -The site needed a visitor counter and in order to store this number I used DynamoDB, luckily didnt have to to too much in here other than setting its Primary Key. And a way for Lambda to update the database.:slot_machine:	
9. **API** - This was fun, getting to learn API gateway and how works within the serverless model. The API would get invoked through the javascript in the site which would trigger our Lambda function to update the visitor counter that was in our DynamoDb. What was not fun was getting CORS errors:cursing_face:
10. **Python**- This one was another one I had to dust off as I haven't used Python in a long time and have not used it for very long. Needless to say Im also going through this in Codeacademy Pro course. The API gateway triggered our Lambda Function.:snake:	
12. **Infrastructure as Code** - This was another fun learning experience. Using AWS SAM you can build an entire app with only a few lines of code. Also learned how pick yaml indentations can be lol. I did get stuck here for quite some time. Although I may have stumbled upon a bug with SAM CLI V1.0.0 in which Ubuntu 18.04 doesnt play nice with Docker. I used some work-arounds to build and deploy the Cloudformation. By the time I got done with this step. I had one week remaining in the challenge. By this point Ive had been staying up till 12:30am and working on this at least 3 hours every night on the weekdays and about 6-10 on the weekends. It was crunch time!:fearful:
14. **CI/CD (Front-end)** This I really didnt quite understand before going through this challenge. Watching videos and reading up on Github Actions,Jenkins,AWS Codepipeline, and Ansible it really made sense why automation makes it a no brainer to use. Here I used GitHub Actions to upload new front-end code to S3 whenever there was a new push to the Github master branch. Only a few days remain to do the back-end automation. :hourglass_flowing_sand:	
15. **CI/CD (Back-end)** Its' crunch time! I came home showered ate and straight to my computer till it was time for bed. Here I had to learn how to do testing using Python in order for it to test a 200 ok response from the Lambda Function. If this passed it would build and deploy the Cloudformation after a push has been made to the master branch in Github. This was quite difficult and got discouraged many times as I was getting errors that I really had not clue how to fix. My Birthday came and went spent at work and working on this challenge lol and unfortunately I didnt get to complete it on this night I was much closer than I was the previous night. 2 days to go I was really doubting myself and even wondered at times if I belonged in the cloud space since I could not figure this out or had much of a clue how to fix it. I reached to to guys on the #Cloud Resume Challenge discord group and made a stackeoverflow post to get some help before the final day approached. The Final day, I got some responses which I tried as soon as I got off work. I was still getting errors. At this point I just started to fix error after error for about the next 5 hours. Then all of a sudden about 9:20pm with an 11:59pm deadline, my Github Actions hit all green checkmarks!!!! I let out a loud 'F*** YESSSSSSSSSSSSSSSSS' probably scaring my poor old sweet 93 year old neighbor Shirley, which I did apologize the next morning. I sent [@forrestbrazeal](https://twitter.com/forrestbrazeal) a message saying I was completed!!!! and he sent me this.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wc7tqvazfnzsxf79amnn.jpg)
![alt text](https://vignette.wikia.nocookie.net/simpsons/images/c/c3/D%27oh.jpg/revision/latest/window-crop/width/200/x-offset/0/y-offset/0/window-width/314/window-height/314?cb=20141226214635 "Logo Title Text 1")
I forgot to add the link of the new API gateway in the javascript code. Easy fix, and I had now completed the Challenge, and was a great late Birthday Gift. I learned alot in this challenge and felt so accomplished and proud of myself. I will continue to learn as Im still going through the Codeacademy Javascript and Python courses. I will also be studying for the Developers Associate exam followed up by the Pro course and exam as I believe [@Adrian Cantrill's](https://www.linkedin.com/in/adriancantrill/) course should be ready soon. Thank you [@Forrestbrazeal](https://twitter.com/forrestbrazeal) for doing this and pushing myself and others past our conceived capabilities!!
![alt text](https://media1.tenor.com/images/a1ae0528c60d243e6058da0e15d9daab/tenor.gif?itemid=8344036 "Ric Flair")