zoukankan      html  css  js  c++  java
  • [SAA + SAP] 10. Serverless Architecture

    SAA

    Case 1

    • User can get Authed by using Cognito
    • User need to access his own S3 folder, we can use Cognito to generate temp credentials by using STS, then clients are able to use temp credientials to store/retrieve file in S3

    Caching

    • We can cache on Database layer first, by using DAX

    • We can then cache on API Layer, by using API Gateway caching

    Summary

    • Using Cognito to generate temp credentials with STS to access S3 bucket with restricted policy. App users can directly access AWS resources this way. Pattern can be applied to DynamoDB , Lambda...
    • Caching the reads on DynamoDB using DAX
    • Caching the REST requests at the API Gateway level
    • Security for authentication and authorization with Cognito, STS

    Case 2

    • For users need to access static content globally, we can use S3 + CloudFront global distribution Edge location, so users in each region can access content in low letency
    • Using Global DyanmoDB Table to serve data globally
    • We can add caching for DynamoDB by using DAX

    Welcome Email

    • Once user registered, data was saved to DynamoDB, we can using DynamoDB Stream to invoke a Lambda function which has IAM role to send Email by using SES service.

    Thumbnail Generation

    • Client can upload image by using Pre-signed URL
    • We can optionally use ClondFront Transfer acceleration to speedup file upload process
    • Once file was uploaded, S3 notification trigger Lambda function to generate thumbnail and save into S3 bucket
    • Optionally, S3 can further trigger SQS or SNS 

    Summary

    • Static content being distributed using CloudFront with S3
    • Global DyanmoDB table to serve the data globally
    • (We could have used Aurora Global Tables)
    • We enabled DynamoDB Stream to trigger Lambda
    • Lambda function has IAM role to use SES
    • S3 can trigger SQS / SNS / Lambda to notify of events

    Case 3

    • Route 53 can create many records redriect to different IP addresses.
    • Can freely compose Serverless services to do the job

    Case 4

    • One Api Gateway resource can be used for user authoriztion, who can get access to the paid content
    • One Api Gateway can be used for CRUD content
    • Choose CloudFront Pre-Signed URL instead of S3 Pre-Sigend URL for better global acceleration

    Summary

    • Cognitor for authentication
    • DynamoDB for stroing users that are premium
    • 2 serverless apps: 1. permium user registration 2. CloudFront Signed URL generator
    • Content is stored in S3
    • Integrated with CloudFront with OAI for security
    • CloudFront can only be used using Signed URLs to prevent unauthorized users
    • What about S3 Signed URL? They are not efficient for global access

    Case 4

    Summary

    • No change to architecture
    • Will cache software update files at the edge
    • Software update files are not dynamic, they are static
    • Our Ec2 instaces are not serverless
    • But CloudFront is and will scale for us
    • Our ASG will scale not as much, and we'll save tremendously in EC2
    • We'll also save in availability, network bandwidh, cost etc
    • Easy way to make an existing application more scalable and cheaper!

    Case 5

    • IoT Core allows you to harvest data from IoT devices
    • Kinesis is great for real-time data collection
    • Firehose helps with data delivery to S3 in real-time (1 minute)
    • Lambda can help Firehose with data transformations
    • S3 can trigger notifications to SQS
    • Lambda can subscribe to SQS (optional, S3 notification can do as well)
    • Athena is a serverless SQL service and results are stored in S3
    • The reporting bucket contains analyzed data and can be used by reporting tool such as AWS QuickSight, Redshift...


  • 相关阅读:
    JDK1.8十个新特性
    问题:No more handles [Could not detect registered XULRunner to use]
    在未标记为正在运行时,调用了RunScript
    问题: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    常用数据库的JDBC 的URL形式
    Myeclipse插件的三种安装方式
    mysqlError: Illegal connection port value '3306>]'
    异常:Bad version number in .class file
    安装msi文件遇到错误code=2502 or 2503 win8
    spring使用RedisTemplate的坑Could not get a resource from the pool
  • 原文地址:https://www.cnblogs.com/Answer1215/p/15058189.html
Copyright © 2011-2022 走看看