吐槽一下公司的一个项目的 Deployment
项目是一个 Pixel Server + Near Realtime Processing (Storm) + Data API。
听起来好像很复杂的样子,其实 Pixel Server 就是放 Tracking Pixel 的,做数据收集用途。 Pixel server 把 pixel log 即时发送到 SQS;Storm 把数据从 SQS pick up 起来,做一些分析处理,然后写入 DynamoDB 中。前端的代码再从 Data API 读取数据。
公司的 AWS VPC 做得比较复杂,而且有很多安全规定。譬如所有的内部服务器不能直接访问 internet 要经过代理;而服务被用户浏览器访问的时候也不是直连的,而是经过一个反向代理。
这个项目十分的独立,根本不会跟公司任何内部服务器有接口。数据都是用 AWS 服务,所以完全是可以放在一个新的单独的 VPC 中独立去部署的。公司做部署的人不同意,说这是 CXO 的意见。我当然识趣,也就不去 fight 了。
通过 AWS 有 auto scale 的功能,App 的 TPS 的确可以线性扩展。也达到我们的设计预期。这点是满意的。
说了那么多,槽点在哪儿呢?通过 outbound proxy 需要 5ms,通过 reverse proxy 需要 5ms,我们的应用白白被扣了 10ms。10ms 的确没多少,但是 proxy 都是需要花钱的。如果应用 TPS 增加 ,outbound 跟 reverse proxy 都要 scale up。
如果没有 outbound 跟 reverse proxy,支持 600tps 可能需要 8 台small instance 就可以了。这样就额外又需要8台server,4台 reverse 4 台 outbound proxy。
个人并不太反感 reverse proxy,reverse proxy 还是能减轻 App 的连接数负担的,虽然应用的是非同步IO,连接数增大内存开销并不会显著增加。
感觉公司似乎对于这些开销不敏感,之前做的小公司,废了半天口舌才搞一台 small instance 啊 。