
What is AWS?
As developers, the time for deployment will come and the question of which service do I use for deployment will pop up. There are a variety of services, here are a couple of the most popular services…
- Microsoft Azure
- Amazon Web Services
- Google Cloud Platform
- IBM Cloud
- Alibaba Cloud
- Oracle
- GitHub
- Heroku
If you are a beginner, chances are you are utilizing services such as Heroku and GitHub Pages. Both of which are great for small projects, but as your project becomes more complex, the more you will need from your service.
What are the problems we need to solve?

Some of the challenges as developers we will face as our projects becomes more complex are: Security, Complexity, Performance, and Cost. If we were to build and maintain our own server, we would have to constantly be updating to be certain our server is safe from outside attacks, security is basically staying ahead and keeping your system updated. This of course cost time and money.
As our project grows, the need for performance increases. Let’s say you deploy an app for a concert where 100,000 will be in attendance. Chances are you will need to upgrade your server. Once again this can get very costly. I think you see where building, maintaining, and scaling your own server is simply not worth the time and money.
What service should I use?
As far as services, there is one that stands out among the rest. That service is known as Amazon Web Services or AWS for short. AWS will handle all your needs when it comes to deploying your app for production. AWS is the clear leader with over 50% of the market! Microsoft Azure takes second with 17%, followed by IBM Cloud in third at 11%.

What does AWS do for me?
AWS is a collection of different services that work seamlessly with each other in the cloud. Below is a list of some of the services Amazon has to offer.

AWS is able to take your app, and essentially do what is needed to make it work.
Scalability
“Scalability is the capability of a system, network, or process to handle a growing amount of work, or its potential to be enlarged to accommodate that growth.”
When we talk about scalability, we can break scalability into two categories: Vertical and Horizontal. If we wanted to vertically scale our server, we would be talking about adding more memory, storage, CPU, GPU, etc. Essentially we are making better computer for our project to work on. The reason you would need to vertically scale is if your app is too big to run on that machine. Now if we wanted to horizontally scale our server, we would be booting up more virtual machines, which are called instances on AWS, and cloning those instances so you can divide the load up on multiple instances. The reason you would do this is for increased network traffic. Let’s say your app is popular and the CPU is running at 85% because of the traffic, we can fire up an exact instance and split the work. Of course this bring up more problems, but Amazon has us covered.
Whether you are vertically or horizontal scaling, you will come into the problem of how do I do this? With vertically scaling, you can fire up another instance with a different configuration, and then point traffic to the new instance, then stop the old instance. When you are horizontally scaling, you will need a load balancer. Amazon provides their Elastic Load Balancer which will route your traffic evenly between your instances.
During the day, you have different load balances and require more instances at only one point during the day. With Amazon Auto Scaling, AWS automatically scales the app so you don’t have to. During times of low traffic, Amazon will stop your instances that are not used, and during times of high demand, AWS will fire up more instances to meet demand. below is a graphic on how Amazon will automatically scale your app.

Durability
“Ability for transactions to be committed and survive permanently”
How can you be certain that your data is safe? You can be 99.999999999% certain that amazon will always have your data intact. To put that into perspective, if you had 10,000 objects, you could be certain that only one will be lost every 10,000,000 years. It is also referred to 11 9’s of durability. How does Amazon do this? They store your data on multiple servers, at multiple locations, with separate power and water supplies. The infrastructure can be broken down into two categories: Regions and Availability Zones. The following graphic shows the regions with a number that refers to the availability zones that region has. Each region has a minimum of 3 locations connected by extremely high data transfer cables that connect all locations.

Reliability
Reliability can be defined as the probability that a system will produce correct outputs up to some given time t.
What is the point of having the most durable service if it goes out all the time. AWS is reliable 99.99% of the time, if you configure your services to span multiple regions, you could possibly achieve 100% reliability, but AWS is the most reliable meaning it averages approximately 2hrs of downtime each year. The longest downtime was in Northern Virginia on Feb 28th, 2017, where due to human error, AWS was down for 4hrs 14min. Even though this particular region was down, if your company had your app spanned through multiple regions, your company only experienced a slightly slower experience, with no down time. Only if your app was in the Northern Virginia region did you experience the downtime.
Conclusion
As developers, we only want to code and not sorry about building and maintaining servers. It’s very costly, and without having the cyber security knowledge, could potentially leave your app to security risks. Amazon Web Services is a great service that allows you to deploy in a cost effective way. Many great companies such as Netflix, AirBnb, and Capital One because of the cost efficiency, reliability, durability and scalability.






