What is Amazon Web Services : Code Bytes
Amazon Web Services (AWS) is a collection of cloud services provided by Amazon to give businesses the tools they need to grow. AWS provides these services on-demand, available in seconds, with pay-as-you-go pricing.
Technology and computing is an increasingly large part of everyday life for most businesses. Whether it’s hosting a website, having an app or even building and running some custom software, our use of computing has become integral to our working life.
With this increasing use of tech comes the consequences: an increased need for servers, databases and the people to run and maintain them. This can become very expensive and you often end up with a sub-optimal solution due to cost, time or personnel limitations.
How Amazon Web Services Helps
AWS provides a solution to these problems by allowing you to rent their servers and use tools that they’ve built. They have server warehouses in 15 locations across the world and 103 services that you can use.
Cost
Cost can be a huge limitation for lots of companies when looking to use servers, with servers often costing £40,000 and costing another £9,000 a year to maintain.
AWS works on the basis of you pay for what you use. That means that there’s no massive upfront cost and if you stop using it you stop paying for it. This means that you can try out a new server or technology without having to invest tens of thousands of pounds.
Maintenance and Security
If you have an on-site server, or even have a hosted server, then you need to consider the maintenance, redundancy and security costs. If you don’t already have anyone who knows how to work with the system you may end up needing to hire a systems engineer, averaging £60,000 a year!
You also need to make sure that all of your data is secure, physically and digitally. These are costs that businesses often don’t consider and can prove expensive, such as the recent WannaCry spread.
If you use AWS then you don’t have to worry about any of this. All of their sites have been designed with security, redundancy and maintenance in mind. The cost of the staff, maintenance and upgrades is all accounted for in the price of the services.
Storage
Storage is becoming an increasingly large component in a lot of businesses. Whether it’s historical records, user data, analytics or media, we all have more data and need to store it all safely and securely.
AWS has a few services that cover all aspects of data storage and access. Amazon Glacier can be used for archive storage, Amazon S3 for general instant access storage and Amazon EBS for dedicated block storage for your EC2’s.
You really don’t want to loose your data either and configuring redundancy into your own systems can be difficult and expensive. With AWS storage solutions, setting up redundancy protection can be configured with the flicking of a switch if it isn’t automatically applied, such as with S3 and EBS.
Compute
Computation is the most common and powerful part of AWS in my opinion. These services allow you to effectively utilise all of the other services to provide functionality to your company and customers.
The two main computing services are Amazon EC2 and AWS Lambda.
Amazon EC2 is the more traditional compute service where you can rent time using a selection of servers. These can vary from tiny, single core machines to clusters of multi socket beasts. You can also rent constantly for something like a web hosting server, or rent for just a few hours to run a mathematical model. This gives you massive flexibility and means you only pay for what you need.
AWS Lambda is a very different service. These run more like remote functions that you can execute. They can be as simple or as large as you need and start up when they are triggered and shut down when they’re finished. They can be triggered by almost anything from
Databases
Almost every company needs to use databases to store a huge range of information and they are vital for the daily running of those companies. Amazon has a range of services that you can use to store relational and non-relational data.
Amazon provides RDS which allows remote hosting of your relational databases, whether SQL, Oracle or most other relational database systems. If you want to use non-relational databases then Amazon provides an inbuilt service called DynamoDB which you can work easily with, through the AWS SDK. Unfortunately MongoDB isn’t supported in the same way that SQL or Oracle are, so you’ll need to spin up an EC2 to host your MongoDB databases.
For shorter term storage there is also Amazon ElastiCache. This service allows you to use Redis or Memcached to store data in memory, providing even faster, volatile memory.
Management Tools
There are a lot of services and systems available through AWS but this means there needs to be a strong set of tools to manage it all. Luckily that is exactly what there is.
Amazon CloudWatch is the service that you can use to monitor every other service in AWS. It can collect logs, events and metrics from any other service, providing you with detailed insights into all of your products. This is extremely useful for bug hunting as all the data is in one place. You can also trigger alerts or automated actions in real time based on the logs.
When building services it is always a good idea to limit the abilities of each part to what it needs to do, reducing the chance that one part breaks another. To control the permissions of each of your products AWS has the Identity and Access Management (AWS IAM). You can create a role for a Lambda that gives it access to read from S3 and full access to DynamoDB but no other permissions. You can also create users with certain permissions. This is important if you have to provide access keys for product that exist outside of the AWS ecosystem.
AWS Elastic Beanstalk is a service for deploying and scaling web apps and services that you’ve developed. It provisions and operates the infrastructure and manages the application stack for you, so you don’t have to spend the time or develop the expertise.
Summary
We’ve only just scratched the surface of the AWS services and there are loads of other services to empower your company. One of the main advantages of AWS is how easily the services work together, enabling fast prototyping and stable production.
If you’ve enjoyed this then make sure to mash that clap button and follow me as I’ll be doing more of a deep dive into a lot of the AWS services.