scaling the platform for your startup
TRANSCRIPT
Why are you here?
• Building the technology platform for your startup• You want to prepare for success• Learn about design patterns & scalability• A pragmatic approach for startups
Priorities for startups
• Racing within a window of opportunity• Small team with no legacy• Focus on solving a problem• Avoid over-engineering & re-engineering• Reduce risk of failure when you go viral
A scalable architecture
• Can support growth in users, traffic, data size • Without practical limits• Without a drop in performance• Seamlessly - just by adding more resources• Efficiently - in terms of cost per user
AWS Regions
US-WEST (Oregon)
EU-WEST (Ireland)ASIA PAC (Tokyo)
US-WEST (N. California)
SOUTH AMERICA (Sao Paulo)
US-EAST (Virginia)
AWS GovCloud (US)
ASIA PAC (Sydney)
ASIA PAC (Singapore)
CHINA (Beijing)
Availability Zones (AZs)
US-WEST (Oregon)
EU-WEST (Ireland)ASIA PAC (Tokyo)
US-WEST (N. California)
SOUTH AMERICA (Sao Paulo)
US-EAST (Virginia)
AWS GovCloud (US)
ASIA PAC (Sydney)
ASIA PAC (Singapore)
CHINA (Beijing)EU-CENTRAL (Frankfurt)
ASIA PAC (Singapore)
CHINA (Beijing)
EnterpriseApplications
Virtual Desktop Sharing & Collaboration
PlatformServices
Analytics
Hadoop
Real-timeStreaming Data
DataWarehouse
DataPipelines
App Services
Queuing & Notifications
Workflow
App streaming
Transcoding
Search
Deployment & Management
One-click web app deployment
Dev/ops resource management
Resource Templates
Mobile Services
Identity
Sync
Mobile Analytics
Push Notifications
Administration& Security
Identity Management
Access Control
Usage Auditing
Key Storage
MonitoringAnd Logs
CoreServices
Compute(VMs, Auto-scaling and Load Balancing)
Storage(Object, Block and Archival)
CDNDatabases(Relational, NoSQL, Caching)
Networking(VPC, DX, DNS)
Infrastructure Regions Availability Zones Points of Presence
Single host
THE server(e.g. Apache,
MySQL)
Elastic IPwww.example.com
Amazon Route 53DNS service
Server Image (AMI)
We need a bigger server
• Add larger & faster storage (EBS)• Use the right instance type• Easy to change instance sizes• Not our long term strategy• Will hit an endpoint eventually• No fault tolerance
Separating web and DB
• More capacity• Scale each tier individually• Tailor instance for each tier
– Instance type– Storage
• Security– Security groups– DB in a private VPC subnet
Why start with a Relational DB?
• SQL is versatile & feature-rich• Lots of existing code, tools, knowledge• Clear patterns to scalability (for read-heavy apps)• Reality: eventually you will have a polyglot data layer
– There will be workloads where NoSQL is a better fit– Combination of both Relational and NoSQL– Use the right tool for each workload
Key Insight: Relational Databases are Complex
• Our experience running Amazon.com taught us that relational databases can be a pain to manage and operate with high availability
• Poorly managed relational databases are a leading cause of lost sleep and downtime in the IT world!
• Especially for startups with small teams
Offload static content• Amazon S3: highly available hosting that scales
– Static files (JavaScript, CSS, images)– User uploads
• S3 URLs – serve directly from S3• Let the web server focus on dynamic content
Amazon CloudFront• Worldwide network of edge locations• Cache on the edge
– Reduce latency– Reduce load on origin servers – Static and dynamic content– Even few seconds caching of popular content can have huge impact
• Connection optimizations– Optimize transfer route– Reuse connections– Benefits even non cachable content
CloudFront
CloudFront for static & dynamic content
AmazonRoute 53
EC2 instance(s)
S3 bucket
Static content
Dynamic content
css/*js/*Images/*
Default(*)
CloudFront
distribution
Database caching• Faster response from RAM• Reduce load on database
Application server
1. If data in cache, return result
2. If not in cache, read from DB
RDS database
Amazon ElastiCache
3. And store in cache
Amazon ElastiCache: in-memory cache
• Simple to Deploy • Managed
– Automatically replaces failed nodes– Patch management
• Elastic• Compatible ElastiCache
High Availability
Availability Zone a
RDS DB instance
Web server
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Amazon CloudFront
ElastiCachenode 1
High Availability
Availability Zone a
RDS DB instance
Availability Zone b
Web server
Web server
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Amazon CloudFront
ElastiCachenode 1
High Availability
Availability Zone a
RDS DB instance
Availability Zone b
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
S3 bucket forstatic assets
Amazon CloudFront
ElastiCachenode 1
Elastic Load Balancing
• Managed Load Balancing Service• Fault tolerant• Health Checks• Distributes traffic across AZs• Elastic – automatically scales its capacity
Data Layer HA
Availability Zone a
RDS DB instance
Availability Zone b
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
S3 bucket forstatic assets
ElastiCachenode 1
Amazon CloudFront
Availability Zone a
RDS DB instance
Availability Zone b
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
RDS DBstandby
S3 bucket forstatic assets
ElastiCachenode 1
Amazon CloudFront
Data Layer HA
Data Layer HA
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
RDS DBstandby
Data Layer HA
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
RDS DBstandby
ElastiCachenode 2
User sessions• Problem: Often stored on local disk (not shared)
• Quickfix: ELB Session stickiness• Solution: DynamoDB
Elastic LoadBalancing
Web server
Web server
Logged in Logged out
Amazon DynamoDB• Managed document and key-value NoSQL DB• Simple to launch and scale• To millions of IOPS• Both reads and writes
• Consistent, fast performance• Durable: perfect for storage of session data
https://github.com/aws/aws-dynamodb-session-tomcat
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-dynamodb-session-handler.html
AWS bootcamp: Architecting Highly Available Applications on AWS
Free Training at the AWS Pop Up Loft
9th October 10.00
Replace guesswork with elastic IT
Startups pre-AWS
Demand
Unhappy Customers
Waste $$$
Traditional
Capacity
Capacity
Demand
AWS Cloud
Scaling the web tier
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
RDS DBstandby
ElastiCachenode 2
Scaling the web tier
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
RDS DBstandby
ElastiCachenode 2
Web server
Web server
Scaling the web tier
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
Web server
Web server
RDS DBstandby
ElastiCachenode 2
Web server
Web server
Automatic resizing of compute clusters based on demand
Feature Details
Control Define minimum and maximum instance pool sizes and when scaling and cool down occurs.
Integrated to Amazon CloudWatch
Use metrics gathered by CloudWatch to drive scaling.
Instance types Run Auto Scaling for on-‐demand and Spot Instances. Compatible with VPC.
aws autoscaling create-auto-scaling-group--auto-scaling-group-name MyGroup--launch-configuration-name MyConfig--min-size 4--max-size 200--availability-zones us-west-2c, us-west-2b
Auto Scaling Trigger auto-scaling policy
Amazon CloudWatch
What does this mean in practice?
• Only store transient data on local disk• Needs to persist beyond a single http request?– Then store it elsewhere
User uploads
User Sessions
Amazon S3
AWS DynamoDB
Application Data
Amazon RDS
Having decomposed into small, loosely coupled, stateless building blocks
You can now Scale out with ease
Having done that…
Having decomposed into small, loosely coupled, stateless building blocks
We can also Scale back with ease
Having done that…
Take the shortcut
• While this architecture is simple you still need to deal with: – Configuration details– Deploying code to multiple instances– Maintaining multiple environments (Dev, Test, Prod)– Maintain different versions of the application
• Solution: Use AWS Elastic Beanstalk
AWS Elastic Beanstalk (EB)• Easily deploy, monitor, and scale three-tier web applications and services.
• Infrastructure provisioned and managed by EB • You maintain control.• Preconfigured application containers • Easily customizable.• Support for these platforms:
Deploy your Apps with AWS Elastic Beanstalk
Upcoming Session at the AWS Pop Up Loft
Tuesday 15th September, 16.00
Mobile
PushNotifications
MobileAnalytics Cognito Cognito
Sync
Analytics
Kinesis DataPipelineRedShift EMR
Your Applications
AWS Global Infrastructure
Network
VPC DirectConnect Route 53
Storage
EBS S3 Glacier CloudFront
Database
DynamoDBRDS ElastiCache
Deployment & Management
ElasticBeanstalk OpsWorks Cloud
FormationCodeDeploy
CodePipeline
CodeCommit
Security & Administration
CloudWatch Config CloudTrail IAM Directory KMS
Application
SQS SWF AppStream
ElasticTranscoder SES Cloud
SearchSNS
Enterprise Applications
WorkSpaces WorkMail WorkDocs
Compute
EC2 ELB AutoScalingLambdaECS
AWS building blocksInherently Scalable & Highly Available Scalable & Highly Available
a Elastic Load Balancinga Amazon CloudFront
a Amazon Route53a Amazon S3a Amazon SNS / SQSa Amazon SESa Amazon CloudSearch
a AWS Lambdaa …
a Amazon DynamoDBa Amazon Redshift
a Amazon RDSa Amazon Elasticachea …
4 Amazon EC24 Amazon VPC
Automated Configurable With the right architecture
Stay focused as you scale your team
AWSCloud-‐Based
Infrastructure
YourBusiness
More Time to Focus onYour Business
Configuring Your Cloud Assets
70%
30%70%
On-‐PremiseInfrastructure
30%
Managing All of the “Undifferentiated Heavy Lifting”
Don’t reinvent the wheel
• Notification system• E-Mail component• Search engine• Workflow engine• Queue• Transcoding system• Monitoring system
Amazon CloudSearch
Amazon SQSAmazon SNS
Amazon Elastic Transcoder
Amazon SWFAmazon SES
If you find yourself writing your own…
Search features
• Freetext AND Structured• Synonyms• Stemming• Relevance• Complex scoring• Faceting• Geospatial
Rich search feature set
Source: IDC, Nielsen, Twitter blog
Faceting Highlighting Autocompletesuggestions
Geospatial search
Prepare for the challenges
• Increase in concurrent users• Data size growth• More features => more DB tables• Technical debt (e.g. inefficient queries)
– Reduce it– Manage it
Scaling Relational DBs – option 1
Increase Database instance specs– Larger instance type (RAM, CPU, Network)– More storage – Faster storage (IOPS)– Amazon Aurora
My SQL compatible
Available, durable, and fault tolerant
5X better performance of high-end MySQL database
Highly scalable and secure
Up to 64TB of storage
Amazon Aurora1/10th the cost of the leading commercial database solutions
Amazon Aurora - Write performance
• MySQL Sysbench
• R3.8XL with 32 cores and 244 GB RAM
• 4 client machines with 1,000 threads each
Amazon Aurora - Read performance
• MySQL Sysbench
• R3.8XL with 32 cores and 244 GB RAM
• Single client with 1,000 threads
Scaling Relational DBs – option 2
Read Replicas (Master – Slave)– Scale out beyond capacity of single DB instance– Available in Amazon RDS for MySQL, PostgreSQL and Amazon Aurora– Replication lag– Writes => master– Reads with tolerance to stale data => read replica (slave)– Reads with need for most recent data => master
Scaling the DB
Web server
Web server
Web server
Web server
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
RDS DBstandby
ElastiCachenode 2
Scaling the DB
Web server
Web server
Web server
Web server
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
RDS DBstandby
ElastiCachenode 2
RDS read replica
Scaling the DB
Web server
Web server
Web server
Web server
Availability Zone a
RDS DB instance
ElastiCachenode 1
Availability Zone b
S3 bucket forstatic assets
www.example.com
Amazon Route 53DNS service
Elastic LoadBalancing
RDS DBstandby
ElastiCachenode 2
RDS read replica
RDS read replica
Amazon Aurora Replicas have less replication lag
2.6 3.4 3.9 5.4
1,000 2,000 5,000 10,0000
50,000
100,000
150,000
200,000
250,000
300,000
350,000
Updates per second
Read replica lag in milliseconds
Read replica lag
Aurora
RDS MySQL;;30,000 IOPS (Single AZ)
Updates persecond
Amazon Aurora
RDS MySQL30K IOPS(single AZ)
1,000 2.62 ms 0 s
2,000 3.42 ms 1 s
5,000 3.94 ms 60 s
10,000 5.38 ms 300 s
Write workload250 tablesQuery cache on for Amazon Aurora, off for MySQL (best settings)
What if your app is write-heavy?
Challenge: You will eventually hit the write throughput or storage limit of the master node
Solutions:• Federation (splitting into multiple DBs based on function)• Sharding (splitting one data set up across multiple hosts)
Database federation• Split up databases by function/purpose
• Harder to do cross-function queries
• Essentially delaying the need for something like sharding/NoSQL until much further down the line
• Won’t help with single huge functions/tables
Forums DB
Users DB
Products DB
Sharded horizontal scaling
• More complex at the application layer
• ORM support can help• No practical limit on scalability
• Operation complexity/sophistication
• Shard by function or key space
• RDBMS or NoSQL
User ShardID
002345 A002346 B002347 C002348 B002349 A
Shard CShard B
Shard A
NoSQL data stores
• Trade query & integrity features of Relational DBs for– More flexible data model – Horizontal scalability & predictable performance
DynamoDBProvisioned read/write performance per table
Massive and Seamless Scale
• Distributed system that can scale both reads and writes– Sharding + Replicas
• Automatic partitioning:– Data set size growth– Provisioned capacity increases table
Low provisioned throughput
TablePartition
SSD
Region
Illustrative diagram only
Availability ZoneAvailability Zone Availability Zone
ReplicaPartition
SSD
ReplicaPartition
SSD
Increased provisioned throughput
Illustrative diagram only
Region
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
TablePartition
SSD
High provisioned throughput
Region
Illustrative diagram only
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
Table
Partition
AWS Marketplace & Partners Can Help
• Find, research, buy software• Aligns with EC2 usage model • Launch in minutes• Marketplace billing integrated into your AWS account
• 20+ categories
Learn more at: aws.amazon.com/marketplace
Amazon Simple Queuing Service (SQS)
Tight coupling
• Place asynchronous tasks into Amazon SQS• Respond quickly to end users• Protects backend systems from spikes• Process at own pace
• Protect end users from backend problems• Item will be processed eventually
SQS
Get Message
Back End EC2 Instance
Put Message
Front End EC2 Instance
Decoupling in action
Loose coupling
Q
Upload photo Resize photo
Upload photoResize photo
EC2 Instances
Amazon SQS
EC2 Instances
Decoupling in action
Loose coupling
Q
Upload photo Resize photoUpload photo Resize photoUpload photo Resize photo
Upload photoResize photoResize photoResize photo
EC2 Instances
Amazon SQS
EC2 Instances
Event-Driven Compute in the Cloud
Lambda functions: Stateless, request-driven code execution• Triggered by events in other services:
• PUT to an Amazon S3 bucket• Write to an Amazon DynamoDB table• Record in an Amazon Kinesis stream• Amazon SNS Message received• Changes in Amazon Cognito data
• Makes it easy to…• Transform data as it reaches the cloud• Perform data-driven auditing, analysis, and notification• Kick off workflows
Data Triggers: Amazon DynamoDB
AWS LambdaAmazon DynamoDBTable and Stream
Send SNS Push notifications
Update another table
Dynamic content generation based on incoming news text
and images
Real time log processing for
prediction analytics
Thumbnailinginstallation site photos
for mobile use
Real time processing and recording of inbound traffic from
a range of social media platforms
Large scale distributed search across blog
content
Operational analytics and real time troubleshooting
Introducing the AWS API Gateway
Internet
Mobile Apps
Websites
Services
API Gateway
AWS Lambda functions
AWS
API Gateway Cache
Endpoints on Amazon EC2 / Amazon Elastic
Beanstalk
Any other publicly accessible endpoint
Amazon CloudWatch Monitoring
Startups without Servers
Upcoming Session at the AWS Pop Up Loft
Thursday 17th September, 11.00Thursday 1st October, 10.00
Experiment and collect data
• Build an MVP• Run A/B testing• Analyze user behavior• Iterate• Get insights about your customers
Data Produced
Available for Analysis
Gartner: User Survey Analysis: Key Trends Shaping the Future of Data Center Infrastructure Through 2011 IDC: Worldwide Business Analytics Software 2012–2016 Forecast and 2011 Vendor Shares
Three Types of Data Analytics
Retrospectiveanalysis and reporting
Here-and-nowreal-time processing and dashboards
Predictionsto enable smart
apps
Amazon Kinesis Amazon EC2
Amazon DynamoDBAWS Lambda
Amazon Redshift Amazon RDS Amazon S3Amazon EMR
AWS Marketplace
Amazon Machine LearningAmazon EMRAWS Lambda
Amazon Redshift Architecture
• Leader Node– SQL endpoint– Stores metadata– Coordinates query execution
• Compute Nodes– Local, columnar storage– Execute queries in parallel– Load, backup, restore via
Amazon S3;; load from Amazon DynamoDB or SSH
• Two hardware platforms– Optimized for data processing– DW1: HDD;; scale from 2TB to 1.6PB– DW2: SSD;; scale from 160GB to 256TB
10 GigE(HPC)
IngestionBackupRestore
SQL Clients/BI Tools
128GB RAM
16TB disk
16 cores
Amazon S3 / DynamoDB / SSH
JDBC/ODBC
128GB RAM
16TB disk
16 coresCompute Node
128GB RAM
16TB disk
16 coresCompute Node
128GB RAM
16TB disk
16 coresCompute Node
LeaderNode
Amazon Redshift Node Types
Dense Storage
DW1.XL
15 GB RAM
2 TB disk
2 vcpus
Single Node (2 TB)
Cluster 2-32 Nodes (4 TB – 64 TB)
XL XL XL XL XL XL XL XL
XL XL XL XL XL XL XL XL
XL XL XL XL XL XL XL XL
XL XL XL XL XL XL XL XL
XL
Amazon Redshift Node Types
Dense Storage
DW1.8XL
120 GB RAM
16 vcpus
16 TB disk
Cluster 2-100 Nodes (32 TB – 1.6 PB)8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
Amazon Redshift Node Types
Dense Compute
DW2.L
15 GB RAM
160 GB SSD
2 vpus
Single Node (160 GB)
Cluster 2-32 Nodes (320 GB – 5 TB)
L
L L L L L L L L
L L L L L L L L
L L L L L L L L
L L L L L L L L
Amazon Redshift Node Types
Dense Compute
DW2.8XL
244 GB RAM
32 vcpus
2.5 TB SSD
Cluster 2-100 Nodes (5 TB – 256 TB)8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL 8XL
AWS bootcamp: Building a Big Data Platform on AWS
Free Training at the AWS Pop Up Loft
2nd October 10.00
It is cheap to get started on AWSHow do successful startups save more as they
grow and extend their runway?
Stay Lean!
Amazon EBS standard volume prices are lowered up to 50% for both storage and I/O requests.
January 21, 2014
50%Amazon is reducing prices for Amazon ElasticCache cache nodes by an average of 34%.March 26, 2014
34%Amazon S3: We are reducing prices for Standard and Reduced Redundancy Storage, by an average of 51%.
March 26, 2014
51%
We’ve announced price reductions 42* times since our inception in 2006. Recent price drops included…
*as of April 1, 2014
Main cost-saving principles
1. Turn off the lights2. Use Auto Scaling3. Use the newer instance types4. Use the right instances for your workload5. Use Reserved Instances for predictable workloads6. Use Spot Instances for async workloads7. Leverage Amazon S3 storage classes8. Use Glacier for archival9. Serve content through Cloudfront10. Offload your architecture
Amazon Route 53DNS serviceNo limit
Availability Zone a
RDS DB instance
ElastiCachenode 2
Availability Zone b
S3 bucket forstatic assets
www.example.com
Elastic LoadBalancing
RDS DBstandby
ElastiCachenode 3
RDS read replica
RDS read replica
DynamoDB
RDS read replica
ElastiCachenode 4
RDS read replica
ElastiCachenode 1
CloudSearchLambdaSES SQS
A quick review• Keep it simple and stateless• Make use of managed self-scaling services• Multi-AZ and AutoScale your EC2 infrastructure• Use the right DB for each workload • Cache data at multiple levels• Simplify operations with deployment tools
Next steps?READ! • aws.amazon.com/documentation• aws.amazon.com/architecture• aws.amazon.com/start-ups• aws.amazon.com/training
ASK FOR HELP!• forums.aws.amazon.com• aws.amazon.com/support