写点什么

不使用 EC2 或 Kubernetes:看 PostNL 如何构建纯 Serverless 架构

作者:Rafal Gancarz

  • 2024-11-11
    北京
  • 本文字数:1631 字

    阅读完需:约 5 分钟

不使用 EC2 或 Kubernetes:看 PostNL 如何构建纯 Serverless架构

PostNL 分享了其从外包 IT 项目交付向内部产品交付能力转变过程中的一些见解和指导建议。通过采用以无服务器服务为主的云原生技术,该公司在生产效率和市场响应能力方面得到了显著提升,与此同时,在运营方面的成本也有所降低。


PostNL 是比荷卢经济联盟(比利时、荷兰、卢森堡)最大的物流公司,自 1799 年起开始运营。2012 年,该公司承诺实施 100% 云战略。随后,为了构建具有竞争力的物流软件,该公司决定将所有软件交付工作交由公司内部团队完成,而不再依赖现成的产品。


为了帮助构建所需的内部软件交付能力,公司领导层决定在标准化和最佳实践应用方面制定明确的指导原则和保障措施。同时,公司希望让工程团队参与进来,在标准和指导原则的制定方面发挥作用。并且,在不影响整体软件交付和云战略的情况下,工程团队在诸多领域都可以自由选择。


Luc van Donkersgoed 是 PostNL 的首席工程师,也是亚马逊云科技的 Serverless Hero。他介绍了他们在公司采用的企业框架内选择技术和工具解决方案的模式:


[……] 在 PostNL,技术、产品和服务按照 “固定、灵活、自由 ”的模式进行分类。在这种模式下,“固定”类包含在整个组织内已经标准化的主题。“灵活”类包含各种可供选择的产品、服务和标准。团队可以自由采用这个范围内的任何解决方案。“自由“类包含所有其他的主题。在这一类中,团队可以根据自己的预算、架构和经验自由决定使用什么解决方案。


在战略层面,PostNL 决定选择亚马逊云科技作为其公有云提供商,并且只使用云原生技术,特别是无服务器服务。为了执行这一决策,公司创建了亚马逊云科技平台团队,并命名为卓越云中心(CCoE),协助工程团队利用亚马逊云科技的云服务,同时也防止使用 EC2 等不受欢迎的服务。


该公司决定采用无服务器技术,这主要是考虑到公司应用程序工作负载的多变性,包括日模式和周模式,以及从 11 月黑色星期五开始到次年情人节结束的高使用率假期。PostNL 之所以选择在 AWS 上采用无服务器技术栈来满足业务需求,主要是为了利用亚马逊云科技的弹性定价、轻松扩展能力和云平台来解决最棘手的问题。



DynamoDB 的自动扩展能力(来自:PostNL 工程博客)


考虑到应用程序流量的多变性,PostNL 将 DynamoDB 作为其主要的数据库解决方案,并配置了自动扩展功能,以便可以根据负载情况扩展预配置的容量,同时又留有足够的余量来应对任何意外的流量激增。AWS Lambda 的轻松扩展能力也使得该公司大为受益,其调用次数每天都有波动,并且每月都有所不同。工程团队在 Lambda 中使用了多种语言技术栈,包括 TypeScript、C#、Rust 和 Python,尽管该公司也允许使用 Java 运行时。



Lambda 函数调用(来自:PostNL 工程博客)


PostNL 的无服务器架构还利用了亚马逊云科技的许多其他无服务器服务,包括 Step Functions、API Gateway 和 SQS。在特定情况下,当首选的无服务器选项无法满足需求时,团队也可以使用其他服务,如 RDS、Neptune、Timestream 或 Fargate。


从依赖外部合作伙伴转向内部开发团队并采用无服务器技术栈,PostNL 减少了管理费用,提高了生产效率,降低了运营成本。然而,这一转变也面临一些挑战,例如需要提高工程人员的技能并为初级开发人员提供支持。此外,考虑到构建无服务器解决方案的学习曲线,该公司选择了一种灵活的方法,允许团队使用 RDS 或 Fargate 等托管服务创建解决方案,而不是一成不变地纯粹使用无服务器选项。


在博文的最后,Luc van Donkersgoed 与希望采用无服务器技术的企业分享了自己的见解。作者建议,如果无服务器能够满足业务目标,就可以考虑采用无服务器,并且要从制定指导原则入手。他强调了基础设施配置、CI/CD、可观察性和安全性方面的自动化需求。此外,企业应该拥抱云平台,而不是仅仅局限于通过 lift-and-shit 方法来采用云,并且应该彻底分析其云架构的总拥有成本。最后,van Donkersgoed 强调了不断学习的重要性,尤其是考虑到云提供商提供新特性的速度。


查看原文链接:

https://www.infoq.com/news/2024/10/postnl-serverless-enterprise/

2024-11-11 08:058359

评论

发布
暂无评论
发现更多内容

2022-10-18:以下go语言代码输出什么?A:panic;B:编译错误;C:moonfdd1。 package main import ( “fmt“ “net/url“ ) // 其中

福大大架构师每日一题

golang 福大大 选择题

JDBC学习

Studying_swz

后端 10月月更

上海推动普惠金融顾问制度落地,金融服务云平台或成为普惠金融的服务中枢

易观分析

金融

Linux中的目录结构是什么样的?有人说像“树”,你觉得呢

wljslmz

Linux 10月月更 目录结构

如何实现多个Git仓库同步

Appleex

git

Go slice切片详解和实战:make append copy

王中阳Go

Go golang 学习方法 #go 10月月更

面试突击91:MD5 加密安全吗?

王磊

你的公司需要数据中台吗?

久歌

架构

深聊Nodejs模块化

coder2028

node.js

java部分基础总结

Studying_swz

java 编程 10月月更

图像算法助力提效转转商品审核

转转技术团队

图像处理

nodejs实现jwt

coder2028

node.js

JavaWeb(一)

Studying_swz

后端 10月月更

All Eyes on Docs! 练就火眼金睛,就来StarRocks 极客营

StarRocks

数据库

ZooKeeper数据模型

穿过生命散发芬芳

zookeeper 10月月更

日志管理与分析系统的基本功能

阿泽🧸

日志管理 10月月更

翟佳:StreamNative 组织构建之路丨声网开发者创业讲堂 • 第 5 期

声网

技术管理 人工智能’

高效能敏捷交付团队反思:特性团队(FeatureTeam)+Scrum

laofo

DevOps 敏捷 研发效能 持续交付 敏捷研发

数据中台前世今生(三):互联网下半场+数字化转型=数据中台

雨果

数据中台

webpack高级配置

Geek_02d948

webpack

如何通过cmd怎么打开计算机管理

Appleex

windows cmd

从AI作画到AI做视频,这一跳改变了什么?

脑极体

Go基础数据类型使用实战:int float bool

王中阳Go

Go golang 学习方法 golang 面试 10月月更

你用Go写过中间件吗?带你用Go实现【操作日志中间件】

王中阳Go

golang 高效工作 学习方法 #go 10月月更

Spring Boot「08」设置和使用 Property

Samson

Java spring 学习笔记 spring-boot 10月月更

一文彻底读懂webpack常用配置

Geek_02d948

webpack

Webpack构建速度优化

Geek_02d948

webpack

Vue组件入门(八)v-model + 自定义参数

Augus

Vue 3 10月月更

Zebec 以 Layer2 的形式推出 Zebec Chain,流支付新时达来临了

西柚子

挑战 30 天学完 Python:Day6 数据类型 - 元组tuple

MegaQi

Python 挑战30天学完Python 10月月更

Go 语言入门很简单:Go 语言的错误处理

宇宙之一粟

异常处理 错误处理 Go 语言 10月月更

不使用 EC2 或 Kubernetes:看 PostNL 如何构建纯 Serverless架构_架构_InfoQ精选文章