Revisiting the Cloud Resume Challenge
A couple of years ago, I embarked on the Cloud Resume Challenge with the intent to explore the realm of cloud computing. The project involved building a website and a visitor counter API using AWS services, AWS CDK, and CI/CD pipelines. Completing the challenge not only showcased my coding skills but also opened my eyes to the possibilities of cloud technologies.
While I excelled in frontend development, the allure of cloud technologies remained strong. The potential to architect scalable solutions, work with serverless architectures, and manage infrastructure as code intrigued me. The idea of seamlessly integrating frontend and backend components in the cloud ecosystem was both exciting and challenging.
To facilitate the shift, I started allocating time to explore cloud platforms, enhance my knowledge of serverless architecture, and dive deeper into infrastructure as code. I delved into AWS documentation, attended online courses, and experimented with building cloud-based projects.
The Cloud Resume Challenge
The Cloud Resume Challenge presented an exciting opportunity to build a resume in a unique and innovative way. Instead of relying on a static document, I could develop a dynamic website and API that would reflect my technical prowess. The challenge showcases the deployment of a serverless static website, a visitor counter API, and continuous integration/continuous deployment (CI/CD) using AWS services, infrastructure as code, and GitHub Actions.
Access Permissions and CORS Configuration
One of the challenges I encountered was configuring proper access permissions for AWS resources. I ran into "Access Denied" errors when interacting with S3 and CloudFront. The solution was to carefully review and adjust IAM role policies to grant the necessary permissions. Additionally, handling Cross-Origin Resource Sharing (CORS) settings for API Gateway and CloudFront required careful configuration to ensure smooth communication between the frontend and backend components.
CI/CD Workflow Setup
Setting up the CI/CD workflow with GitHub Actions initially proved to be a bit tricky. Debugging the workflow YAML files and ensuring proper environment variable setup were key to overcoming this challenge. However, once configured correctly, the automated pipeline provided confidence in code deployments and tests.
Through the Cloud Resume Challenge, I learned the importance of proper planning and documentation. Defining infrastructure as code allowed me to track changes effectively and ensured reproducibility. Regular testing and end-to-end testing with Cypress caught potential issues early, preventing them from reaching production.
While the Cloud Resume Challenge project has reached a functional state, there are several potential areas for future improvements and enhancements:
- Account-Level Throttling: Implement account-level throttling and rate limiting on the API to ensure fair usage and prevent abuse.
- Monitoring and Logging: Implement comprehensive monitoring and logging solutions using AWS CloudWatch and and other tools/services to gain better visibility into application behavior and troubleshoot issues effectively.
- Terraform Migration: Explore migrating the infrastructure code from AWS CDK to Terraform for a different infrastructure-as-code experience and flexibility.
The Cloud Resume Challenge was not just a coding exercise; it was a journey that helped me gain a deeper understanding of cloud technologies, serverless architecture, and CI/CD practices. Building a dynamic resume showcased my skills in a unique way and allowed me to demonstrate real-world development expertise. The challenges I faced taught me valuable lessons in troubleshooting, configuration, and automation. With AWS, AWS CDK, and GitHub Actions as my tools, I successfully completed the challenge and created a cloud-based resume that truly stands out.