Tracing the Global Infrastructure of AWS vs. Popular Cloud Service Providers
There was one more characteristic of AWS that I didn’t mention briefly in the last article AWS Infrastructure and Services – A Developers Point of View. Mainly because I thought it deserves its section. That is the ability to deploy to different Global locations with AWS. This is done as easily as scaling. Just select a few different options that will deploy your applications and AWS takes care of the rest.
Why Deploy Globally?
Why would you want to have your applications deployed in different parts of the world? There two common reasons, these are essential for any serious web application, reducing latency and adding redundancy. If your application is not web application meaning users don’t access remotely via a browser or other protocol then latency is probably not as important, but with users, the latency or time it takes for the request to cover the geographic distance is one of the hardest challenges to overcome. Latency with a web application is essentially the time it takes to get bits from your server to the user browser and vice versa. The biggest contributor is the physical distance between the user and the server. And basically, the only way to reduce latency is to get your application closer to that user. If you are self-hosting you will have next to zero control over that. Well, I guess you could drive around the world installing servers but I am not sure that it is feasible to grow strategy for your business.
The ability to have servers running in different parts of the world closer to your customers is a huge advantage in this industry. AWS has the most data servers in most geographical areas of any other cloud service providers. That means you can solve that latency problem best with AWS.
AWS Regions and Availability Zones
I thought this will be the perfect time to explain how AWS is organized geographically speaking. AWS has many regions throughout the world, as roughly displayed in the below map.
Regions are physical locations where certain services are hosted. These regions increase often and in 2016 alone AWS is announced they will launch five new regions bringing their total regions count to seventeen. Usually having the server instance available in the same country or continent as the user is a sufficient reduction to latency.
AWS Geographic Organization
Within each region, AWS also has availability zones. The availability zone is a collection of data centers that have completely separate power networking and connectivity. But our connected via hyper-fast fiber optics. This allows an availability zone to extremely fault-tolerant. If someone forgets to pay the electric bill at one data center the other provider redundant failover. By scaling your application across several availability zones and regions, you can achieve nearly unlimited uptime for your applications. Although there have been instances in the past for AWS for region connections have gone down, there have not yet such scenarios where multiple regions have gone down simultaneously. It can be a little scary. the thought of an AWS region going down and taking your app with it. So, let us discuss a little more about that.
AWS Service Health Dashboard
After all, this application may be your livelihood. Any loss of connection means customers can’t access or interact with your application. AWS hosted pages showing both current service status across regions as well as status history at Amazon. Looking over it, you will be hard-pressed to find performance issues not to mention a connection issue.
Each AWS outage is a major news event since its impact is popular sites like Netflix and so far in the past there is not been more than once per year, lasting a few hours each. Frankly, that is surprisingly good stability and with the option to easily host your application to multiple regions, I can’t imagine a more trustworthy service to depend on.
How Does AWS Work?
As described before, AWS is a collection of services that interact together to enable an application to run. I thought it will be helpful to explain how these services interact with each other from a high level. Nearly all services interact with each other over typical TCP connections. It depends on the services as to which port it might use, for instance, each type of database you might be using has its port of choice. So, there is no single protocol for all services use. Usually, you are initiating these connections in your application by requesting AWS services. If you create all of your service instances in the same virtual private cloud, then they will have local IP addresses and you could make a super-fast connection to them.
AWS – DEVELOPMENT
When beginning your development with the various services of AWS, it’s not an all or nothing process. Since all the services interact mostly the same on your local development machine as they do it on the cloud, you could add and build on service as you like. For example, a common first step for content management system web application maybe it connects to a database server in AWS. Then you could connect him begin using three for static file storage. You could work with these services the same in your development environment as you would on the cloud. Making the development of deployment experience as painless as possible. The biggest change once you moved your main application to a cloud is securing it. Which isn’t something you can do while your application is being developed locally. Once in the cloud connections and permissions between each service managed via the security groups. Which are essentially light firewalls around each service instance? Controlling access and security is done with the pure configuration, completed with the web console, and is mostly straight forward. Most of the bugs, I have encountered with services interacting an AWS have been from missed configured security groups. There is a lot more will go into the following articles as we cover individual services but this should serve as the basic explanation for how things working in AWS. Since this article is targeting developers, I will glass over some of the great details of the infrastructure. For more detailed explanation AWS for system admins, I will offer another great article to read for Amazon Web Service for system administrators.
Other Cloud Service Providers
Amazon was not the first and only player in cloud computing. Many companies are providing robust solutions for the cloud. It can honestly get a little confusing sometimes trying to understand the difference between them to make informed decisions. In this section, I thought it would be good to talk about some of the more popular competitors in the differences between them and AWS.
Microsoft Azure
First let us talk about the elephant in the room, Microsoft Azure. Both companies residing in the Seattle area only makes the competition between them that much more fears. Azure was started by Microsoft around 2010, as the cloud became a major player in computing. The general model of Azure is kind of the same as AWS. Provider range of computing services with on-demand scalability and flexible pricing. Speaking of pricing, it can be difficult when comparing pricing between the two services, since they don’t offer the same size offerings. It does appear Amazon pricing is more competitive but that really shouldn’t be the main factor when deciding on the computing platform. Especially since the pricing is close enough between the two. So, what are the difference between Azure and AWS? In the past few years, Azure scale up to AWS in terms of cloud service offerings and global reach. Those aren’t many differentiators as they went were. One of the main differentiators is running Microsoft products. Such as windows server and SQL server in the cloud. A recent announcement from Microsoft, removing the option for customers to migrate their license for these services to competitors clouds indicates to me that Microsoft is likely to begin consolidating their products on to Azure. Making the easiest and the cheapest place to run these products. So, if you currently use or need to use Microsoft products in the cloud, Azure is probably the best provider to use. I have known to work in both console fields quite differently. Perhaps it’s just that I am extremely familiar with AWS UI. But I just found Azure interface to fill much more cluttered, as they tried to provide a more unified experience with there all available services. Navigating an AWS console does require more clicks because each service has its dashboard but I prefer that of the Azure approach. This is just a personal preference to try both out and see what you would like.
There is a lot more to compare between Azure and AWS and you can find great material on the internet comparing the two.
2020 Gartner IAAS Magic Quadrant Leaders
In Gartner 2020, Infrastructure as a service magic quadrant report, they added GC. Sometimes it’s called GCP, to the leader section joining AWS and Azure. It’s a big win for Google as they continue to grow their market share. Attempting to take the third-place spot from Alibaba cloud.
Google Cloud Platform
So, let us take a closer look at GCP. Google unveils its first cloud offering app engine in 2008 and released to the public in 2011. Since that time, they have added more services and consolidated them into a single cloud platform offering. Although does seem to be some specialization in big data, AI and Kubernetes. It’s hard to see the real differentiator between AWS and GC. Their data reach and locations seem similar, the market share of AWS does higher Google at this point and I think the GC web console needs some time to mature. As GC growth, it should be interesting to see how they differentiated themselves from AWS and Azure.
Heroku
The last service provider we will look at here is a little different from the others but it should be familiar to many developers. That is the provider Heroku. They originally started as a cloud computing platform for Rubin Rail applications back in 2007, When Rubin was one of the hottest web languages of the day. For many years it was exclusively Rubin before expanding and now just supporting any major web languages. In addition to the languages, it also begins to introduce more and more connected services, like database and enterprise solutions. Its main value proposition is the simplicity to deploy and scale an application. I view stroke myself and I can attest, it’s really easy and quick to get started. There is a sleek command-line tool, that can deploy your app in a couple of commands. I do highly recommend Heroku for new developers getting their feet wet with deploying hobby applications. But with simplicity comes as a tradeoff, luck off options, Heroku focuses on doing one thing well, simple and streamlined application hosting and they succeed over many of their competitors even AWS. Unfortunately, their services don’t offer many of Amazon web services options and their global reach with only a region false far short from AWS.
Final Thoughts – AWS Infrastructure
So, let us review what we learn using this article, it talked more in-depth about the geographic reach of AWS through the globe. It mentioned how AWS services interact and what you can expect from working with them. Finally, it discussed a few Amazon competitors, like Azure, GCP, and Heroku. Hopefully, these helped you identify, AWS is the best solution for the use case.
My next article will focus on the core services of AWS. These are the basic services you are likely to use, no matter your type of web application. There is going to be, a slightly technical introduction and what is going on in the web of services. We will look EC2, Amazon Cloud computing service which is the most commonly used service on AWS. Next, we will see S3, the essential service for storing static files. The most web application requires some sort of database. So, we will look at the relational database service, and finally, we will look at Route53, which is the service for configuring URL routing to your application. With these four core services, I will cover the main things you will need to get started AWS.