The document discusses building a mobile application on AWS that is location-centric and connects with the user's mobile device. It describes using AWS services like Elastic Beanstalk, EC2, S3, DynamoDB, SQS, and CloudFront to develop a minimum viable product within 2.5 days that demonstrates key AWS concepts. The core architecture involves using Elastic Beanstalk for application deployment, EC2 and EBS for compute and storage, DynamoDB for session storage, SQS for pushing content, and CloudFront for content delivery. Visual Studio is used to develop and publish the application directly to AWS.
2. The Vision….
Build an AWS based, Scalable Mobile application that is location
centric and connects with the user’s mobile device personally,
Which can be ubiquitously accessed via the cloud
3. The Reality….
Minimum Viable Product (MVP)
=
Fixed amount of time* to build it and to demonstrate key
AWS concepts… services … and squeeze into a 45 minute
presentation
*Approx: 2.5 <interrupted> days of coding effort, YMMV
4. Your Application
Amazon Global Physical Infrastructure
(10 Geographic Regions, Multiple Availability Zones, 51 Edge Locations)
Parallel
Processing
Amazon Elastic
MapReduce
Content
Delivery
Amazon Cloud Front
Messaging
Amazon SNS
Amazon SQS
Email
Amazon Simple Email
Service (SES)
Payments
Amazon DevPay
Amazon Flexible Payment
System (FPS)
Workforce
Amazon Mechanical
Turk
High Level Building Blocks
Compute
Amazon EC2
Auto Scaling
VM Import/Export
Storage
Amazon S3
EBS, Glacier,
Import/Export
Network
Amazon VPC
Elastic Load Balancer
Route 53
Database
Amazon RDS
Simple DB, Dynamo DB,
ElastiCache
Low Level Building Blocks
Authentication & Authorization
Amazon IAM (inc MFA)
Monitoring
Amazon CloudWatch
Deployment & Automation
Amazon Elastic Beanstalk
Amazon CloudFormation
Cross Service Features
Libraries and SDKs
.Net / Java etc
Web Interface
Management Console
Tools
Visual Studio .Net / Eclipse Plugin
Command Line Interface
Tools to Access Services
We’ll Use these Services
Today
5. Reasoning Behind Service Usage
Solution Requirement AWS Service(s)
DNS Resolution Route 53
Networking Virtual Private Cloud (VPC by default)
Load Balancing to Meet Demand Elastic Load Balancer (ELB)
Auto Scaling Groups (ASG)
CloudWatch Metrics
Windows Servers for ASP.Net Elastic Compute Cloud (EC2) Instances
Application Deployment Directly from Dev Tools Elastic Beanstalk (also helps with auto-scaling)
Content Delivery Network CloudFront
Reliable Storage Elastic Block Store (EBS) for Instances & Simple Storage
Service (S3)
Database (for Session Store) DynamoDB (No SQL)
Security Identity and Access Management (IAM)
Push Uploaded Content into a future backend system yet to be
specified
Simple Queue Service (SQS)
9. AWS Elastic Beanstalk
• AWS Elastic Beanstalk allows for automated deployment of applications by
configuring its run-time environment (inside the AMI)
– Upload your application package
– Beanstalk handles the deployment details of capacity provisioning, load balancing, auto-scaling,
application health monitoring, and DNS CNAME
• Environment is available in minutes at a customized URL
(e.g. http://myapp.elasticbeanstalk.com/)
• Elastic Beanstalk supports ASP.Net, Java, Node.Js, PHP, Python & Ruby
• Think about it as a “Managed Runtime Container as a Service”
16. …. And you get something like this!
Visual Studio
http://lunchandlearn.elasticbeanstalk.com
17. DNS Setup For Application
Production
Development Route 53
Route 53
lunchandlearn.stanski.me
(A Record to IP)
Development Server on
AWS
lunchandlearn.stanski.me
(CNAME to)
lunchandlearn.
elasticbeanstalk.com
(CNAME to)
PublicELB-143817XX.ap-southeast-
2.elb.amazonaws.co
m
19. ASP.Net Session State Management Considerations for
Scaling Out
• ASP.Net uses a provider model to enable pluggable providers (DLLs) and settings
in the Web.Config file
• In-Proc : in memory on the web server (default OOBE)
• Out-of-Proc : on another server ß Need this for “Scale Out”
– Usually Microsoft SQL Server on a dedicated server
• AWS provides additional Session State Options:
1. MySQL data provider via RDS (3rd party on Codeplex)
2. MemcacheD (aka ElastiCache)
3. AWS DynamoDB
http://aws.typepad.com/aws/2012/09/managing-aspnet-session-state-with-dynamodb.
html
20. Dynamo DB
• DynamoDB is a very fast, managed NoSQL database as a service
• Designed to store and retrieve any amount of data, and serve virtually any
level of request traffic
– Dial in the number of read and writes per second as needed by application
• All data items are stored on Solid State Drives (SSDs), replicated across 3
Availability Zones for high availability and high durability
• DynamoDB offloads the administrative burden of operating and scaling a
highly available distributed database cluster
21. NuGet integration in Visual Studio .Net
" Pre-packaged NuGet AWS tools can be installed to provide DynamoDB Session State Support
22. Changes to Web.Config file to enable
AWS DynamoDB Session State
" Security Tip: Create a custom IAM user to only allow access to DynamoDB
24. Static Web Content Management Strategy
• Static Content usually resides on the same web server as dynamic web
content
– E.g.. Jpegs, CSS, JS, GIFs etc
• Moving static content to dedicated “static content servers” can reduce
server loads
• On AWS this means smaller instances for EC2 and lower hourly cost
and using Simple Storage Service (S3)
• By using Route 53 DNS this can be changed without web application
disruption
25. Application HTML References to Static Assets
• Edit HTML content directly to reference fully qualified domain name to let
DNS resolve origin servers; OR
• Use Content Rewrites in the web server
– E.g. ASP.Net Content/HTTP Handlers
26. Amazon Simple Storage Service (S3)
• Amazon S3 provides a simple web services interface that can be used to store
and retrieve any amount of data, at any time, from anywhere on the web
• It is designed to make web-scale computing easier for developers by allowing
storage of Web accessible static content
" Allows for easy static website hosting (No EC2 Servers required)
" Designed for 99.999999999% durability and 99.99% availability of
objects over a given year
• Gives developers access to the same highly scalable, reliable, secure, fast,
inexpensive infrastructure that Amazon uses to run its own global network of web
sites
27. S3 Bucket Setup – Web Hosting Enabled
• DNS abstracts the actual storage location from web browser
28. DNS Setup for S3
Production
Development Route 53
Route 53
cdn.stanski.me
(A Record to IP)
Development Server on AWS
cdn.stanski.me
(CNAME to)
cdn.stanski.me.s3-website-ap-southeast-
2.amazonaws.com
Static Content Copy to S3
" DNS changes the underlying content origin systems
30. CloudFront : Content Delivery Network (CDN)
• CloudFront can be used to deliver your entire website, including
dynamic, static as well as streaming content using a global network
of edge locations
• Requests for your content are automatically routed to the nearest
edge location, so content is delivered with the best possible
performance
• It integrates with Amazon Web Services like EC2 & S3 to give
developers an easy way to distribute content to end users with low
latency, high data transfer speeds, and no commitments
32. CloudFront Origin
" CF Origin points to the S3 Bucket containing static content
33. DNS Setup for CloudFront
Development
Route 53
cdn.stanski.me
(A Record to IP)
Development Server on
AWS
Production
Route 53
cdn.stanski.me
(CNAME to)
CloudFront Name:
dx21lojdjnvls.cloudfront.net
S3 Origin: cdn.stanski.me.s3-
website-ap-southeast-
2.amazonaws.com
Static Content Copy to S3
" DNS abstracts the actual storage location from the web browser
35. Google API C# Snippet
" Using the Google API to convert GPS to Street information
36. Twilio API C# Snippet
• Using the Twilio .Net SDK to send a Text Message and make a Phone Call
37. Amazon Simple Queue Service
• Amazon Simple Queue Service (SQS) is a fast, reliable, scalable, fully managed
queue service – think MSMQ, RabbitMQ, JMS etc
• SQS makes it simple to decouple the components of a cloud application
• You can use SQS to transmit any volume of data, at any level of throughput, without
losing messages or requiring other services to be always available
• With SQS you can offload the administrative burden of operating and scaling a highly
available messaging cluster
• Used here to future proof your application: thumbnail images are pushed in the
LunchAndLearnQ
– This is to address the requirement of a “future application back-end-system”
38. SQS C# AWS SDK Snippet
• Create an SQS queue and Sending a Message into it…
39. AWS Web Console
• Queues can be managed from the web console
43. Expand your skills with AWS
Certification
Exams
Validate your proven
technical expertise with
the AWS platform
aws.amazon.com/certification
On-Demand
Resources
Videos & Labs
Get hands-on practice
working with AWS
technologies in a live
environment
aws.amazon.com/training/
self-paced-labs
Instructor-Led
Courses
Training Classes
Expand your technical
expertise to design, deploy,
and operate scalable,
efficient applications on AWS
aws.amazon.com/training