Building Practical Skills for Cloud Mastery through the AWS Cloud Resume Challenge
Piloting into AWS Cloud, Web Tech and CI/CD
As a career transitioner seeking to build expertise in the cloud, I set a goal this year to achieve the AWS Solutions Architect and Cloud Practitioner certifications. While achieving the certifications, I knew that it was essential to test my skills by completing a practical, real-world project. And as I combed the web, I found the AWS Cloud Resume Challenge by Forrest Brazeal which was an opportunity for me to improve and validate my technical knowledge and skills.
I've compiled my experiences with each chunk in this blog and provided links to each of them which share more details.
The current product: Don Angeles | AWS SAA, PMI CAPM and the Github Repo.
System Architecture
Built on the AWS Cloud, my implementation of the architecture shown above involves the use of S3 for content storage, CloudFront for content distribution, Lambda for serverless functions, API Gateway for Lambda invocation, DynamoDB for the visitor counter, Route 53 for DNS routing and hosting, and ACM for SSL/TLS. Terraform is used for IAC, Github for version control, Pytest for integration and unit testing, and Github actions to enable automation of CI/CD.
Chunk 1: Learning Fast and Googling Well
The first chunk was about setting up the front-end of the project; a static webpage on S3 and distributing it via Cloudfront with HTTPS. This phase emphasized the importance of not fearing to make changes, embracing the necessity to research for solutions, asking for help from a person or a machine, and experimenting with solutions as I navigated various challenges in Cloudfront, S3, ACM, and Route 53 interactions. By the end of this chunk, the website should show in any browser when using the custom domain name.
Chunk 2: A Function in the Cloud
Developing a visitor counter using DynamoDB, Lambda, and API Gateway marked the next phase and set up the backend of the system. Completing this chunk was crucial in being able to understand the integration of different AWS services as well as the necessary permissions that allow them to work seamlessly. Postman was used to validate that the API endpoint was successful in triggering the Lambda function and return a value.
Chunk 3: Displaying the Counter to the Front-end
This chunk synergizes my understanding of how AWS services and their interconnections as the visitor counter had to be displayed coming from the back-end onto the front-end of the system. It was essential to know and understand how to use JavaScript to trigger the API and set up Cross-Origin Resource Sharing (CORS) to successfully show the counter. Additionally, this phase was also a great practice for the nuances of code testing, where I utilized both unit and integration tests for system robustness and reliability.
Chunk 4: Navigating IAC and CI/CD
The final chunk involved implementing Infrastructure as Code (IAC) with Terraform and Continuous Integration/Continuous Deployment (CI/CD) with GitHub Actions. I decided to import the resources instead of recreating the system which helped me understand in depth how Terraform manages cloud resources. That was also the most difficult part since it was paramount to ensure that Terraform was not changing the behaviour of the system unintentionally. As the last task for the project, implementing CI/CD using GitHub Actions enabled quick changes while ensuring system reliability due to the automation of testing and deployment it provides.
Reflection
This project was a very well-rounded challenge and was truly rewarding in terms of not only the amount but more so the quality of learning that was required to complete it. The whole process was quite empowering since it not only improved my technical abilities but also genuinely tested my perseverance and problem-solving skills. It was truly a wonderful experience to have been able to relate and interconnect multiple technologies to create a cohesive system that enables something to work albeit a seemingly simple webpage.
However, this challenge was not just about showcasing my newfound skills; it represents a significant first step on my journey towards becoming a cloud professional. I'm eager to further develop my expertise and hopefully apply it to new ventures and collaborations! I would love to hear from you and any opportunities you can offer. Lastly, I would appreciate any recommendations for the next project to build!
Acknowledgments
Special thanks to my wife and my parents who have been supportive in all ways possible in my journey to transition into the cloud. And most importantly, praise and glory be to God.