Zalando推出STUPS,一个运行在AWS之上并符合审计合规性的PaaS

在microXchg 2016大会的一场演讲中,来自Zalando的演讲者为听众介绍了他们推出的一个适用于多个自治团队,并具备审计合规性的平台即服务(PaaS)产品,该产品是在Amazon Web Services(AWS)的基础上运行的。InfoQ近期与Zalando的一位云架构师Tobias Sarnowski进行了一次访谈,对于这个平台的更多技术细节进行了交流。

演讲的关键内容包括:随着一个工程性组织的发展,为了使开发工作做到同步扩张,关键在于实现具备自治能力的团队,并打造一个支持性的技术平台(PaaS);出于法律与问题诊断方面的原因,对该PaaS平台中产生的任何行为进行审计操作是十分必要的;确保公司里的每个人都能够对技术愿景(以及相关的“游戏规则”)达成一致和共识,这一点有助于实现一致的技术决策。

InfoQ:你好Tobias!感谢你今天能够抽空参与InfoQ的访谈。你能否介绍一下你自己以及Zalando STUPS这个平台?

Sarnowski:当然了。我是Tobias Sarnowski,在Zalando担任云架构师。Zalando是一个地处柏林的在线时尚平台,在整个欧洲还设立了几个办公室。我从2012年起加入Zalando。

STUPS是一系列工具与组件的合称,它是一个适用于多个自治团队、易于使用、并具备审计合规性的平台即服务(PaaS)产品,该产品是在Amazon Web Services(AWS)的基础上运行的。它本质上是一个AWS的插件,提供了一些对于IaaS的自定义抽象。除此之外,它还能够为部署的应用提供元数据服务、提供了基于Docker的部署工具、并为OAuth 2.0的身份凭证提供安全分布功能。

我的团队与我在2015年春季公开发布了STUPS,在那之前不久,Zalando技术部门刚刚实施了Radical Agility实践。Radical Agility的概念是基于Daniel Pink的著作《驱动力》(Drive)而产生的,它是一种技术组织的运作方式,提倡自治、精通、目标以及信任。从某种角度来说,STUPS是一种促进“Radical Agility”的前提条件。我们需要这样一种平台,让我们的工程团队能够真正地以自治的方式开展工作。

InfoQ:促使你们选择开发一个属于自己的平台,而不是利用某些现有的产品(例如Cloud Foundry、Kubernetes和Cisco Mantl)的动力是什么?

Sarnowski:我要澄清一点,STUPS并非一个独立的平台,它只是一个基于AWS的轻量级插件,这让我们能够最大程度地利用AWS上的全部产品,因为我们并不想束缚使用者的手脚。我们在一开始就设立了一个目标,让员工能够完整地利用原生AWS的各种功能。我们只是需要对某些部分加以限制,因为我们无法追踪这部分的行为,而各种内部与外部的审计过程又需要了解这些行为。谢天谢地,我们成功了!员工们仍然能够对他们的AWS账号进行管理操作,而几乎没有任何限制。

InfoQ:你为什么选择基于AWS,而不是基于GCP或其他平台(或者选择让STUPS不依赖于任何平台)打造STUPS?

Sarnowski:在云计算平台的功能性与成熟度方面,AWS是一种安全的选择。人们对于它的长处与诀窍已经熟知于心。它提供了各种丰富的工具,让我们能够快速地启动开发过程,而无需自行投入过多的精力。

在我们对AWS进行评估的同时,GCP还在逐步完善它的各种特性。但我们已经看到了GCP的巨大潜力,正打算对其进行进一步的研究。

STUPS并非一种平台独立的产品,而更像是一个AWS的插件,无法脱离AWS独立运行。它的作用是让我们以一种更符合Zalando标准的方式使用AWS服务。

InfoQ:有部分人认为你们创建的某些工具是在“重复发明轮子”,例如mint对应HashiCorp Vault、fullstop对应Gilt Cave、Senza则对应Ansible?你能否为我们分享一下团队在创建这些工具时的想法?

Sarnowski:STUPS这套工具并没有重复发明轮子,它让我们能够更完整地利用AWS提供的功能。举例来说,mint充分地利用了AWS IAM与S3服务以分布secret。这是一种非常轻量级的、极度灵活的使用AWS与S3的方式,我们也无需为此维护一套复杂的基础设施。Senza只是对AWS CloudFormation的一个轻量级封装而已,它同样能够让我们充分利用AWS产品的全力功能,而不是重新发明这些功能。

Taupage是我们的AMI工具,它与Senza一起为我们提供了一套自定义的部署方式。Taupage本身是我们用于在大规模环境中对Docker容器进行编排的方式。Docker是我们用于部署服务的格式,但每个容器都会有一个专用的服务器。

AWS的生态系统主要专注于每台服务器一个应用的模型,因此我们一开始就清楚:我们必须利用这一特点,才能够自然地利用各种特性,例如Auto Scaling Groups和Elastic Load Balancers服务所提供的特性。Senza提倡不可变部署的概念。对于应用程序的每个版本,我们都将创建新的CloudFormation栈。这种部署方式有着很高的可确定性,让我们能够放心地进行蓝/绿部署。

InfoQ:STUPS的开发有多长时间了,现在又有多少个生产环境中的服务运行在STUPS上呢?你是否有计划将所有的Zalando应用全部迁移至STUPS上?

Sarnowski:我们从2014年稍晚时间开始开发STUPS,从2015年5月起,每个Zalando团队都可以在生产环境中使用STUPS了。我们所有运行在AWS上的微服务以及有状态服务(PostgreSQL、Cassandra、Spark和Kafka)目前都运行在STUPS上。

是的,我们目前的计划是让所有应用都在STUPS上运行

InfoQ:在STUPS网站上,你提到“团队的全体成员具有相同的权限”以及“团队是自治的,可自行选择适合自己的技术”。这一点在实践中是怎样做到的,在技术层面和组织层面采取了哪些措施?

Sarnowski:在我们宣布采用Radical Agility的同时,我们也实施了五条“游戏规则”,以此作为团队在技术与组织层面上的准则。在技术层面,这些准则要求我们的所有服务都提供一套定义良好的REST API(原先由Swagger 2.0定义,目前改为OpenAPI 2.0)。我们还充分利用了能够实现大规模互联网服务的各种工具,例如通过DNS提供服务发现,用OAuth 2.0实现访问控制。这使我们的整体架构能够不依赖于个别的技术决策。

为了提高OAuth 2.0基础设施的可伸缩性,我们最近刚刚发布了一个“B计划”provider,能够对我们的服务进行伸缩。我们最大限度利用了OAuth 2.0,因为每个服务调用都必须进行认证与授权。这对于OAuth基础设施带来了很大的压力,而通用的各种OAuth provider无法在处理这么大负载的同时保证其响应速度。在OAuth上浪费的每一毫秒会不断地累积,对级联式的微服务调用造成很大的影响。

在B计划的设计中,我们将利用JWT,以一种去集中化的方式对token进行验证,以避免在token验证过程中产生一个巨大的单点故障。这也让我们能够将与token信息相关的终结点与应用进行本地部署(即部署在同一台服务器),以避免网络延迟问题,并将负载进行平均分布。

在团队内部的沟通上,我们正在实施目标与关键结果(OKR)模式。即使在这个层面上,团队也是自治的。我们所专注的关键价值在于沟通,让团队互相协作,而不是只关注自己的工作。

InfoQ:有些人,例如Randy Shoup曾经表示,独立负责创建与维护微服务的团队最终需要实现某些形式的经济回馈,以确保其他团队不会无节制地滥用资源。你们是否已经开始注意这一点了呢?

实际上,我们已经注意到了。我们在微服务模型上的工作时间还不长,对于未来的需求还不完全清楚,但我们很可能会从某个阶段开始对API的使用进行内部计费。目前来说,每个团队都是一个独立的SaaS提供者,这一点很可能也能够带来计费的能力。

InfoQ:在STUPS中,合规性与审计的观念似乎已经扮演了一等公民的角色,你能否解释一下其中的原因吗?

Sarnowski:一方面,我们希望让团队的自治性实现最大化,让为他们授权访问原生AWS功能的权限。不过,我们同时也是一个公开上市的技术公司,需要遵守金融监管,以及和数据处理与保护相关的各项法律,例如PCI、SOX与德国的法律等等。审计员需要了解我们是否遵守了相关法规。

如何弥补这方面的缺失,是我们面对的最大挑战之一。我们所设计的系统能够与我们的开发工作流进行无缝集成,并且在发现任何不符合规定的情况下能够发送接近实时的通知。这有助于开发者立即发现这些有问题的地方并采取措施。我们会持续与各团队交换意见,以改进我们的工具和工作流,让团队不会因为合规问题而放慢脚步。

InfoQ:对于有兴趣为STUPS贡献代码的开发者,怎样才是最好的贡献方式?你是否希望在某些方面得到他们的帮助?

Sarnowski:首先,我们将乐于看到有更多的人愿意尝试使用STUPS。我们目前正致力于让STUPS更易于实施,并且更易于为外部公司,主要是专注于自定义企业集成的公司所用。我们同时也在查找并报告各种问题,并且提供丰富的文档,让其他开发者也能够充分地使用STUPS。如果你在使用STUPS方面需要帮助,或是发现了某些问题,请与我们联系。

InfoQ:感谢你今天能够参与InfoQ的访谈。你还有哪些东西想与我们的读者分享吗?

Sarnowski:我想说的是,STUPS表现了我们的工程团队每天都要面对的一些非常独特的、大规模的技术挑战。Zalando去年进行了一次巨大的转型,从“在线商店”转变为“时尚平台”。从技术角度上说,这种转变意味着我们需要构建一个大规模的基础设施,以支持各种不同的业务项目。我们除了将许多工作结果作为开源项目发布之外,还维护着一个活跃的技术博客,并且在各种会议上进行了多次演讲。对于技术团队来说,这是一段令人振奋的时光。

在STUPS平台的网站上可以找到关于该平台的更多信息,在Zalando的STUPS GitHub账号下可找到它的代码。

查看英文原文:Zalando’s STUPS: Creating an Audit-Compliant PaaS on Top of AWS

你可能感兴趣的:(Zalando推出STUPS,一个运行在AWS之上并符合审计合规性的PaaS)