AWS

  • AWS,  性能,  技术

    AWS back-of-envelope latency measure

    Network Roundtrip latency between two instances in the same AZ: sub-millisecond Roundtrip latency between two instances in a different AZ in the same Region: single-digit millisecond Data Transformation costs money. DynamoDB is cross-region replication by default so I assume normally it won’t cost money Data in/out ALB may not cost money if they are in same VPC (not sure) Service DynamoDB: Single-digit millisecond RDS: Single-digit millisecond Redis: sub-millisecond E2E The following data come from real traffic; and since our ECS is multi-region so the data includes traffic between different AZs. EC2 to Salesforce: p95 1s p50 0.6s (upsert) EC2 to DynamoDB: p95 around 20ms p50 20ms (read&write) EC2 to RDS:…

  • AWS,  技术

    AWS Technology Usage

    Athena + S3 Tracking information. Cheap to save and pay on-demand DynamoDB Fast access. Known query pattern (Partition Key, Sorting Key). Scale up automatically if partition it right. TTL should be considered and dump historical data out. (how?) SQS RDS Elastic Cache Athena ECS Load Balancer Query S3s by SQL (Presto).

  • AWS,  技术

    AWS Service花费的潜在提高空间

    用AWS Service也有3,4年的时间时间。对于花费我觉得还是有挺大的提高空间. ECS中采用Spot instance。 DynamoDB的花销应该还可以优化。历史数据应该可以设置TTL清除。这个应该非常简单。减少不必要的write 访问。 Redis的使用可以减少,可以用DynamoDB 减少ECS中instance的数量,采用auto scaling。 更好的平衡ec2 instance的cpu,memory的数量和每一个tasks的需求。保证每一个ec2 instance都被合理的利用。 其实这些东西很多都很简单,但是没有做的原因是从领导就没有强有力的推动这些东西。推动的人技术很弱,没办法找到好的切入点。当然后来新的领导来了,鸡飞狗跳,大家都在离开,还有谁真的在乎呢?

  • AWS,  技术

    如何在AWS中提供API服务

    这里讲如何通过利用AWS提供的基础服务对外提供Service。从域名解析到Load Balancer,再到Docker Container的端口映射。 下面是结构图。 以下是几点说明: Loader Balancer 定义了internal的DNS Name (比如说:internal-daco-sbx08-102899950.us-west-2.elb.amazonaws.com ) . Route 53的 Hosted Zone里面的records就是把外部域名解析到内部的DNS Load Balancer分三种. Application Load Balancer 是HTTP级别的,Network Load Balancer是TCP级别的。 ALB可以做端口映射,并根据http header(上面的例子是Host),把请求分发到Target Group. Target Group定义了外部的端口,然后管理外部端口到instance的端口。通常target group的端口和instance的端口是一样的(如果在task definition也就是docker container里面映射了外部端口),也可能不一样(如果没有映射). Target Group, Service是1:1映射。Target Group会提供health check定时check是不是健康。Task内部实现约定API,做实际check. ECS, ASG, Lauch Configuration协同工作,各司其职,提供服务和scaling,monitor等各种管理。 疑问 貌似没有配置load balancer的数量。难道这里从来不会是系统瓶颈? 关于Target Group的外部端口和docker container(task)的内部端口是一对一映射,还是随机映射,而让target group自己管理,不知道哪个是best practice。

  • AWS,  技术

    AWS 花费知多少

    很久没有关注AWS的花费了,一个不相干的会忽然让我想起来可以去看一下。 下面是公司一个单独服务的一个月的花费: DynamoDB在项目中就是存储一些简单的audit,花费却是最多的一项。写花了7k多,而读只是185.说明存了却没用😂。 EC2提供基本服务,用得多倒是也正常。ElastiCache其实有点浪费了,很多东西其实可以用其他方式存取,DynamoDB应该可以满足大部分的需求。DynmoadDB的存储挺贵的,应该可以删掉90%。RDS数据库应该也算是相对合理。 EC2 Transfer是跨region的花费,其实应该可以避免的。 所有服务的参考: