An Overview of the Most Commonly Used AWS Services
With the basics of cloud computing a lot clearer, the next step is to understand the extensive services available to you via the cloud. At present, Amazon Web Services (AWS) holds over 33% of the cloud computing market share, more than the next three competitors combined, so we have decided to center this article around the services available to AWS users. AWS provides many of these services in the form of instances, or virtual servers that are configured according to your specifications. The instance type refers to the hardware configuration of the host computer on which your virtual server, or instance, is run. It defines the specific parameters of the service you purchase, including but not limited to computing power, memory, and storage space. This can initially seem quite intimidating, with AWS providing a variety of services that span a broad array of topics. So, to simplify this learning curve, let’s look at just a few of the most widely used services offered by AWS.
AWS provides a line of services under their Analytics branch of cloud products that allow companies to handle data movement, storage, leaks, and large-scale analysis, all through the cloud. One such service is Amazon Elasticsearch, which helps companies easily manage and scale Elasticsearch clusters at affordable prices. As one of the world’s leading analytics search engines for multiple types of data, Elasticsearch is employed by many companies for quick access to a comprehensive database. Individual Elasticsearch instances are referred to as nodes, and multiple nodes with similar attributes can be deployed together as clusters to increase the capacity of the data search. By utilizing the extensive AWS coverage network, instances of Amazon Elasticsearch can allow data to be transferred and accessed across multiple regions or availability zones with minimal setup. They can also be easily scaled up or down within the AWS interface and have added security for optimal data protection. Amazon Elasticsearch Services can be useful for companies looking to analyze or sort through large chunks of data for searches, such as a third-party flight booking company allowing their users to search for flights across multiple airlines, or data monitoring, like a gambling website trying to sort through server logs to determine the reason they were experiencing frequent crashes.
AWS Compute Services is another branch of their cloud products that allows users to virtually meet all their computation needs, from storage and networking to web-based app development, machine learning, and more.
Amazon Elastic Cloud Compute, or EC2, is their most popular compute service and provides the most flexibility for customers to meet their specified workload. As an example of IaaS, EC2 instances are a reliable and comparatively cheap alternative to physical hardware. EC2 users have the option of creating instances of seven different types, with each type having various subtypes (e.g. Mac for developers looking to develop on macOS, P4 for high performance workloads, and High Memory for large in-memory databases) to cater to distinct usage requirements. The four most used EC2 instance types are:
- General Purpose instances have resources balanced across computation, networking, and storage requirements. Companies that are looking to determine their specific usage needs, like startups, or have flexible and balanced workloads, like code repositories, benefit the most from these instances.
- Compute Optimized instances have resources focused more on computation, with higher performing processors to help meet more intensive workloads. These instances can be useful for hosting multiplayer gaming servers, high intensity machine learning, etc.
- Memory Optimized instances have a high ratio of memory to computing power, with each instance having eight GB of RAM (short-term memory where computers store data) for every CPU core (processors that determine the rate and number of tasks a computer can complete). This is desirable for companies looking to process large datasets, like Apache Spark or Elasticsearch.
- Storage Optimized instances also have a high ratio of memory to computing power and are optimized for storing large amounts of data internally within the instance itself. This can be useful for companies with distributed databases, or data that is spread across many physical locations, like Apache Ignite or Amazon SimpleDB (a flexible distributed database that allows for querying and indexing data).
AWS Lamda is another compute service that aims to save time and resources over EC2 instances by reducing management and setup requirements at the cost of flexibility. Where EC2 instances fall under IaaS, Lamda is an example of serverless computing and thus does not require virtual servers to run. Instead, code written in a supported language can just be uploaded to the Lamda interface and will run instantly, which can be useful for companies lacking the resources for a dedicated cloud management team. The service automatically scales up and down according to your usage needs and is a great tool for inconsistent workloads or workloads that need processing done in real-time, like web applications that deal with online file conversions.
Containers are software packages that bundle together all the necessary elements to run code in any environment. As such, containers allow for highly portable code that won’t suffer from downtime due to unsupported coding environments. AWS Containers provide a means of running various containers through Amazon’s interface, allowing for the same security, reliability, and scalability of their other services.
Amazon Elastic Container Service (ECS) is the simplest and most widely used AWS solution for operating a large scale of containers. ECS supports Docker containers and allows users to run containerized applications through the AWS interface. As a managed service, ECS allows its users to deploy and build containers without worrying about security and scalability. ECS is useful for companies with containerized applications that are looking to migrate to the cloud, or for companies looking to deploy multiple containers at once.
Amazon Elastic Kubernetes Service (EKS) is another AWS container service; however, EKS allows users to manage containerized applications using Kubernetes (a platform for automating the management and scaling of computer applications) on the AWS interface. As such, users would have access to all of the EKS features through AWS, thus providing their applications with more flexibility than those integrated in ECS.
AWS Fargate is another popular container service and is like Lamda in that it too falls under the category of serverless computing. However, while Lamda is a way of running code without provisioning the required infrastructure, Fargate allows users to run containers already integrated in ECS or EKS. Fargate containers are scaled automatically, which reduces the need for resource management. They are always running once setup, meaning they can be accessed instantly with no warm up period, and are thus good for consistent and predictable workloads. Since Fargate relies on Docker containers to run applications, it is also useful for applications already integrated within the docker platform.
AWS Databases allow users to store large volumes of sensitive data securely. The services cover database management, allowing companies to focus their resources on development instead. They are also highly scalable, allowing for flexible databases that can be grown together with the supported application. AWS provides various Database services to meet your unique needs, and some of the most common services are as follows:
- Amazon DynamoDB is a database that allows users to map keys to attributes and values to allow easy access to records. It’s a document database that is available across multiple regions, and the service is managed fully with included security and backup options. DynamoDB is ideal for applications requiring large workloads that don’t require complex computation or structured databases.
- Amazon ElastiCache allows users to store in-memory cache, allowing for quicker and more seamless retrieval of information than disk-based database structures. ElastiCache services are fully managed and the libraries they provide are compatible with most engines without requiring any additional setup. Data stored in ElastiCache is readily available with low latency and is useful for storing and retrieving data that requires quick access, like sending and receiving messages and photos on an instant messaging app or streaming videos on an online streaming service.
- Amazon Relational Database Service (RDS) is not a database in of itself. Instead, it is a service that aims to simplify the process of customizing and deploying a relational database in the cloud. It is a fully managed service and requires even less consumer-end setup as database deployment and administration is all automated. As a fully automated service, RDS can benefit developers who don’t have cloud or database management expertise, and due to its high scalability, it is useful for companies with flexible and dynamic data requirements, like web based applications.
- Amazon Redshift is a data warehouse provided to customers as a service. As a warehouse, it is suited to handle complex analysis and querying of data and can be customized for performance or storage optimization. Redshift is ideal for workloads that require large scale analytical querying of data.
Machine Learning Services
Machine Learning is quickly becoming one of the most prominent computing fields, with the modern world leaning heavily towards automation. As Waymo releases self-driving cars and Tesla announces its first humanoid robot, it seems like the futuristic dreams of the past are becoming increasingly based in reality. AWS Machine Learning aims to provide all users with access to machine learning services, whether they are small-time developers or experts in the field.
They have various services that focus on different aspects of machine learning, with Amazon SageMaker focusing on helping developers create and train machine learning models quickly. While SageMaker does indeed help develop these models, it also allows developers to deploy these models on supported systems and devices. As such, SageMaker can be used for a variety of machine learning based tasks, like training and implementing speech recognition in an application, or building a comprehensive chess AI.
While there are many more AWS services and subtypes for each of these services, this post should help you get a sense of what they are used for and how they are different from one another. You can reference the table below for a quick summary of the different services covered in this post. Let us know if you want us to take a deeper dive into any of the concepts covered in this post! Stay tuned for the next post in our series which will talk about payment models for these various services, which is often a source of confusion for those managing cloud resources.
If you’re already using AWS services and have been struggling to figure out which services you should use or which model of purchasing you should use, get in touch with our team or try out our platform for free.