/ IT

The Good, The Bad and The Cloud

I've recently migrated all my personal projects to AWS and thought I could explain my process so that others could benefit from it! I'll explain the projects, how they used to be hosted, how I transitioned them to AWS and my future using AWS technologies.

Not only did I learn a lot in this process, but I was able to save around $10 a month! A little bird told me that Lockheed operates at a scale slightly higher than my own. They should be able to save a bit more money.

I plan on having this being the first in a 4-part series of posts of how I migrated everything to AWS. Each of the projects will have their own post detailing how the migration was made.

Part 1 - The Good, The Bad and The Cloud
Part 2 - How I learned to stop provisioning and love the Serverless
Part 3 - Bucketful of websites
Part 4 - The Lord of the instances
Part 5 - Planning for the future

The Projects

Blog

I had a small blog using the Ghost platform based on NodeJS. Since it was a dynamic blog and required a DB, it required at least 1GB of RAM and 1 CPU. At the time of the migration, this was my most resource-heavy project and still is.

https://blog.willkara.com

PyumIpsum

A Python based, Keyword-aware Lorem Ipsum generator. You could pass it any keyword and it would return a randomly generated, human-readable sentence about that topic.

I.E: If you pass it "pizza", it could return something like "The pizza Italy came from cheese with crust". Doesn't make sense at all, but readable by humans.

While the ite live and functionality, there's a bit more cleaning up I want to do before making it public.

Static Websites

I have a few static (HTML, CSS, JS) websites that host some my projects. As they only required serving up the static content, it was very low intensity and ran on the same server as my blog.

Shameless Plug: One of my projects that allows you to explore publicly available data about New York City won 3rd place for "Best Overall Quality" in the inaugural Open Data Contest with NYC!

The Past

All of my old projects used to be hosted on $5 & $10 Digital Ocean droplets. I had one that hosted my blog and static web-sites and one that hosted a python project of mine. While I wanted them to perform well, they didn't have a huge audience and I was able to choose the lowest tiered DO droplets. The helped keep my costs to a minimum, but I still had to pay $15 a month.

I also had my DNS requests going through CloudFlare for high-performance DNS resolution and to use their CDN. My thinking was that some of the load could be taken off my origin-servers but serving the content from their CDN.

This solution worked fine, but I wanted to see how I could improve them while saving money and learning something new. Remember, not all improvements need to cost money!

The Current

After a few months of tinkering with my projects, I wanted to try and elevate them to the next level. I wanted to learn, to improve and to make them ready for my big break (note, I'm still waiting for it...). After looking at AWS, I realized it was my best option for mainly 3 reasons.

  • Cost: Due to AWS’s scale, they were able to provide the same functionality for a much lower price.
  • Available Services: AWS has such a huge range of services, that I could easily transition my current projects into their environment, with a huge amount of room for future ideas
  • Scale: While my projects currently don’t have to worry about thousands of people accessing it at once, I wanted to plan for that possibility. AWS allowed me to easily setup different systems to automatically scale the projects.

It took a few weeks, but I was finally able to move my whole project base to AWS using the following services:

  • Route 53 – Used for DNS resolution and domain-name registration.
  • Cloudfront – Used as a static-content CDN and paired with Lambda to optimize latency.
  • EC2 – Used as the compute backend for my blog.
  • API Gateway – Used as a sort of ‘switchboard’ to connect API requests to their respective end-point.
  • AWS Lambda – Used as the serverless solution for my PyumIpsum project. I no longer have a dedicated server!
  • DynamoDB – Used to storage some key-value data for several of my projects. Due to my low requirements, I’m able to stay in the free-tier!
  • S3 – Used to hold data-sets for my projects and to host all my static websites.

The Future

Over the next few weeks, I’ll create 4 more blog posts detailing the migration process for each project. Not only will I talk about the benefits, I’ll talk about the mistakes I made so you can learn from them also!

The Good, The Bad and The Cloud
Share this

Subscribe to Wills Thoughts