Designing and building robust, scalable, and efficient systems is a fundamental requirement in software engineering. The AWS Well-Architected Framework is an essential resource that can significantly aid this process. Although it originates from Amazon Web Services, the principles and best practices it outlines are universally applicable. This blog aims to provide an understanding of the AWS Well-Architected Framework, its core focus areas, and its value to software engineering practices, regardless of whether you use AWS services.
Category Archives: AWS
Setting up your own VPN server for personal use on AWS
I have used (still use) a commercial VPN service (for those few occasions I am outside and need some extra security). But I have always wanted to standup my own VPN server to have a bit more confidence that my activity logs are not being watched (worse sold or hacked) by a 3rd party VPN provider. Punted this for a long time, but found the perfect opportunity to do that today while waiting for some car repairs at an auto service center.
AWS Beanstalk (running Spring Boot jar) and Log aggregation with ElasticSearch & Filebeat
Most serious applications (and distributed microservices style architectures) will require to provide a log aggregation & analysis feature to its dev & operations teams. Reviewing log entires from 10s or 100s of server instances is not something to take lightly. Whether you choose to use a commercial product or an open source offering – that does not matter; just make sure you have one available.
Recently I have been deploying applications using AWS Beanstalk. You can definitely configure CloudWatch Logs to send log streams over to AWS ElasticSearch service. Log messages can be routed to a Lambda function which would break the log messages into individual attributes suitable for indexing. I wanted to try a slightly different route where I depend less on CloudWatch Logs and more on open source tools. Enter filebeat on Beanstalk.
Serverless Architecture Style
To discuss Serverless Architecture we need to understand how we got here. From using physical machines we moved to virtual machines (somewhere in between a few brave folks also used linux/solaris containers). The current trend is container technologies such as Docker or CoreOS RKT which allow even more efficient use of resources. Regardless of which you use, we are often required to plan our application infrastructure needs upfront and permanently keep the “servers” running.