亚马逊AWS官方博客
三星公司利用 Fargate 与 ECR 构建高安全性开发者门户
Original URL: https://amazonaws-china.com/cn/blogs/architecture/samsung-builds-a-secure-developer-portal-with-fargate-and-ecr/
本文由三星公司提供。
三星开发者门户(Samsung Developers)是三星公司打造的在线门户,旨在为希望使用三星产品构建应用程序的开发人员、IT经理以及学生用户提供技术文档、开发者博客与API指南。这套开发者门户中又包含三大用户频道:
- SmartThings门户,为物联网开发者人员提供服务,也是我们最早上线的门户。最初开发时我们选择了Amazon Elastic Container Service (ECS)与之配套,但现在已经迁移至AWS Fargate。
- Bixby门户,该门户使用AWS Fargate开发,专为Bixby胶囊开发者提供服务
- Rich Communication Services(RCS)门户,使用AWS Fargate开发,用于支持新的移动消息收发标准。
三星电子云运营集团(SECOG)于2017年和2018年的三星开发者大会上揭开了这三个门户的面纱。
三星在ECS上开发了SmartThings门户,项目的使用体验非常好。ECS能够提供适当的抽象级别,也允许我们对底层实例加以适当控制。在re: Invent 2017大会上了解到AWS Fargate之后,我们迫切希望加以尝试。事实上,Fargate在Amazon ECS用户群体中也确实大受欢迎。Fargate不仅能够显著提升运营效率,同时也消除了服务器与集群的管理需求,这意味着我们可以将精力集中在运行容器以及新功能的发布上。
2018年,我们的工程技术团队开始将所有系统迁移至Fargate。由于Fargate公开了与ECS相同的API与端点,因此整个迁移体验非常顺畅,运营效率也立即得到了提升。在使用Fargate之前,三星往往需要指定管理员与操作员管理门户上的Web服务。但在迁移至Fargate之后,我们不再需要指定专项管理员,借此节约了运营成本并提高了开发效率。如今,我们的运营与管理团队能够将更多精力投入到精心设计日志记录与活动监控当中,不断提升整体服务的可靠性、安全性与性能。
三星开发者门户使用基于微服务的体系结构构建,用于向我们的客户提供技术文档、API文档以及支持渠道。为了实现功能交付,开发者门户需要经常更新许多不同的Fargate服务。每天在发布新内容时,技术作家们都会激活这些更新。为了满足此类业务需求,三星电子云运营集团(SECOG)与技术合作伙伴TecAce通力合作,研究如何实现服务的敏捷、高效与最低运营开销的运行方式。在接触到Fargate之后,他们很快开始进行概念验证,并根据其验证结果确信Fargate可以满足他们的需求。
关键服务要求
在迁移至Fargate的过程当中,我们意识到这套门户网站必须符合SECOG与InfoSec标准化的各项关键要求,具体包括:
- 安全性:服务运营体系必须拥有控制各项安全因素的能力。
- 可扩展性:门户服务面向公开使用三星产品的开发人员,因此门户本身必须能够应对流量激增,弹性扩缩。
- 易于部署:能够轻松将技术文档推送至实际环境当中,帮助技术作家轻松编辑。
- 可控性:服务应该能够对容器选项加以控制,例如端口映射、内存大小等等。
随着我们对AWS Fargate的深入研究,SECOG与Infosec团队确信了这项服务能够切实满足以上关键要求。
构建与部署流
SECOG与TecAce决定使用AWS Fargate与Amazon Elastic Container Registry (ECR)服务满足开发者门户提出的一系列关键要求。
图一:架构图
我们的系统架构非常简单。当需要发布新的功能或更新文档时,我们可以将新的容器镜像上传至ECR,而后将代码发布至生产环境当中。而在每个业务应用的设计当中,我们都结合使用了应用程序负载均衡器(ALB)、Fargate以及Route 53。
Fargate,越用越轻松
在使用Fargate之后,三星各部门负责人纷纷表示体验良好。三星开发者门户由多支团队负责运营与配置,各团队在全球范围内分布了开发、运营以及质量保证等岗位与职责。每个团队都需要一套独立的部署环境进行测试。在使用Fargate之前,我们需要指定大量工程师与开发者来运营Web服务基础设施。但Fargate显著简化了这一流程,保证各个团队只需要创建一套新的容器镜像并将其部署至ECR。接下来,将镜像部署至Fargate上的测试环境,即可快速完成功能验证。通过这一过程,我们得以大大减少开发者与操作人员耗费在基础设施管理与配置任务上的时间。
借助Fargate,我们得以极大提升生产部署频率,并保证团队能够在Samsung Developers门户中处理其他产品。此外,我们不再需要担心新镜像的部署与创建。我们只需要创建一份新的修订版,而后设置容器内存与端口即可。只要通信功能与容量一切正常,我们即可选定目标Fargate集群、实施部署并完成功能上线。
Fargate服务的计算容量还可通过Autoscaling轻松加以扩展。因此,一切部署任务都能在几分钟之内执行完成。此外,我们不再需要由系统管理员或操作员管理集群、不存在EC2实例、也不需要用于维护服务的Docker Swarm。以此为基础,我们得以集中精力改进Samsung Developers功能、改善最终用户体验。
目前,在向三星开发者门户部署并开放一套环境之后,我们还会根据Amazon CloudWatch指标监控其运行状况并适时发出警报。再有,我们还为门户建立起良好的可用性与可靠性,并将每月运营成本降低约44.5%(仅计算成本)。
凭借着在Fargate方面获得的良好体验,我们决定将其他服务陆续从ECS迁移至Fargate。总体而言,我们的团队在使用Fargate的过程中获得了良好回馈并积累起丰富的经验。Fargate提供的极高自动化水平,不仅帮助我们加快响应速度,同时也让我们的开发与资源运营变得更具经济效益。我们认为,开始使用和熟悉Fargate可能要花费一些时间,但是一旦Fargate的环境建立起来以后,我们就能很容易的使用Fargate提升业务的敏捷性和门户的可扩展性。
关于三星
三星是韩国跨国企业集团,总部位于首尔三星镇。三星旗下拥有众多相关企业,大多数被并入三星品牌之内。三星也是韩国国内规模最大的企业集团。