DEV Community

Saif Bari
Saif Bari

Posted on • Updated on

Insights from the Cloud Resume Challenge

Cloud Architecture

Taking on the Cloud Resume Challenge pushed me beyond my comfort zone, offering a deep-dive into AWS services and related technologies. It provided hands-on experience and the chance to solve complex challenges. The end result, a portfolio website, can be viewed here.

For detailed technical aspects, check out the site’s GitHub repository. In this post, I'll be sharing some of my insights gleaned from this process.

While the challenge requires at least the AWS Cloud Practitioner certificate, I chose to delve deeper. Within a year, I secured the AWS Solutions Architect Associate, AWS SysOps Administrator Associate, and HashiCorp Certified: Terraform Associate certifications. These certifications fortified my understanding of cloud concepts and underscored the importance of continuous learning. I prepared through a mix of courses by Stefan Marek, Adrian Cantril, and Bryan Krausen, complemented by extensive hands-on labs, projects, and numerous practice tests, ensuring first-attempt successes. I embarked on the Cloud Resume Challenge between earning my AWS SysOps Associate certification in May 2023 and the Terraform Associate Certification in June 2023.

The remainder of the challenge consists of 14 steps, broadly categorized into three sections: Front end development, Back end development, and Automation implementation.

Front End Development

Front end tasks encompassed creating the site using HTML, CSS, and Javascript, then hosting it as a static site, secured with HTTPS and a custom domain. For the site construction, I employed HUGO static site generator and Tailwind CSS. I customized a template I admired, applying personal preferences like dark mode and altering color and font styles. It was valuable to gain insights into HUGO's workings, and working with Tailwind CSS was a great learning experience.

The site was hosted on S3 and served through a Cloudfront distribution with Origin Access Control (OAC), while domain hosting was handled by Route 53. HTTPS was facilitated by Amazon Certificate Manager (ACM) on the Cloudfront distribution.

This phase was a test of my creative problem-solving abilities and how to navigate technical constraints. For instance, for OAC to work properly with my site’s structure, I had to make subdirectories on Cloudfront accessible by appending 'index.html' to URIs, accomplished using Cloudfront functions.

Back End Development

The backend tasks necessitated creating a visitor counter using a database, an API Gateway, a Python Lambda function to interact with the database, and unit tests for validating the Lambda function code. This process, involving DynamoDB, API Gateway, and Lambda, emphasized the interconnectedness of cloud services. It challenged my programming skills, especially with the Python Boto3 library, and taught me the intricacies of using projection expressions with the DynamoDB API. This understanding was later useful in writing DynamoDB resource blocks in Terraform.

Understanding the subtleties of the API Gateway workflow, and troubleshooting integration and CORS issues, constituted a valuable learning experience, highlighting the importance of API security. Further, writing Python unit tests for my Lambda function using the Moto library offered practical exposure to the real-world application of thorough testing in building reliable apps.

Automation Implementation

The final automation segment necessitated deploying infrastructure using Infrastructure as Code (IaC), and implementing a CI/CD pipeline for propagating source control changes to the site or infrastructure. I used Terraform for backend infrastructure management and deployment, presenting a practical application of IaC - a part of the project I thoroughly enjoyed. Incorporating a CI/CD pipeline with GitHub Actions reinforced the power of automation, emphasizing the significance of integrating development and operations seamlessly to accelerate deployments. It was very satisfying to experience the successful automation of site build and deployment through code changes. This experience solidified my ambition to pursue a career in DevOps and cloud engineering.

Final Thoughts

My approach for this project began with manual operations, but by the end, everything was automated. Along the way, many things broke unintentionally, and I deliberately caused some disruptions to understand the mechanics. Addressing these issues expanded my experience and deepened my understanding of the system. If I were to improve this project, I would automate some more of the infrastructure through Terraform such as the Cloudfront Distribution, the S3 buckets hosting code, Amazon Certificate manager, and Route53 configuration.

Writing this blog post is the final step of the cloud resume challenge. Reflecting on this journey, the project was more than just understanding and applying cloud concepts; it was about creatively solving real-world problems. It re-emphasized the essential need for continuous learning in the tech industry which aligns with my personal values.

Top comments (0)