Serverless
info
These were the topics I created flashcards for (Remnote) and would revise them using spaced repetition. The formatting is an export from Remnote.
- serverless doesn't mean servers don't exist, it means you don't
\{\{provision\}\}
or\{\{manage\}\}
servers. - AWS Lambda
- lambda is a virtual
\{\{function\}\}
. - lambdas provide two main functions... ↓
- transformations
- job scheduling (cron)
- lambdas are great because they... (hint: runtime, provision, grow)― ↓
- short execution
- on-demand
- scale automatically
- lambda pricing is per
\{\{request\}\}
plus\{\{compute or execution\}\}
time. - compute time is
\{\{GB\}\}
per second of\{\{execution\}\}
time. - a good rule of thumb is if the process takes longer than
\{\{15\}\}
mins, don't use lambda.- why? because lambda's maximum execution time is
\{\{15\}\}
mins.
- why? because lambda's maximum execution time is
- programming languages supported? (hint: N P J C G C R c)― ↓
- node.js
- python
- java
- C# (.NET)
- Golang
- C# (powershell)
- Ruby
- Custom Runtime API
- Lambda Container Image
- use, only if "
\{\{lambda runtime\}\}
API" is enabled or installed. - otherwise, use
\{\{ECS\}\}
or\{\{Fargate\}\}
.
- use, only if "
- Limits
- Lambda limits apply per
\{\{Region\}\}
. - Execution limit
- RAM limit?―128MB to 10GB
- Execution time limit?―900s or 15 mins
- Environment Variable size?―4KB
- Disk (i.e. functions container)?―512MB to 10GB
- Deployment limit
- lambda deployment size (zip format)?―50MB
- uncompressed size limit?―250MB
- what directory can be used to load other things at start up?―/tmp directory
- Environment variable size?―4KB
- Lambda limits apply per
- Customisation at the Edge
- customisation i.e. transformation
- what are the TWO options for customisation at the Edge? ↓
- Lambda @ Edge
- CloudFront Functions
- Which option can handle more requests?―Cloudfront Functions
- Why?―Only deals with viewer request and response.
- roughly how many requests can CloudFront Functions handle?―1M+
- what kind of execution time per request?―less than 1ms
- Use CloudFront Functions when you want....
- high performance
- high scale
- only dealing with the viewer request and response.
- what kind of latency per request can you get from CloudFront Functions?―less than 1ms
- what kind of latency per request can you get from Lambda at Edge?―5-10ms
- When is it appropriate to use L@E? (hint: 3rd ext body)― ↓
- if you have 3rd party code dependencies
- if you need to access external services
- if you need to access a filesystem or HTTP body of a request
- Lambda & the Network
- by default Lambda is deployed
\{\{outside\}\}
of a (your) VPC. - to deploy a Lambda inside your VPC you need to define the following: ↓
- VPC ID
- Subnets
- Security Groups
- what does Lambda create to access your subnets?―ENI (Elastic Network Interface)
- RDS Proxy
- what is the risk of having Lambda functions access your DB directly?―open too many connections during peak load
- what can you use to improve scalability and preserve DB connections?―use RDS Proxy between Lambda and DB
- what are the main benefits of RDS Proxy? ↓
- reduce load (calls) on the DB
- manage client connections (pooling and sharing)
- enable request AuthN (IAM + secrets manager)
- RDS Proxy is sometimes publicly accessible. True of False?―False. RDS Proxy is never publicly accessible.
- Will your Lambda be able to access RDS Proxy from outside your VPC?―No. Lambda must be deployed inside your VPC.
- by default Lambda is deployed
- lambda is a virtual
- Amazon DynamoDB
- Fully
\{\{managed\}\}
, highly\{\{available\}\}
with\{\{replication\}\}
across multiple\{\{AZs\}\}
. - DynamoDB is a NoSQL or Relational Database?―NoSQL.
- can handle 100's? 1000's or millions of requests per second?―Millions.
- always
\{\{available\}\}
, no\{\{maintenance\}\}
or patching. - uses
\{\{Standard\}\}
and\{\{Infrequent\}\}
-Access Table Class. - with DynamoDB you get
\{\{single\}\}
digit\{\{ms\}\}
performance. - Tables
- DynamoDB is made up of
\{\{Tables\}\}
. - Each table is made up of the following:― ↓
- Primary Key
- Items (aka rows)
- An item is also known as a
\{\{row\}\}
. - An item has
\{\{attributes\}\}
and you can have\{\{infinite\}\}
number of items. - Max size of an item?―400KB
- Supported Data Types? (hint: S D S)― ↓
- Scalar (string, number, bool, null)
- Document (list, map)
- Set (string set, number set, binary set)
- If you need to
\{\{rapidly\}\}
evolve schemas, use\{\{DynamoDB\}\}
.
- DynamoDB is made up of
- Read+Write Capacity Modes
- what are the two modes available for DynamoDB read & write capacity? ↓
- Provisioned Mode (default)
- On-Demand Mode
- if your capacity needs are unpredictable and you need to scale suddenly, use
\{\{On-demand\}\}
mode. - if your capacity needs are predictable use
\{\{Provisioned\}\}
mode. - what does RCU and WCU stand for?―Read Capacity Units, Write Capacity Units
- Can you scale RCU without scaling WCU?―Yes. RCU and WCU are separate so can scale independently.
- what are the two modes available for DynamoDB read & write capacity? ↓
- Advanced Features
- DAX (DynamoDB Accelerator)
- DAX is an in-memory cache cluster for DynamoDB
- DAX has
\{\{ms\}\}
latency for cached data. - DAX is good when you have
\{\{read\}\}
congestion issues. - DAX default cache TTL?―5 minutes.
- DAX vs Elasticache
- What should you use when you need individual objects caching or query and scan cache needs?―DAX
- What should you use when you're dealing with aggregate result sets?―Elasticache.
- Stream Processing
- DDB has TWO options for processing data streams ↓
- DynamoDB Streams
- data retention?―24 hours.
\{\{limited\}\}
number of consumers.
- Kinesis Data Streams
- data retention?―365 days.
\{\{high\}\}
number of consumers.
- DynamoDB Streams
- DDB has TWO options for processing data streams ↓
- Global Table
- basically a DDB table that spans multiple
\{\{Regions\}\}
. - uses
\{\{active\}\}
-\{\{active\}\}
replication. - applications can
\{\{read\}\}
and\{\{write\}\}
from\{\{any\}\}
Region. - what must you enable before you can use Global Tables?―DDB Streams.
- basically a DDB table that spans multiple
- TTL
- like any TTL, set
\{\{expiry\}\}
, data gets\{\{deleted\}\}
. - use cases? ↓
- keep items current
- regulatory needs
- session management
- like any TTL, set
- Backups for DR
- DDB has two backup options available, they are: ↓
- Continuous using PITR
- On-Demand
- long-term retention, when does it delete?―explicitly requested.
- Both backup options will create
\{\{new\}\}
tables during the\{\{recovery\}\}
process.
- DDB has two backup options available, they are: ↓
- DAX (DynamoDB Accelerator)
- Amazon S3 Integration
- Export to S3 requires
\{\{PITR\}\}
(continuous backup option). - Export formats? ↓
- DDB JSON
- ION
- Import to S3, acceptable formats? ↓
- CSV
- DDB JSON
- ION
- Import errors logged in
\{\{CloudWatch\}\}
. - will an import from S3 create a new table in DDB?―Yes.
- Export to S3 requires
- Fully
- AWS API Gateway
- AWS Lambda + API Gateway is a completely
\{\{serverless\}\}
solution. - API Gateway can manage these API operations (hint: env, sec, keys, rates, x & v, save)― ↓
- Environment Routing (dev, test, prod)
- Security (AuthN, AuthZ)
- create API Keys
- Request throttling
- Transform & Validate Requests
- Cache API responses.
- API Gateway can provide the following API features (hint: v, generate..., import...)― ↓
- API Versioning
- Generate SDK and API specs
- import via Swagger or Open API to quickly define APIs
- Integrations
- API Gateway integrates with the following THREE destinations (hint: L HT.. expose...)― ↓
- Lambda Function
- HTTP Endpoint
- AWS Service (expose any AWS API via GW)
- A good way to "wrap" a backend API in the API GW features like AuthN and AuthZ, throttling etc.
- Also a good way to make a backend API publicly available safely.
- API Gateway integrates with the following THREE destinations (hint: L HT.. expose...)― ↓
- Deployment Types
- what are the three TYPES of API GW deployments? (hint: E R P)― ↓
- Edge-optimised (default) i.e. routed through
\{\{CloudFront\}\}
\{\{Edge\}\}
locations. - Regional for clients same Region.
- Private limited to your VPC using VPC endpoints (ENI)
- Edge-optimised (default) i.e. routed through
- no matter which type of Deployment is used, API Gateway still lives in
\{\{ONE\}\}
Region.
- what are the three TYPES of API GW deployments? (hint: E R P)― ↓
- Security
- API Gateway can do AuthN via? (hint: I C C)― ↓
- IAM Roles
- Cognito
- Custom Authenticators (write your own)
- What does API Gateway use to implement HTTPS on custom domain names?―AWS Certificate Manager (ACM)
- API Gateway can do AuthN via? (hint: I C C)― ↓
- AWS Lambda + API Gateway is a completely
- AWS Step Functions
- give you "
\{\{serverless\}\}
visual\{\{workflows\}\}
to\{\{orchestrate\}\}
your Lambda functions" - if you need a "human approval" step in an automation process, use
\{\{step functions\}\}
.
- give you "