# cat /dev/head

a developers log

Migration to AWS Cloud - part 1

What's AWS

IT world currently has a boom on cloud services, moving to the cloud and serverless computing. Quite a number of big companies moved to the cloud or is publicly planning to do so. Governments also move to the public cloud. Why? Because it's cheaper, especially for larger setups/data centers. It is more secure, thanks to number of certifications and audits that cloud provider has to pass. Companies also don't have to maintain their own large data centers with lots of servers, cables, power supplies and air cooling.

Amazon Web Services or AWS is world's biggest cloud provider and a leader in this sector for many consequent years. AWS provides a wide variety of compute and storage services with pay-as-you-go pricing model. AWS also has more security certifications and passed audits than any other cloud provider which makes safe place to develop ones infrastructure.

Why should I move?

I recently started working for a company that currently develops it's skills towards cloud solutions (not only AWS, but also Google Cloud/Kubernetes and Azure). I was given a change to learn and take AWS certification exam - the AWS Certified Developer Associate - with a passing score. This is one of the easiest AWS exams to pass, but it gives some starting knowledge to move in their cloud environment. At work I'm surrounded by people working in many different cloud based projects. I also have my own cloud project there. This gives me the opportunity to quickly learn the AWS cloud and a lot of it's services. And I find this to be fun thing to do.

I want to develop my skills in this direction. This is exactly why I decided to move my current infrastructure from dedicated server from Kimsufi to AWS cloud. This will be opportunity to gain more experience and also rethink my current setup, since I was already thinking about major cleanup in virtual servers that most of the time do nothing and I use only small piece of all the services I've put there during last two years.

My current setup

Hardware

So what is my current setup? I own Kimsufi dedicated server with following specs:

  • Intel i5 processor with 4 cores and 4 concurrent threads,
  • 16GB of RAM,
  • 2TB of disk storage,
  • one IPv4 and one IPv6 public address,

This setup is for ~€23 (including tax). It's not much for a quite nice server. Only downside of it is just one public IPv4 address.

Software

Server is divided into 6 virtual machines using Xen. One virtual machine acts as mail server, Taskwarrior server and host for Slack bot, that I've created a while ago. There is also virtual machine to run PostgreSQL server for other services that I run. One machine servers me as a web server for services like Roundcube web mail or OwnCloud server (but I don't use them very often). I also have a Gitlab virtual machine, which hosts all my private git repositories and two virtual machines for Gitlab Runners. There's also Bind9 DNS server, which is quite valuable for me.

The plan

So my plan is to reduce number of services that I run to a bare minimum. I definitely want to keep my mail server, Taskwarrior server and Slack bots. Gitlab with all the runners can be moved to gitlab.com, as it offers private repos and a lot of runners to do the CI/CD stuff. I haven't really used OwnCloud for a while now, so I can definitely take it down. If needed AWS provides Simple Storage Service (the famous S3) to keep my files there. S3 can also be used to host my static sites (this blog for example).

I think, that I will currently need one EC2 instance to run mail server, a bunch of S3 buckets to keep some files and static sites. Taskwarrior server is not needed currently on the Internet even, so I'll use my home NAS server for that, as well as for Slack bots, as they don't use much of resources. AWS Route53 will replace my current DNS server. I will also create a bastion host and nginx server to host Roundcube web mail site. However bastion host and Roundcube don't have to be up all the time, thus I'll try to bring them up on demand using AWS Gateway API and AWS Lambda service (this is the one that is core of the serverless revolution right now)

So this is the plan, stay tuned to see how it will all come in production...