Domain One of The AWS Solution Architect Associate exam guide SAA-C03 requires us to be able to Design a multi-tier architecture solution so that is our topic for this section.
We cover the need to know aspects of how to design Multi-Tier solutions using AWS services.
Want more? Try a lab playground or do a Lab Challenge!
- Learn some of the essential services for creating multi-tier architect on AWS, including the Simple Queue Service (SQS) and the Simple Notification Service (SNS)
- Understand data streaming and how Amazon Kinesis can be used to stream data
- Learn how to design a multi-tier solution on AWS, and the important aspects to take into consideration when doing so
- Learn how to design cost-optimized AWS architectures
- Understand how to leverage AWS services to migrate applications and databases to the AWS Cloud
Hello, my name is Will Meadows and I would like to welcome you to this survey of the serverless services.
Today we're going to go over all the different serverless categories and services that are available within AWS. Initially serverless was a very small domain that only offered Lambda as the sole option for someone getting into the serverless category. However, At this point in time, there are over 12 different serverless services for you to choose, each providing a unique benefit and solving a specific problem.
That's why I think it's important for someone just getting in the domain to take a survey of all of these options to get a real understanding of what it is that they want to learn about. This lecture will spend just a few minutes on each of the 12 different services to help you drive forward your learning and education. And for each service where we have a course, I will link to that lecture so that way you can continue your education on anything that you deem fit.
So grab a coffee, sit back and relax, and let's take a look at all the different serverless options that AWS has available.
To get us started there are currently three different categories of serverless services. These categories include: serverless compute services, serverless application integration services, and serverless database services.
I think we should start off by looking at something you're probably the most familiar with, which is the serverless compute services.
Compute is probably one of the most important things that any application will have to deal with. It is the way that the actual work gets performed.
Traditionally this job was completed by fleets of servers all running specific applications or code to complete their jobs. These jobs might range from running websites, big data analytics, or even dealing with long-running applications like video game servers.
In this category of serverless compute there are currently two different services that can complete these jobs in varying ways. Each of the options have some positives and negatives that lend themselves to some use cases over others. Let's start off with AWS Lambda and take a look at where it might shine.
Lambda was released in 2014 as the first serverless service. It offered the ability to run code, without needing to manage a server, for up to 5 minutes at a time.
This new paradigm of compute, the idea of functions as a service Is what really pushed forward the category of serverless as a whole.
Lambda is an event-driven service. This means that it needs some kind of action, or event, to trigger the code you wish to run. In many situations, the event or action is just a change of state. This change of state could be something as simple as when an image is placed into an S3 bucket.
These days Lambda has increased its execution time to up to 15 minutes, and has greatly increased its range of functionality from its 2014 introduction.
If you are just starting your journey into this space, getting a deeper understanding of lambda will really help your learning and understanding of every other serverless offering.
We have a course that covers AWS Lambda in-depth over here if you want to learn more: https://cloudacademy.com/course/understanding-aws-lambda-to-run-scale-code/introduction/
This service allows you to run serverless containers on Amazon ECS (the elastic container service). If you are currently running a container-based application, and would like to convert to a serverless format, this is the perfect solution for you!
One of the coolest aspects about Fargate is that it allows you to get over the 15 minutes execution hurdle that plagues AWS lambda. You are allowed to run your Fargate tasks (containers) for an unlimited amount of time. The serverless component of AWS Fargate is in regard to where those containers actually live.
If you would like to learn more about ECS, Fargate, and Microservices - we have a course that covers all of that right here: https://cloudacademy.com/course/introduction-microservices-containers-ecs-1828/introduction-to-microservices-containers-and-ecs/
Application integration services are a part of the interstitial glue that helps weave everything together. They allow you to connect to and send data to other applications and AWS services. There are a number of these types of offering available nowadays, and they all fill a slightly different niche.
Amazon has a serverless event-based service called Amazon Eventbridge that functions as a serverless event bus. Think of an event bus as a kind of event coordinator. It allows you to intake information from both external SAAS providers, AWS services (over 90 different ones are supported), and even your own custom applications. With these input events, Amazon Eventbridge can filter, manage, and direct them to other systems that listen for them, and are able to take action based on their content. It does this filtering process with routing rules, which give you full control over your event bus.
If you would like to learn more about this service, please check out this course over here: https://cloudacademy.com/course/connecting-application-data-using-amazon-eventbridge-1301/introduction/
AWS Step Functions can best be described as a serverless state machine service. For those who don't know what a state machine is, think of your standard vending machine.
A vending machine sits there waiting for a customer to come up to it and input money (that's its idle state). Once money has been added into the machine, it movies onto the next state, which would be item selection. The user inputs their choice, and the machine moves into the final state of vending the product. After the workflow has been completed it returns back to the idle state, waiting for another customer.
AWS Step Functions allow you to create serverless workflows just like the vending machine, where you can have your system wait for inputs, make decisions, and process information based on the input variables.
If you would like to know more about AWS Step Functions please check out this course: https://cloudacademy.com/course/aws-step-functions-1117/introduction/
Amazon SQS (the simple queue service) is a messaging queue system. It can help you decouple your applications by providing a system for sending, storing, and receiving messages between multiple software components. SQS is a managed service that offers two types of queues: FIFO and Standard (which is a best-effort ordering queue, with at least once delivery).
Amazon SQS is a fantastically useful service that works splendidly in most serverless applications but can also find a home in many standard architectures.
For more on SQS please check out this course here: https://cloudacademy.com/course/using-sqs-sns-ses/introduction-simple-queue-service/
This service is a Pub-Sub notification service that provides both application-to-application or application-to-person communication. This communication works well for high-throughput applications as well as many-to-many messaging between distributed systems. SNS can also act as an event-driven hub similar to Amazon Eventbridge - It's just more bare bones.
For more info on Amazon SNS take a look over here: https://cloudacademy.com/course/using-sqs-sns-ses/introduction-simple-notification-service/
AWS has created a fully managed service called Amazon API Gateway which helps deal with: building, publishing, monitoring, securing, and maintaining API within AWS. It works quite well at any scale, and is able to support serverless, generic web applications, and even containerized workloads on the back end.
You can build your APIs for public use, for private use, or even for third-party developers. The best part about it is that it is entirely serverless, and does not require you to manage any infrastructure and you pay just for what you use.
The service is also able to handle accepting and processing hundreds of thousands of concurrent requests. If things start to get out of hand, API Gateway is able to monitor all traffic and can throttle requests as desired.
Please check out this introductory course on API gateway if you are interested in learning more: https://cloudacademy.com/course/introduction-amazon-api-gateway-2140/introduction-to-api-gateway/
AWS app sync allows you to manage and synchronize data across multiple mobile devices and users. The service also allows users to modify data while offline, and having those changes be automatically synced when the device reconnects to the internet.
This functionality allows you to build real-time, multi-user collaborative tools and applications that work between browsers, mobile applications, and even Amazon Alexa skills.
AWS AppSync uses GraphQL to enable clients to fetch, change, and subscribe to data from databases, microservices, and APIs all from a single GraphQL endpoint.
Setting up and managing databases is a huge challenge for many organizations. Having to deal with scalability and right-sizing can take a lot of knowledge, time, and money to get set up just right. Having data storage be serverless can greatly increase your productivity as well as reduce a lot of headaches. There are a number of fantastic data storage services available serverlessly these days, so let's take a moment to look at each of them.
Amazon s3 is an object-based serverless storage system that is able to handle a nearly unlimited amount of data. S3 provides great scalability, availability, and speedy performance for many different use cases. Amazon S3 is able to support files as small as zero bytes, and tops out at five terabytes.
Objects stored in S3 have a durability of 11 nines (99.999999999%) and so, the likelihood of losing data is extremely rare.
S3 has native integrations with AWS lambda, allowing you to create event-based workflows with ease. Additionally, s3 provides some of the cheapest data storage available through the use of the S3 Glacier storage class.
Please take a look over here at this course if you wish to learn more about Amazon S3: https://cloudacademy.com/course/aws-storage-fundamentals-2016/introduction-32/
DynamoDB is a fully managed serverless, NoSQL database that has been built to run high-performance applications at any scale. The service can operate at single-digit millisecond latency which is very valuable for time-sensitive applications that require the fastest response times. DynamoDB is a key-value store database that has no strict design schema that it needs to conform to.
DynamoDB is designed to be highly available. Your data is automatically replicated across three different availability zones within a geographic region. In the case of an outage or an incident affecting an entire hosting facility, DynamoDB transparently routes around the affected availability zone.
For more information about DynamoDB please take a look at this course: https://cloudacademy.com/course/working-with-amazon-dynamodb/introduction-31/
Amazon RDS Proxy is a fully managed, serverless, highly available database proxy for Amazon RDS. The proxy allows you to build serverless applications that are more scalable than your standard direct to RDS implementations.
If you are opening many new connections to your RDS databases through lambda functions or other serverless methods - you might have issues when large surges of connections are required.
RDS Proxy allows you to pool and share already established database connections, reducing the latency of your applications when establishing a new connection. Additionally RDS Proxy helps the availability of your serverless application by denying access to unserviceable connections that may degrade your database's performance.
Aurora serverless is a fully on-demand SQL database configuration for Amazon Aurora. It automatically starts up, shuts down, and scales its capacity based on the application's needs. It operates on a pay-per-second basis while the database is active, and can be used through a simple database endpoint. If you ever need to switch over to standard workload and leave the realm of serverless, you can do so with the click of a button.
Aurora is built to be highly available, fault-tolerant, and self-healing as it replicates your data 6 ways across multiple availability zones.
If you would like to learn more about Aurora serverless please take a look at this course over here: https://cloudacademy.com/course/amazon-aurora-high-availability/aurora-serverless/
AWS has developed and positioned a well-thought-out series of serverless services that can help almost any application. These days there's pretty much an in-place stand-in for every piece of normally servered component, that can be run serverlessly.
I would highly recommend looking at the coursework for any of the services covered today that interested you. Each course dives directly into the service and can really help explain where it fits in an architecture and what problems it can help you solve.
Hopefully, you've enjoyed this survey of all the service services and categories within AWS. My goal was to give you just a little taste of each facet of serverless so that way you could explore and find what you want to learn about.
My name is Will Meadows and I'd like to thank you for spending your time here learning about Serverless. If you have any feedback, positive or negative, please contact us at firstname.lastname@example.org, your feedback is greatly appreciated, thank you!
Andrew is fanatical about helping business teams gain the maximum ROI possible from adopting, using, and optimizing Public Cloud Services. Having built 70+ Cloud Academy courses, Andrew has helped over 50,000 students master cloud computing by sharing the skills and experiences he gained during 20+ years leading digital teams in code and consulting. Before joining Cloud Academy, Andrew worked for AWS and for AWS technology partners Ooyala and Adobe.