Bernd Kuhlens portfolio
I am not allowed to speak about my professional projects for obvious reasons but to give you a quick impression of my AWS knowledge I am allowed to speak about this page you are reading and going to do this now.
The goal of the page is to present myself and my portfolio. The page is fully run on AWS and I wanted to keep it cheap, so I do not make use of CloudFront (Content Delivery Network) loadbalancers, managed databases (RDS) or elastic file systems (with integrated backup). I would have used (and have in different projects) these tools if keeping costs low wasn’t the main focus.
The page is run on one server in an autoscaling group which is defined with one server always running (min=max=desired=1). So if for any reason the server is stopped or terminated it will be redeployed. This process takes some minutes so this page might face outages of some minutes per day.
Moreover to safe on costs I made use of spot instances which can be terminated by AWS anytime, that’s another reason for this page being offline sometimes for short times.
As I am not a big wordpress expert and to save on costs again, I do NOT make use of AWS’ fully managed databases services (RDS) which would be highly recommended for professional sites but have a small Bitmani instance which is available from AWS market place. This means that I get a preconfigured wordpress preinstalled server with the database included.
To make this site secure it is run via https by means of Amazon Certificate Manager (ACM) which offers free of costs TLS certificates.
My domain berndkuhlen.de is also run on AWS (route53) and renewed once per year. The server has a fixed IP adress (elastic ip) so I do not have to update my DNS after the instance is restarted but I just have to reattach my elastic ip. This can be done easily by the AWS event bridge and lambda.
To make sure a new ec2 instance (maybe because AWS terminated the spot instance) get the elastic ip and can serve my page i use a lambda function which is triggered on the event that a ec2 machine reaches the running state. I am going to explain my lambda in detail here.
To make sure the database keeps running on my ec2 machine, i use monit to check the daemon is running.
To safe my work ( I am not using elastic file systems or other tools ) I make images of my instance (AMI) after updating it and using it in my autoscaling group (or in my launch template to be more precise), so all my data is EBS backed and AMI based.
The goal was to run a very cheap wordpress site without redundancy and loadbalancing.