Slides from a talk I gave to the AWS Denver/Boulder meetup on 13JUL17. Included is a high-level description of a 'hello world' app I created using the AWS ecosystem. Also included are links to useful resources difficult to find on the internets.
4. |
Background
4
An application for behavioral pattern analysis based on
historical customer journeys
Allows users to discover net new areas of opportunity
Provide users with specific recommendations to increase or
decrease an outcome
What is
Trace?
6. |
MVP Requirements
6
1. CRUD App that is
• Serverless
• Use an AWS Database solution
• S3 for the website files
• HTTPS
• User Authentication
• REST endpoints
1. My additions
• Slack Integration
• Responsive
11. |
Architectural Overview
11
• Amazon Route 53 is a highly available
and scalable cloud Domain Name
System (DNS) web service
• You can also use Route 53 as a domain
registrar
• It integrates with other AWS services in
a way third-party providers can’t (which
is important, trust me!)
13. |
Architectural Overview
13
• Amazon Simple Storage Service (Amazon S3) is object
storage with a simple web service interface to store and
retrieve any amount of data from anywhere on the web.
• It is designed to deliver 99.999999999% durability, and
scale past trillions of objects worldwide.
• This is where you’re going to use as your static website
host.
• You can also use S3 to store credential-protected assets
15. |
Architectural Overview
15
• Amazon CloudFront is a global content
delivery network (CDN) service that
securely delivers data, videos,
applications, and APIs to your viewers
with low latency and high transfer
speeds.
• This is how you’re going to set up
HTTPS and deliver your content to end
users.
17. |
Architectural Overview
17
• Amazon API Gateway is a fully managed service that
makes it easy for developers to create, publish, maintain,
monitor, and secure APIs at any scale.
• This is where you will connect REST endpoints to Lambda
functions.
• This is also about where you will want to sledge-hammer
your laptop (Swagger incompatibilities, CORS, etc)
19. |
Architectural Overview
19
• AWS Lambda lets you run code without provisioning or
managing servers.
• You pay only for the compute time you consume - there is
no charge when your code is not running.
• This + API Gateway is how you can replace a traditional
server.
• When deploying as zip file, be mindful to not include the
parent folder in the archive!
21. |
Architectural Overview
21
• Amazon DynamoDB is a fast and flexible NoSQL database
service for all applications that need consistent, single-
digit millisecond latency at any scale.
• SUPER easy to work with
• No enforced record schema beyond columns defined as
keys
• Note that in FoxPong, player profile data is not serialized
here.
DYNAMO DB
23. |
Architectural Overview
23
• Amazon Cognito lets you easily add user sign-up and
sign-in to your mobile and web apps.
• With Amazon Cognito, you also have the options to
authenticate users through social identity providers such
as Facebook, Twitter, or Amazon, with SAML identity
solutions, or by using your own identity system.
• The client end of this will make you want to burn villages,
trebuchet kittens into active volcanoes, and drink yourself
into a stupor.
25. |
Architectural Overview
25
• AWS Identity and Access Management (IAM) enables you
to securely control access to AWS services and resources
for your users.
• Using IAM, you can create and manage AWS users and
groups, and use permissions to allow and deny their
access to AWS resources.
• This is how you’re going to tell AWS who gets to do what
with your stuff.
26. |
Helpful Links
Total Cost of Ownership Calculator
– https://aws.amazon.com/tco-calculator/
Monthly Cost Calculator
– https://aws.amazon.com/blogs/aws/estimate-your-c/
boto3 (python AWS library) docs
– http://boto3.readthedocs.io/en/latest/
How to create a deployment package for a Lambda Function
– http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
An explanation as to why you can’t put cloudfront in front of API Gateway and how to get around it
– https://shannonlalblog.wordpress.com/2016/05/28/first-blog-post/
Javascript AWS SDK Developer Docs
– http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS.html
How to get a signed url for s3 (because I couldn’t find it documented anywhere else!)
– https://github.com/aws/aws-sdk-js/issues/891
26