- We'll look at the serverless landscape available on AWS.
Serverless applications use manage services,
there's no need to provision servers,
manage server hardware, or administer servers.
AWS has serverless components that support
a full range of core capabilities needed to develop
your sophisticated serverless applications.
These components include compute, storage,
data stores, API proxies,
application integration and orchestration,
analytics, and even developer tools.
Let's dig into the possibilities.
Storage is a logical first step
in serverless application building.
Amazon's simple storage service, S3, is the most well known.
It's a secure, durable, and seemingly
infinitely scalable object store.
It supports multiple tiers of durability,
and you can trade off durability
and retrieval time against storage costs.
This tiering can be fully automated
with sophisticated, yet easy to configure rules.
There are currently seven categories
of fully managed databases.
Relational, key-value, in-memory, document,
graph, time series, and ledger.
We'll do a deep dive of each of these in a future video.
For now, we'll give an overview.
Relational databases include Amazon RDS,
fully managed relational databases including MySQL,
PostgreSQL, MariaDB, Oracle, and SQL Server.
These are managed versions of the releases
that you might've previously installed
and managed on your in house hardware.
Amazon Aurora takes it one step further.
It provides a relational database fully compatible
with MySQL or PostgreSQL,
that is automatically scalable, distributed by default,
and faster than their open source peers.
Amazon Aurora Serverless takes this one step further
by making the database fully on demand,
starting up, shutting down, and scaling
based on application needs.
This is ideal for infrequently used applications.
Finally, Amazon Redshift can provide
a fully serverless data warehouse solution.
Amazon DynamoDB is a key value store
with single digit, millisecond response time,
ideal for high-traffic web applications,
E-commerce, and gaming.
Its speed and ease of use make it useful
as a simple cache for certain applications.
In-memory databases are typically used
for session management and caching.
AWS ElastiCache is a fully managed clustered solution
compatible with either Redis or Memcached,
the two most widely used opensource in-memory databases.
Amazon Document DB is a recently announced
document database, compatible at the API level with MongoDB.
Amazon Neptune is a graph database that can be used
with either a property graph model supporting Gremlin,
and ideal for classic applications like fraud detection
and recommendation engines,
or as a semantic triple store that supports SPARQL 1.1
and can be used to build knowledge graphs.
Another recent announcement is Amazon Time Stream,
a time series database,
ideal for IOT applications and telemetry.
It can handle trillions, with a T,
trillions of events per day.
Finally, Amazon Quantum Ledger DB,
provides an immutable and verifiable transaction log
without the need to manage a block chain network.
Building an application requires much more
than object storage and database technology.
The logic of your application requires compute resources.
Historically, this required you to manage servers.
Serverless compute removes the servers from the equation
and lets you concentrate on the logic.
AWS Lambda is the basic building block
for serverless compute.
The code runs on demand and can be triggered by events,
such as a user action, or periodically as needed.
AWS Lambda logic can be programmed
in virtually any language.
It natively supports Python, Java, NodeJS,
Go, Ruby, PowerShell, and C#.
There's a Runtime API which allows you
to use other languages.
If AWS Lambda limitations,
such as the 15 minute execution time limit,
or memory constraints are an issue with your architecture,
AWS Fargate offers a fully managed infrastructure
for container based applications,
again, without any need to provision servers.
API management is supported by Amazon API Gateway,
allowing front end systems
to easily call serverless compute assets.
Serverless compute implies a different,
more functional approach to application architectures.
Most commonly, functionality is developed as microservices.
Communication among these microservices
requires various approaches to application integration
and orchestration.
Where decoupling is needed between microservices,
often to support fall tolerance and scaling,
message passing and queuing are needed.
Amazon SQS is a fully managed and scalable queuing system
that includes general and FIFO queues
to pass information from one service to another.
Where a published subscribe paradigm is more appropriate,
Amazon's Simple Notification service, ANS, is available.
Where coordination among Lambda based services
and functions is called for, AWS provides step functions
to orchestrate sophisticated interactions
by defining state machine style functions.
Analytics for streaming data is provided by Amazon Kinesis.
We'll touch on this later in the course.
And finally, AWS has a number of tools available
to help developers in the development process.
There are IDEs, continuous integration and deployment tools,
SDKs, and monitoring and logging tools.
For this course however, we'll mainly look
at the AWS serverless application model
and the AWS serverless application repository
to look at how that can facilitate your serverless journey.