Frequently asked questions
- Who is this for?
- Why serverless?
- Why AWS?
- Why choose DynamoDB?
- What is Infrastructure as Code (IaC)?
- Why choose Architect?
- How does Architect work?
- How does Architect compare to
- What cloud resources are currently supported by Architect?
- How do I extend Architect to use AWS resources not directly supported?
- How do I export
app.arcto raw CloudFormation?
- Where can I find examples?
Who is this for?
This guide is designed for web dev beginners who want to get started with building modern serverless web applications on AWS from scratch. This guide does not assume that you have any prior experience with AWS.
The core ethos of serverless is to outsource undifferentiated work so you can focus on creating unique value. Cloud adopters agree their core business is not running data centers. And through that evolution we are now automating deployment and scaling of our code at an increasingly discreet level of granularity.
Modern serverless web apps share the following characteristics:
- 100% utilization This means the compute scales to zero and we only pay for the usage; there is no provisioning of instances, pods, containers, servers or virtual machines … business logic code and/or configuration is the sole expression of unique business value
- Least privilege When the runtime execution code is locked down to the least privilege security possible at a function level and by default can do nothing at all; compute execution is completely isolated at the function level with fine grained access control
- Infra as Code Progressive staged delivery of deterministic artifacts; infrastructure resources requirements are expressed alongside the code that depends on them
Said another way:
- Only pay for what you use
- Completely isolated and granular runtime security
- Fully deterministic deploys
This is important to you because these characteristics in tandem lead to shorter, more frequent and faster iterations. Faster lead times to production means feature addition and bug resolution is faster. And this means happy software developers and happier customers.
- market pioneer and leader with a track record of operational excellence and resiliency
- most services and capabilities
- most points of presence and fastest network
Why choose DynamoDB?
- Single digit latency no matter now many rows you have
- Auto scaling
- Generous free tier
What is Infrastructure as Code?
Infra as Code (IaC) is like a lockfile for the cloud resources your code depends on.
IaC is a practice to capture the cloud infrastructure resource requirements alongside the application code that depends on it by saving it, usually in a declarative manifest file, in version control with the code. In the most ideal scenario the code and cloud resources can be provisioned and updated from single deterministic artifact.
Why choose Architect?
Architect is an Infra as Code (IaC) implementation for building serverless web apps.
- Developer experience tuned for building serverless web applications
- Curated subset of free tier serverless primitives from AWS without the vendor specific configuration
- Seamless frontend development workflows
- Open source, open governance, great cadence, no breaking changes, mature and well tested
- Solid, helpful and growing community
- Deployments are standard AWS SAM and CloudFormation (eject and bail to vanilla SAM anytime or stay high level)
How does Architect work?
Architect implements an Infrastructure as Code manifest file in the following formats:
Architect takes the developer defined high level definition and compiles it into CloudFormation for deployment to AWS. While the AWS cloud is vast, Architect is a shortcut to using only the most common serverless service primitives you need to build a very scalable application, very rapidly and at a very low cost.
Common Service PrimitivesArchitect primitives are based on the following AWS serverless ecosystem services:
- CloudFormation and SAM for AWS standard deployments
- Lambda cloud native functions for compute
- API Gateway for HTTP and Websocket functions
- Route53 for DNS
- CloudFront for CDN
- S3 for static assets
- Simple Notification Service for event pub/sub functions
- Simple Queue Service for queue functions
- CloudWatch Events for scheduled functions
- DynamoDB for persistence of structured data and trigger functions
- Parameter Store for service discovery and environment variables
- IAM automatically generated least privilege role
Note: with Architect Macros all AWS services supported by CloudFormation can be utilized!
- K8s/Docker: containers are not serverless when the smallest unit of compute is running a literal web server
- Terraform: wide support for older monolithic architectures and, while possible, serverless is not a first class citizen missing things like local development workflows
- Serverless, mature tool with wide support to many platforms and capabilities but without deep support for web use cases; things like local development are an after thought
What cloud resources are currently supported by Architect?
Architect curates AWS to the minimum essential complexity so you can focus on shipping your app. It selects services that are serverless, scale to zero and have generous free tiers.
Lambda functions handing HTTP events from API Gateway.
Lambda functions handing web socket events from API Gateway.
Lambda functions subscribed to SNS topics.
Lambda functions subscribed to SQS queues.
Lambda functions subscribed to an EventBridge rule with a schedule expression. Often colloquially referred to as "CRON Lambdas".
S3 the original serverless hero.
DynamoDB tables the leading serverless database.
Define additional access patterns for DynamoDB tables. Each index is a full copy of the Dynamo table (with a different key schema for indexing) so be aware each indexe added will cost more. DynamoDB billing is faceted. Amazon charges for: reading data, writing data and storing data…among other things, but suffice to say, the free tier is generous. The first 25 GB stored per month is free.
CloudFront is one of the oldest and largest content delivery networks in the industry.
Defines Route53 records for
How do I extend Architect to use AWS resources not directly supported?
Architect has a capability called
@macros that allow you to intercept and modify generated CloudFormation prior to deployment. You can change any Architect defaults and extend it into any AWS service supported by CloudFormation.
How do I export `app.arc` to raw CloudFormation?
arc package will export the current
app.arc file as raw AWS CloudFormation.
Where can I find examples?
Check out examples at GitHub.com/begin-examples.