Intro to AWS - The Most Important Services To Learn

Be A Better Dev
6 Jun 202250:07

Summary

TLDRThis video script serves as a comprehensive guide to navigating the vast array of AWS services. It breaks down complex AWS concepts by examining a standard three-tier application architecture, detailing services for DNS, load balancing, compute options, databases, user pools, API management, and more. The script also delves into deployment and monitoring tools, emphasizing the importance of security and the use of services like CloudWatch and CloudTrail. It highlights the serverless model, event coordination, and the role of Amazon S3 in object storage, concluding with a mention of Amazon VPC for network isolation, providing a solid foundation for anyone new to AWS.

Takeaways

  • 🌐 Understanding AWS can be challenging due to its vast number of services, but learning them is crucial for navigating the cloud computing landscape.
  • 🏗️ The video outlines a standard three-tier application architecture, including web backend, application, and database layers, along with additional components like deployment orchestration and monitoring.
  • 🔄 AWS services like Amazon Route 53 for DNS, Elastic Load Balancers, and various compute options (EC2, Lambda, ECS, EKS) are essential components of the web backend and application layers.
  • 🚀 Serverless computing with AWS Lambda allows for code deployment without managing infrastructure, scaling automatically based on the request load.
  • 🗃️ Data storage and caching are handled by services like Amazon RDS, DynamoDB, and Elastic Cache, catering to both relational and NoSQL database needs.
  • 🔧 AWS provides tools for deployment automation and continuous integration/continuous deployment (CI/CD) with services like CodeCommit, CodeBuild, CodeDeploy, and CodePipeline.
  • 👀 Monitoring the health and performance of AWS services is vital and can be achieved through Amazon CloudWatch and CloudTrail.
  • 🛡️ Security and access management in AWS are managed through Identity and Access Management (IAM), ensuring that only authorized users can interact with AWS resources.
  • 📊 Analytical processing and data warehousing are supported by services like Amazon EMR, Athena, and Redshift, allowing for big data processing and complex queries.
  • 📊 Amazon QuickSight is a dashboarding tool that enables users to create business-facing dashboards for data exploration and visualization.
  • 🏢 Amazon VPC (Virtual Private Cloud) provides a private networking space for resources, enhancing security by isolating them from other systems and the public internet.

Q & A

  • What is the primary purpose of Amazon Route 53?

    -Amazon Route 53 is primarily used for managing DNS configurations, including defining where internet traffic is routed from. It also supports health checks on endpoints and traffic shaping.

  • What are the two types of load balancers provided by AWS?

    -AWS provides two types of load balancers: Application Load Balancer, which operates at the L7 layer and is suitable for routing traffic based on HTTP headers, and Network Load Balancer, which operates at the L4 level and is more cost-effective with higher throughput limits.

  • How does AWS Lambda differ from Amazon EC2?

    -AWS Lambda is a serverless compute service where you define functions (snippets of code) and AWS manages the infrastructure. In contrast, Amazon EC2 involves renting virtual machines, giving you more control but also requiring more setup and configuration.

  • What additional functionality does API Gateway offer besides traffic distribution?

    -API Gateway offers features like API throttling, authorization, model validation, and integration with user pools for authentication, providing a more sophisticated level of control over APIs.

  • Amazon Cognito is used for creating user pools, allowing users to sign up for accounts directly within Cognito using a hosted UI, or integrating with third-party identity providers like Google, Facebook, and Amazon for user authentication.

    -Amazon Cognito facilitates user registration and authentication by creating user pools. It allows users to sign up directly or integrates with third-party identity providers.

  • What are the two main types of caching services provided by AWS?

    -AWS provides two caching services: ElastiCache, which can be based on either Memcached or Redis, and Amazon CloudFront, which is a content delivery network service for caching content close to end users to improve performance.

  • How does Amazon Aurora differ from Amazon RDS?

    -Amazon Aurora is a managed database service built by AWS that is compatible with MySQL and PostgreSQL, offering features like auto-scaling and a serverless compute model. Amazon RDS, on the other hand, supports a wider range of database engines like MySQL, PostgreSQL, Microsoft SQL Server, Oracle, and Cassandra, but with less hands-off features compared to Aurora.

  • What is the role of AWS Elastic Beanstalk in application deployment?

    -AWS Elastic Beanstalk is a service that simplifies the deployment and management of web applications, including load balancing, auto-scaling, and monitoring. It orchestrates the deployment of various components but allows for control through a single interface.

  • How does AWS CodePipeline help in the deployment process?

    -AWS CodePipeline is a deployment orchestration service that defines a workflow for the stages an application will go through, from source code to production deployment. It integrates with other AWS services to build a sophisticated CI/CD pipeline.

  • What are the key monitoring services provided by AWS?

    -The key monitoring services provided by AWS are Amazon CloudWatch, which monitors the state of applications and AWS resources, and AWS CloudTrail, which provides an audit trail of operations performed on the infrastructure.

Outlines

00:00

🌐 Navigating AWS Services for Application Architecture

This paragraph introduces the complexity of AWS services and provides an overview of how to approach learning them. It emphasizes the vast number of services and the challenge in identifying the right tools for specific tasks. The video aims to help viewers understand AWS by examining a standard three-tier application architecture, which includes a web backend layer, an application layer, and a database layer. It also mentions additional components like deployment orchestration, monitoring, load balancing, and event coordination, setting the stage for a detailed exploration of AWS services in the subsequent paragraphs.

05:01

🔍 Exploring Compute Options and AWS Services

This paragraph delves into the various compute options available on AWS, such as Amazon EC2 for virtual machine rentals, AWS Lambda for serverless computing, and Amazon ECS for container management. It also introduces Amazon EKS, a service for managing Kubernetes clusters. The discussion highlights the flexibility of EC2, the hands-off nature of Lambda, and the middle ground offered by ECS and EKS. The paragraph further explains the use of Amazon API Gateway for creating and hosting REST APIs, emphasizing its additional features like throttling and authorization.

10:03

🗄️ Database and Caching Services in AWS

This paragraph focuses on the database and caching services provided by AWS. It starts with Amazon ElastiCache, a caching service that can be based on Memcached or Redis. The discussion then moves to relational databases, highlighting Amazon Aurora and Amazon RDS, which supports various database engines. For NoSQL databases, the paragraph covers Amazon DynamoDB and Amazon DocumentDB, a MongoDB-compatible service. It also touches on AWS OpenSearch, a powerful service for flexible querying at scale, and its integration with other AWS services.

15:03

🛠️ Packaged Infrastructure and Developer Tools

This paragraph discusses AWS services that simplify the development process by offering packaged infrastructure. It introduces Elastic Beanstalk, a service that automates the deployment of web applications, and AWS App Runner, a serverless service that abstracts away lower-level components. Amazon Lightsail is also mentioned as a simplified, beginner-friendly service for deploying various application stacks. The paragraph also highlights AWS AppSync for GraphQL users and Amazon CloudFront for caching and improving performance by distributing content globally.

20:04

🔧 Deployment Pipeline and Monitoring Services

This paragraph covers the AWS services involved in setting up a deployment pipeline. It starts with AWS CodeCommit for source code storage, AWS CodeBuild for creating artifacts and running tests, and AWS CodeDeploy for deploying the artifacts to compute infrastructure. AWS CodePipeline is introduced as an orchestration service that defines and automates the steps in the deployment process. The paragraph then shifts to monitoring, emphasizing the importance of Amazon CloudWatch for monitoring metrics and logs, and AWS CloudTrail for tracking operations and maintaining an audit trail. It also mentions AWS Identity and Access Management (IAM) as a crucial service for securing AWS resources.

25:04

🚀 Rapid Development and Infrastructure as Code

This paragraph discusses tools and services that accelerate development and infrastructure management. It introduces AWS CloudFormation, a service that allows infrastructure provisioning through JSON or YAML templates. The AWS CDK (Cloud Development Kit) is highlighted as a more developer-friendly alternative that lets you define infrastructure using code. The paragraph also mentions AWS Amplify, a CLI tool focused on rapid application development with less emphasis on underlying infrastructure. Finally, the Serverless Application Model (SAM) is introduced as a way to simplify common infrastructure setups and enable local testing of Lambda functions.

30:05

📢 Event Coordination and Pub/Sub Messaging

This paragraph explores AWS services for event coordination and pub/sub messaging. It begins with Amazon SNS (Simple Notification Service), a pub/sub service for publishing notifications to multiple subscribers. The paragraph then discusses Amazon SQS (Simple Queue Service), a message queue service for processing messages asynchronously. It also covers AWS EventBridge, a service that integrates with various AWS and third-party applications for event-driven architecture. The paragraph highlights the benefits of EventBridge, such as schema discovery and third-party integrations, which are not natively offered by SNS.

35:06

🔄 Workflow Automation and Object Storage

This paragraph focuses on AWS Step Functions, a service that allows the creation of complex workflows with multiple steps and conditional logic. It integrates with other AWS services and is serverless in nature. The discussion then moves to Amazon S3 (Simple Storage Service), a widely used object storage service for storing and serving large amounts of data. The paragraph also touches on the use of S3 for caching content through Amazon CloudFront and the potential for storing event data for further analysis. Finally, it mentions the importance of Amazon VPC (Virtual Private Cloud) for isolating resources within a private networking space.

40:06

📊 Analytical Processing and Data Warehousing

This paragraph discusses AWS services for analytical processing and data warehousing. It starts with Amazon EMR, a distributed data processing system supporting frameworks like Spark, Hive, and Presto. The paragraph then introduces Amazon Athena, a serverless big data processing service that queries data directly from S3 using SQL. For data warehousing, Amazon Redshift is highlighted as a columnar database suitable for large-scale OLAP queries, with both provisioned and serverless modes available. The paragraph also mentions the integration of Redshift with S3 for data loading and the use of QuickSight for creating business-facing dashboards for end-users.

Mindmap

Keywords

💡AWS Services

AWS (Amazon Web Services) is a comprehensive cloud computing platform provided by Amazon that offers a wide range of services such as computing power, database storage, content delivery, and other functionalities to help businesses scale and grow. In the video, various AWS services are discussed in the context of a standard three-tier application architecture, highlighting how each service can be utilized to build and manage different components of an application in the cloud.

💡Three-Tier Application Architecture

A three-tier application architecture is a software architecture where the different aspects of an application are organized into three distinct layers: the presentation layer (web frontend), the business logic layer (application layer), and the data storage layer (database layer). This separation of concerns allows for better scalability, maintainability, and security. In the video, the presenter uses this architecture to explain how AWS services can be mapped to each layer to support the application's needs.

💡Serverless Computing

Serverless computing is a cloud computing execution model in which the cloud provider dynamically manages the allocation and provisioning of servers. With serverless, developers can build and run applications without having to manage server infrastructure. In the context of the video, AWS Lambda is highlighted as a serverless compute service that allows users to run code without provisioning or managing servers, and the service automatically scales with the number of requests.

💡Amazon EC2

Amazon EC2, or Elastic Compute Cloud, is a web service that provides resizable compute capacity in the cloud. It allows users to launch and manage virtual servers in the AWS cloud. EC2 instances can be used for a variety of applications, from hosting websites to running complex applications. In the video, EC2 is presented as a flexible compute option where users rent virtual machines and can set them up to perform any task they require.

💡Amazon RDS

Amazon RDS, or Relational Database Service, is a managed database service provided by AWS. It supports multiple database engines such as MySQL, PostgreSQL, Oracle, and SQL Server. RDS makes it easier to set up, operate, and scale a relational database in the cloud, handling time-consuming database administration tasks such as hardware provisioning, database setup, patching, and backups. In the video, RDS is mentioned as a service for setting up and managing relational databases in a three-tier application architecture.

💡Amazon S3

Amazon S3, or Simple Storage Service, is an object storage service provided by AWS that offers industry-leading scalability, data availability, security, and performance. It allows users to store and retrieve any amount of data from anywhere on the web. S3 is designed to make web-scale computing easier for developers and IT professionals. In the video, S3 is discussed as a service for storing and serving static content like images, JavaScript, and CSS files, and also for storing data for analytical processing.

💡Elastic Load Balancing

Elastic Load Balancing is a service provided by AWS that automatically distributes incoming application traffic across multiple targets, such as Amazon EC2 instances. It enables users to achieve even traffic distribution, improve application availability, and effectively handle traffic spikes by balancing the load. In the video, the service is explained as a critical component in a three-tier application architecture that helps distribute traffic and ensure high availability of applications.

💡Amazon DynamoDB

Amazon DynamoDB is a managed NoSQL database service provided by AWS that offers fast and predictable performance with seamless scalability. It is a fully managed, key-value and document database that provides single-digit millisecond latency at any scale. In the video, DynamoDB is presented as a popular NoSQL database option on AWS, optimized for key-value lookups and capable of handling large workloads with its serverless and auto-scaling features.

💡Amazon CloudFront

Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency and high transfer speeds. It is built on AWS's globally distributed network of edge locations. In the video, CloudFront is mentioned as a service to deploy distributions that replicate content to regional nodes worldwide, thereby improving the performance of serving cached content to end-users.

💡Amazon VPC

Amazon VPC, or Virtual Private Cloud, is a service that allows users to launch AWS resources into a virtual network that they define. VPCs enable the creation of an isolated section of the AWS Cloud where users can launch AWS resources in a logically-isolated virtual network. In the video, VPC is discussed as a way to create a secure and isolated network boundary for resources, allowing for the definition of network settings, and the ability to connect to the public internet or other networks securely.

💡Amazon Athena

Amazon Athena is an interactive query service that makes it easy to analyze data in Amazon S3 using standard SQL. It is a serverless and highly scalable service that requires no database administration or setup. In the video, Athena is presented as a big data processing service that allows users to perform analytics on data stored in S3 without having to move data into a different database, making it a cost-effective and convenient option for large-scale data analysis.

Highlights

Learning AWS can be intimidating due to its hundreds of services.

This video aims to help navigate the complex world of AWS services.

A standard three-tier application architecture is discussed for understanding AWS services.

Amazon Route 53 is the AWS service for DNS configuration.

Elastic Load Balancer service is categorized into Application Load Balancer and Network Load Balancer.

Amazon EC2 provides virtual machines with flexible usage options.

AWS Lambda is a serverless compute infrastructure option.

Amazon ECS and EKS manage containers and offer a balance between EC2 and Lambda.

API Gateway offers additional features like API throttling and authorization.

Amazon Cognito facilitates user pool creation and authentication.

Elastic Cache provides caching services with Memcache and Redis options.

Amazon Aurora and RDS are popular relational database services on AWS.

DynamoDB is a powerful NoSQL database optimized for key-value lookups.

AWS offers packaged infrastructure services like Elastic Beanstalk, App Runner, and Lightsail.

AWS AppSync is a fully managed GraphQL as a service.

Amazon CloudFront is used for caching and delivering content close to end-users for better performance.

Deployment and monitoring services like AWS Code services and Amazon CloudWatch are crucial for application management.

AWS Identity and Access Management (IAM) is essential for security and access control.

Infrastructure as Code (IaC) is preferred for managing AWS resources, with services like AWS CloudFormation and CDK.

AWS Amplify focuses on rapid application development with a toolkit approach.

Serverless Application Model (SAM) provides shorthands for common infrastructure setups.

Amazon SNS and SQS are used for event coordination and pub/sub messaging.

Amazon EventBridge offers event-driven capabilities with third-party integrations.

AWS Step Functions is an orchestration service for defining complex workflows.

Amazon S3 is a scalable and affordable object storage service.

Amazon EMR is a large-scale distributed data processing system.

Amazon Athena is a serverless big data processing service that queries data stored in S3 with SQL.

Amazon Redshift is a columnar data warehouse service for large-scale queries and business intelligence.

AWS QuickSight is used for creating business-facing dashboards for end-users.

Amazon VPC allows for the creation of isolated networking spaces for AWS resources.

Transcripts

00:00

learning aws can be pretty intimidating

00:03

there's hundreds of services and it can

00:04

be difficult to understand which one is

00:06

the right tool for what you're trying to

00:08

accomplish this video is going to help

00:10

you navigate the complex world of aws

00:13

services we're going to approach this by

00:15

examining a standard three-tier

00:17

application architecture like you can

00:19

see here so let's take a look at this

00:21

architecture now before peeling back the

00:23

layers and revealing the aws services

00:26

behind the scenes so what do we have

00:28

here in this application architecture we

00:30

have a pretty standard three-tier

00:32

architecture here with a web backend

00:34

layer we have our application layer here

00:36

which is kind of if you're in an

00:38

organization with a service-oriented

00:40

architecture this will be pretty

00:41

familiar this is where all your backend

00:43

services will be and then you have your

00:45

third tier here which is your database

00:47

layer this includes uh can be relational

00:49

could be a nosql database you can also

00:51

have some caching in there as well and

00:53

then we have a bunch of other components

00:55

related to this so we have deployment

00:57

orchestration to hold on to our source

00:59

code and then facilitate deployment we

01:01

also have a monitoring component here

01:02

for monitoring the state of the system

01:04

uh we have a load balancer here with a

01:07

dns pointing to that load balancer to

01:08

distribute traffic and then we have some

01:10

other toolkits here on the right for

01:12

event coordination say for instance um

01:15

this application did some kind of

01:16

something like google where you have

01:18

search query submission and like every

01:20

time that gets saved to a database you

01:21

want to trigger some kind of event in

01:23

this layer over here we have storage for

01:26

that event we have some analytical

01:27

processing a data warehouse and finally

01:30

some dashboarding for end users to

01:32

examine that content we also have some

01:34

toolkits for rapid development to deploy

01:37

a little bit faster as well and over

01:39

here finally on the left hand side these

01:42

two elements so for user pools to define

01:44

different users that are going to be

01:45

interacting with your application and

01:47

then of course to serve cache content so

01:49

this is our pretty standard application

01:51

here let's take a look now at some of

01:53

the aws services behind the scenes that

01:56

replace each of these different elements

01:58

so the first one is for dns so what is

02:00

the service that we want to use for dns

02:03

and aws

02:04

so for aws that's going to be amazon

02:06

route 53 and row 53 is the service where

02:09

you define all your dns configuration

02:12

including you know where you're going to

02:13

route traffic to from the internet also

02:15

supports other things like you know

02:17

health checks on your endpoints and any

02:19

traffic shaping that you want to do

02:22

that's going to all be done in your

02:23

rel53 service so it's great to be

02:26

familiar with rel53 you're probably

02:28

going to be using it all the time if you

02:29

were defining kind of externally facing

02:31

apis or endpoints

02:33

now from there your dns will typically

02:35

point to an endpoint for a load balancer

02:38

so for aws there's a couple options for

02:41

load balancers but the kind of top level

02:44

category here

02:45

is something called the elastic load

02:47

balancer service and there's two

02:48

variations for elastic load balancer

02:51

there's what's called the application

02:53

load balancer which operates at the l7

02:56

layer and that's more applicable for

02:57

those you that want to use content from

03:00

your http headers to route your traffic

03:02

and for those of you that are looking

03:04

for something a little bit more lower

03:05

level aws also offers a network load

03:08

balancer which operates at the l4 level

03:11

which is a little bit

03:12

more cost effective and supports higher

03:15

throughput limits as well so that's an

03:17

elastic load balancer and some of the

03:18

different options that you may want to

03:20

use now in terms of your web backend

03:22

layer over here this is going to be the

03:23

first kind of

03:25

time that a request from the front end

03:27

touches the back end now with compute

03:30

there's a couple different options that

03:31

you can decide to leverage and those

03:33

compute options it doesn't really matter

03:35

if it's your web backend layer or your

03:37

application layer the compute options

03:39

that you select for either of these two

03:40

things will be the same so what are the

03:43

options that are available to us so the

03:45

first option is amazon ec2 ec2 stands

03:48

for elastic compute cloud very very old

03:51

service and the basic gist of this

03:53

service is that you rent

03:55

virtual machines that you pay for by the

03:57

hour and they're really convenient

04:00

because with ec2 machines you can set

04:02

them up to do whatever you please you

04:04

can use them to host

04:05

back-end databases if you want you can

04:08

host a wordpress blog on it you can

04:10

create and deploy your application for a

04:12

rest api so it's a really flexible

04:15

service that allows you to do whatever

04:17

you want but some of the drawbacks with

04:18

ec2 can include just the all the setup

04:21

and configuration that you're going to

04:22

have to go through to use it so some

04:24

folks shy away from ec2 in favor of

04:26

something a little bit more hands-off

04:28

and for those of you that are interested

04:29

in serverless that's where our next

04:31

point comes in and that's aws lambda so

04:34

aws lambda is a serverless compute

04:38

infrastructure option and what that

04:40

basically means is that you define what

04:42

are called functions and these functions

04:44

are just snippets of code they can be

04:46

small or large pieces of code and aws

04:49

does not require you to have to worry

04:51

about any of the infrastructure as you

04:53

had to do with ec2 you just basically

04:55

write and deploy your functions and aws

04:58

worries about deploying your application

05:00

onto a container and then scaling that

05:03

application whenever the number of

05:04

requests to your lambda function

05:06

increase

05:07

so this is a really really attractive

05:09

model because

05:10

lambda is paper invocation so it's

05:13

really cost effective for application

05:15

workloads that have bursty traffic

05:17

patterns

05:18

or for applications that have traffic

05:20

during the day and then it kind of

05:22

recedes down to nothing in the evening

05:24

so lambda is a really really popular

05:26

service it's getting more and more

05:28

popular by the day and it's definitely

05:29

one to consider if you want to learn

05:31

more about aws lambda you should check

05:33

out my brand new udemy course in the top

05:36

right of this video now if you're not

05:38

into kind of deploying your

05:40

infrastructure onto machines directly

05:42

and you're not into using this

05:43

serverless model there is a third option

05:45

for those you that are more kind of

05:47

docker folks or docker fans

05:50

and that third option is amazon ecs so

05:53

ecs stands for elastic container service

05:56

and there's also a variation of ecs

05:58

called eks or elastic kubernetes service

06:02

and essentially ecs is just a service to

06:05

help you manage your containers helps

06:07

you set up servers with integrated load

06:09

balancing and auto scaling helps you

06:12

facilitate your deployments to those

06:14

containers so it's kind of like

06:15

something in the middle between ec2 and

06:17

lambda and if you're interested in

06:19

learning more about like these three

06:20

services and different compute options

06:22

that are available to you i have a video

06:23

where i compare these three things i'll

06:25

put that in the comments or the

06:27

description section below

06:28

so like i was kind of saying uh the

06:30

application layer doesn't really change

06:32

in terms of the compute options you have

06:34

the same kind of fundamental building

06:36

blocks that are available to you

06:38

regardless of if it's your web backend

06:40

layer or your kind of business logic

06:42

heavy heavy application layer here now

06:45

another service that helps kind of

06:47

facilitate the creation of your rest

06:49

apis and hosting those apis is one

06:52

that's called api gateway over here an

06:54

api gateway is a super super powerful

06:56

service because it offers additional

06:59

functionality on top of just kind of

07:01

using a load balancer to distribute your

07:03

traffic to different nodes here and the

07:05

types of uh kind of features that api

07:07

gateway offers are things like api

07:09

throttling or authorization on an api

07:12

say for example you you're building kind

07:14

of a private api that you only want to

07:16

be accessible from users in a user pool

07:19

which we're going to talk about next

07:21

year

07:22

you can set up your api gateway to

07:23

validate that you know a token is valid

07:25

uh by integrating with the user pool

07:27

service or you can define your own also

07:30

offers other features such as model

07:33

validation so you can define what types

07:34

of models your api supports and then

07:37

have that validation performed before

07:39

the request actually gets to your

07:41

backend layer here

07:43

so you can do like a bunch of different

07:44

combinations here you can do your dns

07:46

pointing to your api gateway which

07:48

points to your load balancer which

07:50

points to your infrastructure layer and

07:51

that is if you want to take advantage of

07:53

some of those features that i just

07:55

described so speaking of user pools we

07:57

just kind of touched on that we might as

07:58

well reveal the service here and that's

08:01

one called amazon cognito so amazon

08:04

cognito is kind of a very very powerful

08:07

but underrated service and what it

08:09

allows you to do is to create user pools

08:13

and these user pools kind of similar to

08:14

what you'd have on any kind of login and

08:16

registration website you know you create

08:18

a user they provide a login a username a

08:21

phone number a recovery option all that

08:22

kind of stuff and so with cognito you

08:25

can

08:26

have users sign up for accounts directly

08:28

within cognito using the hosted ui

08:31

or you can integrate with other

08:33

third-party identity providers such as

08:36

google facebook amazon so anytime you've

08:39

seen like login with amazon or log in

08:41

with google or facebook or any other

08:43

identity provider

08:45

that could be integrated with cognito as

08:47

well so very very useful for

08:49

applications that require user

08:51

registration and if you combine that

08:53

with api gateway you can do things like

08:55

ensuring that a user is part of a

08:58

certain user group before the request

09:00

can be validated and that flows through

09:02

to your backend layer here so that's a

09:03

little bit about cognito let's kind of

09:05

finish this three-tier architecture

09:07

discussion and talk a little bit about

09:09

the database layers now or the storage

09:11

slash persistence layer

09:14

so a lot of applications have caching

09:16

enabled on them just to increase

09:18

performance on some

09:19

lookups of items that are quite common

09:22

or maybe you just want increased

09:23

performance so what's the aws service

09:25

that allows that to happen so that

09:27

service is called elastic cache and

09:30

elastic cache kind of comes in two

09:32

different flavors you can either go with

09:34

the flavor that

09:36

is memcache based or you can choose

09:39

redis now redis is probably the most

09:41

popular one people when people think

09:43

about caches i think redis comes to mind

09:45

almost immediately but regardless of

09:47

what you choose when using elastic cache

09:50

it is a caching service so it's going to

09:52

be based on key value lookups and you

09:55

are going to have to worry about hosting

09:57

that infrastructure essentially you kind

10:00

of own a cluster of nodes and

10:03

these are memory optimized nodes where

10:05

they have plenty of memory to facilitate

10:06

your application's needs um but you

10:09

still have to worry about the

10:10

maintenance of that cluster you know and

10:11

node replacement hardware failures

10:13

things like that it's a relatively

10:15

hands-off service but there are some

10:16

nuances that you may need to know about

10:18

in terms of maintenance and alarming and

10:19

all that now in terms of what should we

10:22

store our database in should we store it

10:24

in a relational database or a nosql

10:26

database so there's a bunch of different

10:28

options here that you can choose from so

10:30

the one that aws likes to push a lot is

10:33

a relatively popular one called amazon

10:35

aurora now amazon aurora is a in-house

10:38

built amazon database that is compatible

10:41

with both my sequel and postgres i

10:44

believe postgres is still in preview

10:46

mode now so it's a fully managed rds

10:48

database that kind of makes your life

10:50

easier in terms of worrying about things

10:53

like administration monitoring

10:55

auto scaling storage auto scaling and

10:58

compute auto scaling also offers

11:00

something called the data api that you

11:02

can use to

11:04

call your rds database using a rest api

11:07

as opposed to a traditional kind of

11:08

database connection so there's a lot of

11:11

features that are coming with aurora and

11:13

you may really want to consider it if

11:14

you're thinking about using a relational

11:16

database now a relatively similar

11:18

service to that is amazon rds or

11:21

relational database service and where

11:23

these two are different is that rds is a

11:25

database service that allows you to

11:27

select which database configuration that

11:29

you would like so you get to pick from

11:31

common database uh platforms such as

11:34

mysql postgres microsoft sql server

11:37

oracle cassandra and probably a couple

11:39

other ones that i'm missing as well so

11:41

rds is probably what i would think most

11:43

people are familiar with but a lot of

11:44

customers are deciding to go with aurora

11:46

just because it's more of a hands-off

11:49

option and just makes life easier one

11:51

other thing about aurora is that it does

11:53

offer a serverless compute model as well

11:56

where you don't need to worry about

11:57

provisioning any type of hardware behind

11:59

the scenes as you would with an rds

12:02

database you can use the serverless

12:04

model and it's kind of like an auto

12:05

scaling type of database thing similar

12:08

to what lambda did for ec2 aurora server

12:11

list is doing for rds so it's it

12:14

provisions your infrastructure whenever

12:15

the request rate requires it so if you

12:17

have a bursty workload it'll add more

12:19

nodes and scale you up so that your

12:21

database can handle more volume

12:23

so that's a little bit for rds here

12:26

let's talk about nosql database options

12:28

now now definitely the most popular

12:30

nosql database that you're going to hear

12:32

about a lot is dynamodb now dynamodb is

12:36

a nosql database that is optimized for

12:39

key value lookups it is a fully managed

12:42

database service so that means that you

12:44

don't worry about anything with regards

12:46

to infrastructure or hardware all you

12:48

really worry about is your scaling

12:50

configuration and dynamodb handles the

12:53

auto scaling for you behind the scenes

12:55

and so it's a really really powerful

12:58

nosql database and it's kind of used as

13:00

the building block for much of the

13:02

internet really if you take a look at

13:04

one of the aws white papers where

13:06

dynamodb unfortunately went down one day

13:09

it brought down with it a large part of

13:11

the internet including common

13:13

services that we all love like netflix

13:15

and other websites as well

13:17

so dynamodb is a super super powerful

13:19

and popular nosql database on aws and

13:23

really this is this service is kind of

13:25

at the heart of many other aws services

13:28

as well like behind the scenes

13:30

so yeah that's it for dynamodb now if

13:33

you're a mongodb type of person and

13:35

you're coming to aws you don't want to

13:36

learn dynamodb

13:38

there is a service option for you so aws

13:42

also offers what's called documentdb

13:44

like you see here and documentdb similar

13:46

to dynamo is a fully managed service but

13:49

this time it is compatible with mongodb

13:52

so that you can you know use mongodb as

13:54

you normally would in a fully managed

13:56

way so that should satisfy any mongodb

13:58

lovers and if you're looking for

14:00

something that supports more flexible

14:02

querying at scale

14:04

you may want to consider a service

14:06

called open search open search is the

14:09

new name for the traditional elastic

14:11

search service i believe aws and

14:13

elasticsearch had a falling out so aws

14:16

kind of came up with their own service

14:18

here but really this is elasticsearch

14:20

behind the scenes now what open search

14:22

allows you to do over some of these

14:24

other nosql databases is perform queries

14:27

that are more kind of fuzzy in nature so

14:30

give me all the records with with value

14:32

equals x y and z and you know value two

14:36

equaling something else and value three

14:38

equaling something else also allows you

14:40

to do some really powerful grouping

14:42

features dynamic grouping as well

14:44

comes with cabana as well which is an

14:46

open source dashboarding technology to

14:48

take a look at your data inside your

14:50

open search database

14:51

this has been used quite effectively as

14:53

a replacement to rds in some cases but

14:56

it's a really neat service that you

14:58

should consider as well now i wanted to

15:00

pause here to talk about some other

15:03

services that don't really fit the molds

15:05

here but kind of play a role in terms of

15:08

packaged infrastructure because so far

15:11

what i've talked to you about here these

15:13

are all kind of lower level building

15:15

block services but aws does offer these

15:18

kind of packaged infrastructure services

15:21

that make your life easier as a

15:22

developer you can tell that if you want

15:24

to build this three-tier application

15:26

architecture here there's a lot of

15:27

moving pieces here there's a different

15:29

compute option there's load balancing

15:31

there's api gateways there's databases

15:33

there's a lot of stuff going on so aws

15:35

does have some services that kind of

15:38

offer a combination of these different

15:40

elements as a single product and so

15:43

instead of having to worry about you

15:45

know each of the building blocks and

15:46

deciding on your own which one you want

15:48

to use you can use these pre-packaged

15:50

infrastructure services that bundle this

15:53

functionality together

15:54

and often they abstract some of the

15:56

complexity away from you at the

15:58

sacrifice of kind of configuration and

16:00

control so some of those different

16:02

services are

16:04

well the first one that i have for you

16:05

here is elastic bean stock now elastic

16:07

beanstalk is a pretty old service it

16:09

allows you to set up any kind of web

16:11

application could be a containerized web

16:13

application as well and it just makes it

16:16

easier for you to set up your app with

16:18

all these different components so a

16:19

backend layer load balancing also lets

16:22

you set up auto scaling and monitoring

16:25

so it comes with a lot of the components

16:27

here but you manage it in one spot

16:30

which is the elastic bean stock console

16:32

so you're still controlling the

16:34

infrastructure with elastic bean stock

16:35

but it's kind of like an orchestrator

16:37

service it'll go out to all these

16:39

different services here and provision

16:41

what it needs for the the type of

16:43

application that you're trying to deploy

16:44

onto it

16:45

now another service that just came out

16:47

pretty recently that does something

16:49

similar is one that's called app runner

16:51

and app runner behind the scenes uses

16:54

ecs and something called fargate which

16:56

is a kind of a serverless mode for

16:59

running containers where it uses

17:01

provision containers that you can

17:02

specify but you don't need to worry

17:04

about the infrastructure

17:06

so that's what app runner relies on so

17:08

with elastic bean stock you know it's

17:10

orchestrating the deployment of your ec2

17:13

machines your load balancers and any

17:14

other stuff that you may need however

17:17

you still have visibility or insight

17:19

into that infrastructure you still need

17:21

to worry about maintaining it with app

17:23

runner it's a little bit different all

17:25

of the lower level components are

17:26

abstracted away from you you just kind

17:28

of worry about your application

17:30

configuration and deployment an app

17:33

runner will worry about deploying that

17:34

onto your infrastructure and scaling it

17:37

if it requires it so that's another

17:39

important service to know as well and

17:42

also there's another option here which

17:44

is amazon light sale and light sale is

17:46

what i actually use for my personal aws

17:50

blog you can check it out at be a better

17:52

dev.com

17:53

and it's another one of these

17:54

pre-packaged services that just makes

17:57

your life easier so it's similar to

17:59

other uh kind of cloud vendors like i

18:02

want to say godaddy or digitalocean

18:04

where you kind of select the type of

18:06

stack that you want to set up for your

18:08

application and there's a bunch of

18:10

different pricing models kind of

18:11

pre-packaged pricing models where you

18:14

don't have to worry about the details of

18:16

kind of which node type is right for you

18:19

as you would have to do with your ec2

18:20

machines over here you just pick

18:22

different pre-packaged options for

18:24

compute and the costs are reasonable as

18:26

well and in terms of what you can deploy

18:29

on lightsail i use it to deploy my

18:31

wordpress blog but you can also use it

18:33

to deploy a lamp stack a mean stack a

18:36

ruby application you can also use it to

18:38

deploy your own containers

18:40

and you can also add other components as

18:42

well such as load balancing and auto

18:44

scaling uh so there's a lot of different

18:47

features that are built into light sale

18:48

but it's a much more simplified and

18:50

paired down version so you can add all

18:53

this extra stuff but you're doing it

18:55

within this kind of i want to say safe

18:58

safe zone or safe version of the aws

19:01

console so things are much more

19:02

streamlined in light sale you have very

19:05

few options of types of things that you

19:07

can do and it's a very beginner friendly

19:10

option for those of you that are just

19:11

getting started not recommended for kind

19:13

of production grade applications but

19:15

something great for smaller applications

19:18

or even a wordpress blog such as in my

19:20

case

19:21

now another honorable mention that i did

19:23

want to talk about briefly for those of

19:25

you that love graphql maybe you're a

19:27

front-end guy you love graphql aws does

19:30

offer a fully managed graphql as a

19:33

service

19:34

service called appsync and appsync just

19:36

makes it easier for you to develop your

19:38

graphql applications by providing you

19:41

with that graphql functionality

19:43

so you can use it to integrate with

19:46

other backend aws services such as

19:48

dynamodb you can use it to integrate

19:50

with lambda functions if you want to

19:52

have some custom resolvers and it can

19:54

also scale really really well too

19:56

completely transparently to you as an

19:59

administrator depending on the level of

20:01

traffic that's hitting your application

20:03

so appsync is another popular one that

20:05

you can think about if you're a graphql

20:06

user

20:07

now one other thing to mention as well

20:09

is in terms of cached content so for

20:11

many of these web applications you're

20:13

going to be serving different types of

20:15

cached content whether that be image

20:17

files your javascript your html your css

20:20

anything that you may want to cache and

20:22

basically put close to the end user so

20:24

you can get better performance

20:27

and for that you're going to be using a

20:28

service called amazon cloudfront

20:31

so cloudfront allows you to deploy a

20:33

cloudfront distribution

20:35

so you can have your application source

20:38

deployed in for example north america

20:41

but what if you have customers that are

20:42

located in europe or asia or australia

20:46

if you don't use cloudfront then any

20:48

customer is going to have to hit that

20:49

north america server which you know does

20:51

take some time so there's going to be

20:52

some performance degradation with

20:54

cloudfront you can set up and deploy

20:57

distributions that replicate some of

20:59

your content from your general object

21:02

storage which we're going to talk about

21:03

a little bit later and then replicate

21:06

that content to regional nodes that are

21:08

located all across the world close to

21:10

your end users and what that allows you

21:12

to do is get some better performance for

21:14

much of this static content so great for

21:16

applications that want to optimize the

21:19

experience for the user

21:21

okay so so far we talked about quite a

21:23

few concepts talked about like routing

21:25

apis user pools load balancing compute

21:29

databases

21:30

packaged infrastructure caching

21:32

now i want to talk about some other

21:34

components in terms of like how do we

21:36

actually deploy and monitor these

21:39

applications so in terms of deployment

21:42

there's actually four different

21:45

smaller services i want to say that aws

21:47

provides and these kind of work hand in

21:50

hand for deployment pipeline so let's

21:52

peel these back one by one so the first

21:54

service at hand is code commits now what

21:57

code commit is basically for is for

21:59

storing your source code so you can

22:02

either store your source code directly

22:03

inside code commit as a service or you

22:06

can integrate code commit with third

22:08

party providers such as

22:09

github if you have a private github

22:11

repository really the option is up to

22:13

you now code commit on its own isn't

22:16

too impressive or too powerful but it's

22:19

the integration with some of these other

22:20

services that do make it powerful and

22:23

the next one is code build now code

22:25

build allows you to take your source

22:27

that's located in code commit or any

22:29

other kind of third-party connected

22:31

repository and then build that up into

22:33

artifacts it also allows you to create

22:36

and run tests in a test environment for

22:39

your source code and when you combine

22:41

that with some other components that

22:42

we're going to get to in a second you

22:44

can build some pretty sophisticated ci

22:46

cd pipelines that have multiple

22:48

different steps here in terms of running

22:51

your unit tests and your integration

22:52

tests and all that but we'll get to that

22:54

in a second here so yeah code build is

22:57

for building and testing your source

22:58

code now how do we actually deploy that

23:01

source code out to our compute

23:03

infrastructure here well that's the job

23:05

for code deploy and like the name kind

23:07

of implies it's all about taking these

23:09

artifacts that are built in the build

23:11

step and then knowing how to integrate

23:14

with these other compute layers to

23:16

actually deploy your artifacts onto

23:18

these different types of services so

23:20

that's what code deploy is all about

23:23

so so far these are kind of individual

23:25

building blocks that are chained

23:26

together but don't really give you a way

23:29

to kind of orchestrate a sophisticated

23:32

deployment pipeline and that's what this

23:34

last service is for and that's called as

23:36

you may imagine code pipeline now code

23:39

pipeline is kind of like a deployment

23:41

orchestration service so code pipeline

23:44

allows you to define a kind of a

23:46

workflow of the different stages that

23:48

your application will run through so for

23:51

instance you first you have your source

23:52

code then you have a build step then you

23:54

have a test step and then maybe you

23:56

deploy that source code to a test

23:58

environment and then after the test you

24:00

run another set of tests and then after

24:02

that maybe you deploy to your production

24:04

environment so code pipeline allows you

24:06

to take these smaller building blocks

24:09

here and weave them together to build a

24:12

pretty sophisticated ci cd pipeline and

24:14

if you're interested i do have a video

24:16

on this where i kind of walk you through

24:17

how to set up a pipeline with all these

24:18

different components here as well

24:20

i'll put a link to that in the

24:22

description so you can check that out

24:24

later so that's it for deployments now

24:27

what about monitoring um and i should

24:29

say that i have monitoring here kind of

24:31

barred over kind of this section of the

24:34

diagram but monitoring really applies to

24:37

this entire diagram for everything that

24:39

we've discussed so far and everything

24:41

that we will discuss monitoring is a

24:43

very important concept and if you're

24:45

running any kind of production workload

24:47

you need to have you know monitoring

24:48

configured and know where to look to

24:50

determine when things are going wrong

24:51

and you need to step in or when things

24:53

are fine and you can go home and sleep

24:55

nicely on your bed so there's two key

24:57

services that are involved in monitoring

24:59

and the first one let's start on the

25:00

right here and that's amazon cloud watch

25:03

so cloud watch i want to call it kind of

25:05

like an umbrella service because there's

25:07

a lot of different features that are

25:09

inside cloudwatch but by far the most

25:12

important feature in my opinion is the

25:14

ability to evaluate your metrics on many

25:16

of these other aws services so you can

25:19

go into cloudwatch and view different

25:21

metrics on your ec2 machines to see over

25:24

time in chart format you know what is it

25:26

cpu utilization what it's what is its

25:28

memory utilization for your lambda maybe

25:31

you want to know what are the concurrent

25:32

number of invocations or all the

25:34

invocations in one day the count that is

25:38

so you use cloudwatch to derive that

25:40

kind of information another useful

25:42

feature is logging so for many of these

25:44

applications you're going to be emitting

25:46

application logs in terms of what your

25:48

application is doing for other services

25:50

that are just kind of managed services

25:52

that sit on their own often these

25:54

services will integrate with cloudwatch

25:56

to give you kind of administration level

25:58

events whenever things are happening on

26:00

the services if you're using that piece

26:02

of infrastructure so you're going to be

26:04

using cloudwatch quite a bit and in fact

26:06

they just released a new feature

26:07

recently called cloudwatch insights that

26:10

lets you search over very very large

26:12

volumes of cloudwatch data using kind of

26:15

like a sql style language so it makes it

26:18

very very convenient to find certain log

26:20

lines if you're looking for them in just

26:22

kind of a giant mess of log files now

26:25

the other service that's important in

26:26

terms of monitoring is one that's called

26:28

cloudtrail and cloudtrail is a little

26:31

bit different than cloudwatch cloudwatch

26:33

helps you monitor the state of your

26:35

applications in your aws account cloud

26:38

trail is more in terms of kind of an

26:42

audit trail of the operations that are

26:44

being performed on your infrastructure

26:47

here not only the operations that are

26:49

being performed but who is performing

26:51

those operations

26:52

whether or not that's an application so

26:54

like a lambda function calling a

26:55

database or maybe it's a user that kind

26:58

of went rogue and maybe they're deleting

27:00

all your infrastructure cloudtrail is

27:02

going to offer you different types of

27:04

events that allow you to gain insight

27:06

into who is accessing different services

27:10

and what they are doing on those

27:11

services so the types of events can

27:13

either be at the

27:15

kind of control or administration level

27:17

those are just kind of when your

27:19

infrastructure gets provisioned or

27:20

deleted or modified in any way there's

27:23

also data level

27:24

events and the the kind of collection of

27:26

events is called trails so the data

27:29

level events give you a little bit more

27:30

granular data so for something if you

27:32

configured it on a dynamodb table it'll

27:35

give you log information on every single

27:37

request that comes to your table i don't

27:39

advise it you're going to be chewing

27:40

through a lot of bandwidth for

27:43

basically log storage but you can enable

27:46

that if there's a situation where you

27:47

kind of need to know

27:49

who is hitting this database

27:51

and then the third one is kind of a

27:53

proactive one it's called insights and

27:55

insights you can configure it to

27:56

automatically monitor your account and

27:58

aws uses machine learning to monitor the

28:02

cloudtrail events for any anomalies so

28:04

very useful for kind of being proactive

28:06

about security threats

28:08

now one other service that i think we

28:10

should mention at this point

28:11

that is kind of similar to monitoring in

28:14

that it applies to any of these

28:16

different infrastructure components is a

28:18

service called uh identity and access

28:21

management which is often referred to as

28:23

iam for short so iam is kind of a

28:26

security management service for aws

28:29

you can you create high-level entities

28:32

such as users or roles and associated

28:35

with these users are policies now these

28:38

policies are important because by

28:39

default a user will not have any kind of

28:42

permissions to do anything on aws unless

28:45

you define a im policy that gives that

28:48

user to perform that action in other

28:50

words aws security management uses a

28:53

implicit deny operation in that you're

28:56

denied access to everything unless

28:58

someone says otherwise so that's what

28:59

you do in iem you create these iem

29:02

policies you attach these policies to

29:04

users you can assign users to different

29:06

groups that have a kind of a policy

29:09

permission set predefined and applied to

29:11

anyone in the group and you can also use

29:14

it to create accounts that users can log

29:16

in directly so a developer a can have

29:19

their own account developer b can have

29:20

their own so on and so forth so again

29:23

identity management is definitely

29:25

something to be very familiar with

29:27

you're going to be using it pretty much

29:29

i want to say every day if you're

29:30

working with aws because you're always

29:33

you know trying to get access to

29:34

something if you're experimenting with a

29:36

new service or feature you're going to

29:38

need to give yourself access so get

29:39

familiar with it you're going to want to

29:41

know about it and if you haven't spent

29:43

the time to learn it you're going to

29:44

kind of stumble over a lot of ambiguous

29:47

permission related errors and i do have

29:49

a video on iem that you should

29:51

definitely check out to learn about

29:52

these concepts more in detail and so now

29:55

i want to talk about two components here

29:57

i want to talk about uh rapid

29:58

development and then some infrastructure

30:00

as code components as well so let me

30:02

just erase some of this i realize i just

30:04

made a mistake as i'm erasing it now

30:06

this stuff was kind of positioned in the

30:08

wrong way in the layer beneath it but i

30:10

hope you forgive me

30:11

so this first section here is for

30:13

infrastructure as code now for those of

30:15

you that are living under a rock for the

30:16

past 10 years infrastructure is coded as

30:19

the preferred way to create and manage

30:22

your infrastructure no one really goes

30:24

into the console anymore to create

30:26

things and manage your infrastructure

30:29

unless it's kind of your first time

30:30

doing it and you're just experimenting

30:32

it's much more preferred to write your

30:34

infrastructure in a code format or

30:37

configuration format so that it can be

30:39

easily picked up and deployed to a new

30:41

environment and cloudformation is one of

30:44

the options that allows you to do that

30:46

now cloudformation is a service that

30:48

allows you to write json or yaml based

30:51

kind of a configuration files and so you

30:54

upload these files to cloudformation and

30:57

cloudformation will be responsible for

30:58

calling these other aws services to

31:01

provision your infrastructure so for

31:02

example you can write a a template file

31:05

here that has a dynamodb table in it and

31:08

maybe a lambda function in it and when

31:10

you upload your your change set here

31:12

into cloudformation cloudformation will

31:14

go and create your lambda function it'll

31:16

go and create your dynamodb table

31:18

it's very very convenient it's pretty

31:20

quick however it does have some

31:22

downfalls and the specific one is that

31:25

writing your your infrastructure as yaml

31:27

or json kind of sucks

31:29

and that's where cdk comes in it kind of

31:32

fixes this problem cdk stands for cloud

31:35

development kit and it is a method of

31:37

writing your infrastructure as code that

31:39

is a little bit more fluent for us

31:41

developers it involves you writing

31:43

actual code so you know you have access

31:46

to loops primitive functions

31:48

and what this allows you to do is be a

31:50

little bit more expressive with your

31:53

infrastructure definition files so that

31:55

you can be a little bit more dynamic and

31:58

structure your code in a much simpler

31:59

way

32:00

using functions using just general

32:03

cloudformation yaml files it gets

32:04

annoying quick you don't have access to

32:06

things like autocomplete whereas with

32:08

cdk you do and the cool thing about cdk

32:11

especially is that it's very easy to use

32:14

what are called higher level constructs

32:16

and these constructs can contain an

32:19

entire

32:20

application specification so you can

32:23

have a construct that's an entire

32:24

serverless architecture that contains a

32:27

lambda function contains a dynamodb

32:28

table contains i don't know a load

32:30

balancer with api gateway and a cognito

32:33

user pool

32:34

all you have to do is use that construct

32:35

and it's just one line that you write in

32:37

your cdk code

32:39

now behind the scenes cdk does generate

32:42

the code that you write into

32:43

cloudformation and then cloudformation

32:45

is the one that deploys that out into

32:47

aws but it's just a much more preferred

32:49

way in my opinion easier way to deploy

32:52

your infrastructure out to the cloud now

32:54

there are some other options that you

32:55

can use for infrastructure as codes such

32:57

as i believe terraform and i think the

33:00

other one is called polumi or something

33:02

like that you can also use those that

33:04

integrate with aws as well but if you're

33:06

looking to do everything native in aws

33:08

you probably want to use cdk also learn

33:10

cloud formation while you're at it as

33:12

well now two services in the rapid

33:14

development category that are of note

33:17

are firstly aws amplify so aws amplify

33:21

is kind of a tool kit style service that

33:24

allows you to rapidly build and deploy

33:27

entire applications here so where where

33:30

amplify is different is that for a it's

33:32

primarily a cli tool so you're going to

33:34

be using the cli a lot and secondly it

33:37

focuses more on the functionality and

33:39

not necessarily on the infrastructure

33:42

of what you're trying to provision so

33:44

for example with amplify you can run a

33:47

very simple command to add an api it's

33:50

literally add api and behind the scenes

33:52

amplify it'll deploy maybe a lambda

33:55

function with an api gateway allows you

33:57

to add things such as user

33:59

authentication and authorization behind

34:01

the scenes it'll give you a cognito user

34:04

pool

34:05

you can add things such as a relational

34:07

database it'll give you an aurora

34:09

probably serverless database that you

34:11

can use

34:12

so it's much more focused on the

34:14

functionality and for a lot of people

34:16

that's great amplify is a great choice

34:19

because you know maybe they're coming

34:20

from a different cloud provider you

34:21

don't want to learn about all this

34:23

different stuff maybe they're more

34:24

overwhelmed than you and they haven't

34:26

watched this video yet and they don't

34:27

know about all these different aws

34:29

services but amplify is a great

34:31

abstraction for you but the one problem

34:33

with it is that it's the abstraction so

34:36

it's great when everything is working

34:38

correctly but anytime something breaks

34:40

or something isn't quite working as it

34:42

should you're gonna need to dive into

34:44

these independent services and if you're

34:46

using amplify you probably don't know

34:48

anything about these other aws services

34:50

so that's going to be a pretty big

34:52

challenge so if you want to stay within

34:54

a well-defined box then amplify is great

34:57

and if you want to venture out of that

34:59

box you probably shouldn't use amplify

35:01

and should just like write your own cdk

35:03

code and understand these other aws

35:05

services um before you get into them but

35:08

apply is great for some of you that um

35:10

maybe you just you don't care about aws

35:12

services and you just want to focus on

35:14

the functionality so that's where

35:15

amplify is great now we have sam so sam

35:18

stands for serverless application model

35:20

and sam is great in terms of providing

35:23

shorthands of uh common infrastructure

35:26

setups that would typically be written

35:27

in cloud formation there's sam templates

35:30

that you can use that

35:31

kind of similar to what those higher

35:33

order constructs do in cdk similar idea

35:36

with sam so it can kind of handle much

35:38

of the complexity of the setup for you

35:40

you'll need to find a couple

35:42

specifications or a couple fields and

35:45

the other stuff it gives an intelligent

35:47

kind of default

35:48

so sam is also great for local testing

35:52

of your lambda functions so you can use

35:54

sam to

35:55

build and run your lambda functions

35:57

locally before you deploy them into aws

35:59

so that's another great reason to use it

36:01

as well

36:02

all right so let's talk about this kind

36:04

of half of this diagram over here and so

36:07

um i put this hypothetical use case here

36:09

so search query submission i was

36:11

thinking like maybe we're building an

36:12

application here that's similar to

36:14

google so you have someone that's

36:15

submitting a request to our application

36:17

layer here through our back end

36:20

maybe someone is searching for i don't

36:22

know aws on google someone's going to

36:24

store that in a database somewhere right

36:26

and then you know as a typical service

36:28

oriented architecture you probably want

36:30

to send a notification out to other

36:32

microservices that hey someone search

36:35

for this thing maybe someone else or

36:36

some other microservice cares about it

36:38

maybe an analytics service or some other

36:40

type of service so what do we use for

36:43

event coordination or pub sub or

36:45

notifications of other services that

36:48

something has changed in our application

36:51

so there's a couple different services

36:52

at play here so uh

36:54

there's a little bit of a misalignment

36:55

here but that's okay

36:57

so the first one is what is called sns

36:59

so simple notification service and sns

37:02

is basically a pub sub service and it is

37:04

the pub in the sub so it is responsible

37:08

for publishing notifications to a topic

37:11

and a topic can have many different

37:13

subscribers

37:14

so the idea is that kind of a domain

37:17

model owner such as you know search

37:19

query service or whatever

37:21

whenever it's kind of puts an entry into

37:23

its database it wants to notify other

37:26

services that hey someone put something

37:28

into my system you guys should check

37:30

this out that system will use an sns

37:33

topic that they publish to to notify

37:36

these other microservices that something

37:37

changed so it is the publisher and the

37:40

subscribers can be many different types

37:42

of infrastructure you can have other aws

37:45

services that are your subscribers such

37:47

as a lambda function you can have a http

37:50

endpoint that exists on maybe an ec2

37:53

instance or something like that

37:55

you can also have a very common one

37:57

which is an sqsq or a simple q service

38:01

queue

38:02

and so

38:03

sqs is simple queue service and this

38:07

service is effectively responsible for

38:09

holding messages so that you can process

38:12

them at a later time and so you define

38:15

cues and queues can be connected to from

38:18

many different types of

38:20

compute infrastructure so you can

38:22

connect your queue to a lambda function

38:23

or an ec2 machine or an ecs task and

38:27

those pieces of infrastructure will pull

38:29

your queue for new messages and then

38:31

perform some type of action when it

38:33

finds new messages in the queue so

38:35

typically people set up an sns to an sqs

38:39

so the sns topic being the publisher and

38:41

the sqsq being the subscriber and if

38:44

you're confused at all between the

38:45

difference of these two surfaces i do

38:47

have a video on this that i discuss this

38:50

at nauseam and i'll put that in the

38:52

description so that you can check that

38:53

out as well

38:54

but basically if you want to tell other

38:57

people about data or data changes use

38:59

sns if you want to be notified of when

39:02

something changes in someone else's data

39:05

use sqs that's the basic gist of it now

39:08

there is another service that's pretty

39:10

similar to sns and it's one that's

39:12

called eventbridge and eventbridge is

39:15

very very similar in terms of what sns

39:18

offers although it does offer some

39:20

distinct benefits so first of all

39:23

instead of sns topics eventbridge uses

39:25

this concept of eventbuses and you can

39:28

integrate your event bridge event bus

39:30

with many different kind of application

39:32

actions all across aws so for instance

39:36

maybe

39:37

you want to integrate your event bridge

39:39

with whenever an ec2 machine gets

39:42

terminated maybe that's some kind of

39:44

operation that you're interested in or

39:45

whenever a lambda function gets updated

39:48

or whenever the configuration on your

39:49

dynamo table gets changed you can

39:51

integrate those events into eventbridge

39:54

and then you can define rules that

39:55

specify who to deliver these events to

39:59

so similar to how sns

40:01

has subscribers eventbridge also has

40:03

subscribers and you define these rules

40:06

and target groups of who to deliver

40:08

these messages to depending on the type

40:11

of event

40:12

now where eventbridge really shines over

40:14

something like sns is that it has two

40:16

important features the first one is

40:19

something that's called schema discovery

40:21

so if you are using sns and you're

40:23

publishing to your topic and someone is

40:26

getting a message in your sqsq what does

40:29

the schema of that message look like

40:31

what does the format of the message look

40:33

like does it have no is it a json is it

40:36

a an xml file does it have you know foo

40:39

as a key and bar as a value like is it

40:41

an array like what's in there so

40:43

eventbridge allows you to define these

40:45

schema definitions to help subscribers

40:48

get access to the models that are going

40:50

to be delivered from the eventbridge

40:52

event bus which is a very very nifty

40:55

feature and also allows you to search

40:57

through different schemas to maybe find

41:00

the one that's necessary for your

41:01

application another important feature is

41:04

third-party integrations and this is

41:06

something that's really cool with

41:07

eventbridge so an example third-party

41:09

integration that you can work with is

41:11

something like shopify so shopify has

41:13

native integration with eventbridge so

41:15

what that means is that anytime someone

41:18

places a order on your shopify

41:20

e-commerce website that can be directly

41:23

integrated into eventbridge and then you

41:25

can have specific rules set up to

41:27

deliver that

41:29

notification to maybe a microservice

41:31

over here or a backend service that

41:32

cares about those updates or maybe you

41:35

just want to deliver that to general

41:36

object storage which can happen as well

41:38

but eventbridge is great because it

41:40

allows for these third-party

41:41

integrations such as shopify pagerduty

41:44

and many many others and that's not

41:46

really natively offered in sns so that's

41:49

where it kind of shines now another

41:51

service that's in this kind of event and

41:53

coordination department let me just

41:56

erase this here so it looks pretty

41:57

smooth

41:58

is step functions and honestly out of

42:00

all of these step functions are one of

42:02

my favorite services offered in all of

42:05

aws

42:06

and what step functions allow you to do

42:08

is to define kind of workflows um so

42:11

it's more like um i want to draw it out

42:14

but maybe i won't but you define like

42:15

workflows and different steps that you

42:17

have so you have a starting step and

42:19

then next you want to do like x step and

42:21

then y step you can have conditional

42:23

logic in your step function workflows

42:25

and so what this allows you to do is

42:27

build things like you know a customer

42:29

ordering workflow where the first step

42:31

is to validate

42:33

the details of the order the next step

42:35

is to package that order in the

42:37

warehouse the next step is to

42:40

you know send out delivery notifications

42:43

and send out a notification to this to

42:45

the customer all of that can be modeled

42:48

in a step function workflow and you can

42:50

have kind of fail safe and conditional

42:53

logic in that workflow so if anything

42:55

fails then a different path or a

42:57

different choice is taken and it offers

43:00

direct integration with many other aws

43:02

services so you can use a service like

43:04

aws lambda to kind of glue different

43:07

parts of the workflow together and this

43:09

is going to be completely serverless so

43:11

in summary step functions are kind of

43:13

this orchestration service that allows

43:15

you to define these very sophisticated

43:17

and large workflows that may run through

43:20

many many steps

43:22

so after you've kind of

43:24

done your event delegation here maybe

43:25

you want to store copies of those events

43:28

in object storage or maybe you want to

43:30

kind of replicate whatever is in your

43:32

dynamo or aurora table or rds table into

43:35

just some cheap cost effective general

43:38

object storage so what service would you

43:40

use for that well the service you're

43:42

going to be using is one that is one of

43:44

the oldest in aws and that's called

43:46

amazon s3

43:47

stands for simple storage service and it

43:50

is just your kitchen sink of data

43:52

storage very cheap very scalable you can

43:55

store like basically exobytes or

43:57

petabytes of data in here just massive

44:00

massive amounts at very very affordable

44:02

rates and you can also move your data

44:05

over time into cold storage to get even

44:08

better price points however it can scale

44:11

really well

44:12

so when we were talking about like

44:13

caching earlier when we were talking

44:15

about cloudfront you would typically

44:17

store your asset files in your s3

44:19

buckets and then connect that to your

44:21

cloudfront distribution so that it can

44:23

be replicated to cloudfront and serve to

44:25

all your customers around the world so

44:27

s3 can be used to store basically any

44:29

type of file images css video

44:33

any type of media that you can think of

44:35

you can store in s3 there are some

44:37

pretty reasonable limits on file sizes

44:40

so you have to check that out if you

44:41

want to upload some massive files but s3

44:44

is a super super important service

44:46

you should definitely know about it if

44:47

you're learning aws

44:49

okay so now for analytical processing

44:52

say we got our data into s3 now you know

44:55

someone saved it into their database

44:56

over here we dispatched an event then we

44:58

stored it in s3 now we want to run some

45:01

analytics on it so what infrastructure

45:03

option should we use for that so i want

45:05

to start with the bottom one here

45:07

emr and emr is a large-scale distributed

45:12

data processing system so it allows you

45:14

to run many different frameworks

45:15

including the most common ones so spark

45:18

clusters hive

45:19

presto you can even run it in a

45:21

serverless mode now but emr is going to

45:23

be the service where you're going to do

45:25

just massive

45:26

number crunching to perform some kind of

45:28

analytics

45:30

so the other option to use instead of

45:33

emr is one that i'm a really big fan of

45:36

which is amazon athena and athena is a

45:40

completely serverless big data

45:42

processing or analytic service so how it

45:45

works is that you can keep your data

45:47

stored in s3 you don't need to load it

45:49

into anywhere as you may with emr but

45:51

you keep your data stored in s3 athena

45:54

will directly connect to your s3 data

45:57

crawl your data automatically detect the

46:00

schema of the data of whatever you have

46:02

in your buckets and then create these

46:04

kind of tables that you can query using

46:06

sql and so whenever you dispatch a job

46:09

to athena it uses aws infrastructure

46:13

behind the scenes to prioritize the

46:14

request so you can run massive massive

46:17

queries on data that is already stored

46:20

in s3 using amazon athena a really

46:23

really powerful analytics service and

46:25

just number crunching service that's a

46:27

very viable option when compared to emr

46:30

now our next step is the data warehouse

46:32

so where do we actually want to store

46:34

this data for things like you know

46:37

business intelligence or any types of

46:39

analytics that we may want to perform on

46:40

it we don't want to store that in

46:42

something like document db dynamo or any

46:45

of these rds options over here because

46:46

they're not really meant for that

46:48

so the service that you'd want to use

46:50

for that type of operation is amazon

46:52

redshift and amazon redshift is a

46:55

columnar style database that allows you

46:58

to perform some very very large queries

47:00

concurrently so it can support many many

47:02

users at the same time it is a little

47:05

bit expensive but they do offer a

47:08

serverless mode i swear everything is

47:10

going serverless these days like all of

47:12

these services now have some kind of

47:14

serverless variation but anyways they

47:16

offer a kind of a provision mode where

47:18

you can provision the nodes

47:20

in a distributed way

47:22

or there's a server list mode where it's

47:24

kind of a pay-per-use type model

47:26

however that's where you're going to be

47:27

running your

47:29

workloads for your kind of olap style

47:32

queries that's going to happen in

47:33

redshift and in fact there is kind of a

47:36

connection you can do with redshift and

47:37

s3 so say there's like no analytics that

47:40

you want to do you can just deliver data

47:42

to s3 and then set up an automatic load

47:44

job to load that into redshift so that

47:47

it can be available for this olap style

47:49

querying

47:51

so redshift is another great one for

47:53

data engineers business intelligence

47:55

users

47:56

anyone that wants to interact with data

47:58

at scale using sql and the next one here

48:01

is dashboarding so dashboarding for that

48:04

i would use quicksite so quicksite is a

48:07

tool that is great for end users so you

48:10

give users their independent logins they

48:12

can access

48:13

data whether it be in redshift or s3 or

48:15

anything else they can create these kind

48:17

of business facing dashboard so similar

48:20

to what

48:21

i think it's called a microsoft bi or

48:23

power bi did for microsoft redshift kind

48:25

of does for aws so that's what your end

48:28

users can use to explore your data

48:29

that's located in many of these

48:31

different aws services

48:33

and one final thing before i let you go

48:36

is this network boundary here so so aws

48:39

is pretty big on security so it does

48:41

offer a service that allows you to

48:43

isolate all of your resources into a

48:46

specific isolated network and the

48:49

service that allows you to do that is

48:51

amazon vpc or virtual private cloud and

48:55

this service allows you to create your

48:57

own vpcs that are basically private

49:00

networking spaces for your

49:02

infrastructure to exist in so it's

49:04

completely separate from all other aws

49:07

users it's just your networking space

49:10

and you can connect your vpcs to other

49:12

vpcs so that if you want to talk to

49:14

other services and maybe a different

49:16

account

49:17

you can open up your vpc so that your

49:19

infrastructure is callable from the

49:20

public internet you can have very very

49:22

large vpcs that host many many different

49:26

microservices here or service oriented

49:28

architectures so there's a lot you can

49:30

do with vpcs in terms of defining the

49:33

setup and configuration in terms of the

49:35

security so there's a lot you can do

49:37

with vpcs in terms of setup to isolate

49:40

your resources from any other system and

49:43

also allows you to find some security

49:45

rules to make sure that your

49:47

infrastructure is protected from any

49:49

outside actor so if you enjoyed this

49:51

video i'm going to put links in the

49:53

description section to what i think are

49:54

pertinent videos on all of these

49:56

different aws services and if you want

49:58

to learn more check out other ones here

50:00

on the right and thanks so much for

50:02

watching i hope you learned a lot about

50:03

aws services thanks so much and i'll see

50:05

you next time

Rate This

5.0 / 5 (0 votes)

Etiquetas relacionadas
AWS ServicesCloud ManagementApplication ArchitectureCompute OptionsDatabase SolutionsDeployment ToolsMonitoring StrategiesSecurity PracticesServerless ComputingInfrastructure as Code
¿Necesitas un resumen en español?