Preparing for a Cloud Engineering Role
Published: 2024-02-28 00:35:05

Hi! My name is Eve and I have been in self-study, deep into preparations, for a Cloud Engineering role. Previously, I worked as an Information Security Officer and helped maintain a company's cybersecurity program for compliance with NY state regulations. In November of 2023, I left and soon jumped into studies. 

**Starting with AWS certifications.** My background included experience programming and building web applications so the Developer exam was a suitable starting point for me. I then followed it up with the SysOps exam to become more knowledgeable of system operations. At the end of the whirlwind of studying and exam prep, I got the certifications and equally important, I got a lot of hands-on experience through the AWS console and a broad, comprehensive knowledge of dev and operations in the cloud. The certification study took about a month each. This phase for back to back certifications was very challenging but I got it! 

**My first project** focused on a server-based architecture.
![Architecture-Server-based-in-AWS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r2n51vom507b2nqfzjje.png)

For network security, I configured a non-default VPC with public and private subnets. I have an internet-facing Application Load Balancer (ALB) with an Auto-Scaling Group (ASG) to launch the EC2 into the private subnets. For the availability and resiliency of the system, I configured the ALB to be in two availability zones with an ASG of a minimum capacity of two units. A NAT gateway is added to each AZ for the redundancy to support failover. 

Next, I implemented my first CI/CD pipeline! I pushed a Node.js express server application to a CodeCommit repository and continued on to create a pipeline to orchestrate the deployment process. To break down the problem, I first implemented the CI/CD to CodeDeploy to a single EC2 virtual server running a Node.js environment. That helped me better understand the implementation before bringing in the ASG. 

For the EC2s, I created an AMI image with a user data script that installs the CodeDeploy agent and setups a NodeJS environment for the ec2-user. I used SSM Parameter Store for storing the custom AMI ID parameter as input into the CloudFormation template.  

**The Highlights.** There were many moments of little successes along the way, starting from doing the hands-on with AWS services that confirmed this is the right path for me. Passing the certifications was a boost to my confidence. The process of creating and updating my first infrastructure stack successfully in CloudFormation was very encouraging to keep me going. Getting the entire CICD pipeline working was very cool. 

**The Cloud Resume Challenge**. My next project was the [Cloud Resume Challenge](https://cloudresumechallenge.dev/docs/the-challenge/aws/) with a serverless architecture.

![Architecture-SCRC](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bp5gewd6t6vos5xzrh2s.png)

First, I manually created the entire application, up to the CloudFront Distribution URL. After figuring out how it works together, I started defining the resources in a CloudFormation template. 

I referred to the Boto3 API and the DynamoDB API to code the lambda function to increment visit count. 

Next, I incorporated the RESTful API to invoke the lambda function. In tackling the CORS challenge, I found the API Gateway documentation for proxy integration very helpful. I tested the API methods with cURL commands from AWS CloudShell to verify the API responses were correct. I added a CloudWatch Alarm on the API Gateway 4xxError metric to notify me by email when client-side error rates crosses a threshold.

I created an S3 bucket, its CloudFront Distribution, and an OAC to host and deliver the resume site content. I made the S3 bucket private and created a bucket policy for access only by the distribution. 

I set aside the projects after the first iteration of the implementation. I took some time to review and think about what I’ve learned. I continued to explore and came across GPS’s posts and [LearnToCloud](https://learntocloud.guide/). I then filled some knowledge gaps with exercises in Bash shell scripting, Python and pipenv, and GitHub. I applied some of these learnings back into the above projects. Lastly, I created the an SSL/TLS certificate with ACM, added a Route53 hosted zone with an alias record to the CloudFront Distribution, and updated the name servers with my DNS registrar. 

My resume site: https://resume.evefonwu.com

**Thank you** Forrest Brazeal, Gwyneth Peña-Siguenza (GPS), Stephane Maarek, Neil Anderson, and many more for sharing knowledge and encouragement through guides, writings, and courses to help others like me along this path.