So right now I’m attempting to deploy to ec2. I’m doing it through elastic beanstalk because the less I have to think, the more I can move on with my life. However, if I’m going to document how things work, it this is how I can best explain it
- There are about 4 different objects
- Instance – CPU, Memory, Runtime Environment
- Volume – Basically a file system
- VPC – Provides a public IP and Binds Private IP Addresses to Instances
- Auto Scale Group – Will Scale based upon CPU usage
- With Each Instance
- You can choose an operating system
- You can choose size of the default volume
- You can choose what VPC it should belong to
- Can save these configurations as an “AMI” for later use
- VPC
- Can add security groups to it
- You can choose protocols that are allowed
- You can choose what ports will be open
- You can choose what IP addresses are allowed
- Can add security groups to it
- Auto Scale Group
- Can provide an AMI that it will replicate
- Can Hide an AutoScale Group behind an VPC
- Will load Balance between all the instances
Now an Elastic Beanstalk instance is a culmination of these aspects only it allows you to simply push as if you were using git and seperate the instances as you please. The Problem for me here is simple: Despite they allow you to choose nodejs as the ‘language’ they don’t install git, probably not python and probably not a full package. Basically at that point it would seem like a better idea to just create the AMI’s yourself and create deploy scripts instead of using the elastic beanstalk framework.
Additionally, there starts becoming other issues such as starting up Instances that you need the private ip address of or you want to ensure the outside world has no access to it. I understand these are tools that they grabbed from the open source world and organizaed them in such a way to make it an easy setup. However, tools exist for a purpose, and if you are making your own purposes more difficult, there exists an inherent problem
Now the title is what this article is really about. Amazon basically explains some of its services in big paragraphs. Causing me to have to break free for a second and actually read. I then have to dissect what I just read in an organized manner and then create my own personal examples. The Configuration scripts is something that is hanging me up because I believe I’m doing everything correct, however git is not getting installed. From there I look up issues amoungst other things and I still have no idea what the hell is wrong. This leads me to feel like I have to start working with the AMI/Autoscaling situation because I at least can force an AMI to have and do what I want while Elastic Beanstalk isn’t the best wrapper I’ve ever seen.
I’m not saying elastic beanstalk is bad, I just believe it can be better. Similar to javascript, we are given XMLHttpRequest, which is pretty ugly. Add a wrapper that expects a url and a callback and all of a sudden a common use case is easy to use. However, Amazon has the opportunity to make its setup cleaner and easier to use. Elastic Beanstalk is the right direction but I’m left wondering how much time they’ve spent ensuring common use cases were handled properly. Maybe its just me complaining, because for sure right now, I am alone, complaining.