I spend a few days answering questions about Cloud Computing on Quora. This question caught my interest. I decided to write about this since it can benefit a lot of people. Since AWS has got a lot of tools, I decided to cover them in parts. This is part one of the series. Here is part two, part three.
If you are interested in making apps on cloud , do checkout my book Cloud Is a Piece of Cake on Amazon.
In part one of the series. I will cover the compute section of AWS. If you have any doubts or find terms difficult to understand, please comment here. I can improve the story and this can benefit a lot of people.
If your service needs to be accessible to customers on the internet, you will need to host it on a computer or a server. Earlier we used to buy or rent these servers. If your service gets less traffic than expected, then you will have huge losses. If the traffic spikes you have a time consuming process to scale it up.
You don’t have to worry about these issues with EC2. Here you can start with a instance of your need, and configure it to scale up according to the traffic.
AWS allows you to choose the OS (Linux) of your choice for your instance. You get complete ownership of the instance/computer. You can install the softwares of your choice in it.
You can also use these instance to perform heavy process. People use AWS P2 Instances to run deep learning algorithms. Since they have got High-performance NVIDIA K80 GPUs.
In Ec2 you get a computing instance with an Operating System. Linux Operating Systems comes with a lot of tools. Some of them are not necessary for your application. This also consumes resources.
Hence we made containers. Containers can be build to only have the necessary libraries or tools to make your service work. Hence, this is lightweight and efficient.
AWS EC2 Container Service allows you to host your container on the cloud. They also provide tools to scale it.
AWS Lightsail is a simplified version of AWS Ec2. AWS EC2 can be complicated for beginners. Because you will need to configure SSD Storage, DNS Management, Static IP etc . You have also got to pay additional charges for bandwidth.
In Lightsail these come as a pre-configured package. Also the charges are fixed. There are pre-configured images for wordpress, LAMP, MEAN etc. Hence, it’s easy for deployment.
In EC2 , there are a lot of steps before you deploy your app on cloud. You will need to choose the configuration, set up autoscaling, security groups etc.
Using AWS Elastic Beanstalk developers only have to upload the code(Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker). The other procedures are automated. AWS will choose the EC2 Instance, Setup Load Balancing, Auto Scaling, etc.
In EC2, we have a server running all the time. This can be inefficient for some use cases.
Consider this, you have setup a EC2 server which is configured to resize an image whenever it is uploaded. What if there is only one image upload a day? You are still paying for the running hours of EC2 instance. Pretty inefficient rite?
AWS Lambda is build for these type of use cases. Here you go server less by configuring a trigger in lambda. In our example the trigger is image upload. You can write a function in AWS Lambda to process the uploaded image. So you only pay when your computing resources are used.
AWS Batch is used to run batch processing jobs efficiently. Consider genome sequencing. There are lot of procedures which needs to be performed step by step. Each step is dependent on the previous data. Each step may have different computing requirements.
AWS Batch automatically take cares of provisioning the computing requirements and does the heavy lifting. So you can focus more on solving the problem and worry less about running it efficiently.
In order to calculate prices you can use this tool.
You can also join my mailing list Cloud Computing Stories. I will use this to notify you if I write new stories or books on Cloud Computing.