Skip to content

MichaelRoddy/eq-cloud-resume-challenge

 
 

Repository files navigation

Cloud Resume Challenge

Overview

This is my online AWS hosted cloud resume as part of the Cloud Resume Challenge . I used this as a learning project when I joined Skyscanner as a Software Engineer after completing the Code First Girls Full Stack Degree to develop my understanding of AWS services, Infrastructure as Code and CI/CD.

This version of the repo is a copy of my internal Skyscanner repo, so various CICD files and lines of config have been removed for this public repo.

The site can be viewed here and, when connected to the Skyscanner VPN, there is a live visitor counter. Screenshots of the web page are below:

Cloud Resume Website Screenshot Cloud Resume Website Screenshot Cloud Resume Website Screenshot

I chose to do a slightly altered version of the 'original' Cloud Resume Challenge in order to familiarise myself with Skyscanner tools and Skyscanner AWS accounts. As such, I replaced the suggested AWS SAM with CloudFormation and GitHub Actions with Drone and Slingshot (internal tool) for CI/CD.

The project was created in a Sandbox AWS account. I firstly worked through the steps of the project using the AWS console to familiarise myself with the different services, before then carrying out each step again but using Infrastructure as Code rather than clicking around the Console.

The overall architecture of my site is as follows:

Diagram of AWS Services

Details about technologies used

  • HTML/CSS Web Page: the web page was written with simple HTML & CSS.
  • Amazon S3 Static Website: the website was deployed to an Amazon S3 bucket and deployed as a static website
  • Amazon CloudFront for HTTPS: the S3 bucket was configured with an Amazon CloudFront Distribution both for high performance delivery of content using edgepoints but also for HTTPS for security.
  • Amazon Route53 for DNS domain name: a DNS domain name - eqcloudresume.skyscannerlabs.net - was set up via Amazon Route53 and this points to the CloudFront distribution. I used a Hosted Zone already set up in the Skyscanner Sandbox account, so just added a new record to this Hosted Zone.
  • Live Visitor Counter using JavaScript with Amazon API Gateway, Lambda and DynamoDB: simple JavaScript code embedded in the HTML file allows the web page to make a call to the API Gateway that triggers a Lambda Function which reads, increments and returns a DynamoDB table value with the number of website visitors. The Lambda function was written using the Python Boto3 library for AWS.
  • Resource Deployment using IaC via CloudFormation: a CloudFormation template was written and deployed to create a Stack with the required resources: S3 Bucket, S3 Bucket Policy Route53 Record, CloudFront Distribution, & DynamoDB.
  • Lambda Function & API Gateway deployed using m-shell cut and Slingshot: as per standard approach at Skyscanner, the Lambda function and API Gateway were deployed using a microservices tool called mshell-cut which helped create a lot of the boiler plate requirements for safe and secure deployment.
  • GitHub, Drone & Slingshot for CI/CD: a standard internal deployment pipeline was used for source control and deployment. Changes to GitHub initiates a Drone build which then triggers internal Skyscanner tool, Slingshot, to deploy those changes in AWS.

  • Summary

    Ultimately, this project was incredibly insightful for getting to grips with the basics of cloud & AWS, Infrastructure as Code and safe and secure CI/CD pipelines. For those who are new to this area of work and learn by 'doing', I would really recommend this as a project to get you up to speed with the foundational knowledge required for your role.

    About

    No description, website, or topics provided.

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages

    • HTML 69.5%
    • CSS 19.0%
    • Python 11.5%