低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

2017 年敏捷沙滩大会:技术卓越、为持续交付优化的组织、容器安全

2017 年 8 月 23 日

在英国康沃尔郡举办的 2017 年敏捷沙滩大会上,数百名演讲者和与会者欢聚一堂,探讨在敏捷领域和后敏捷时代软件开发方法上的最新进展。大会第二天的要点包括:要基于敏捷宣言的原则进行交付,在软件开发方法中实现技术卓越是至关重要的;持续交付的实践是最大化商业价值链的关键推动因素,但组织必须经过恰当的调整,使这种实践能够高效、可持续地进行下去;虽然在使用微服务架构设计,用容器部署的软件系统中应用安全功能是颇具挑战性的,但开发者和运营者也应该使用一些基础实践。

大会第二天以 James W Grenning 的演讲打头,演讲主题为“技术卓越,你需要它”。 Grenning 是 Wingman Software 的创始人,也是敏捷宣言的签署人。他一开始谈到自己在80 年代编写集成系统代码的往事,并指出在那个年代,在一系列较短的周期内交付功能并持续改进的做法也像当今这样至关重要。Grenning 分享了对Demming 的“计划、执行、回顾、行动(Plan、Do、Check、Act,PDCA)”周期与“全面质量管理(Total Quality Management,TQM)”实践的理解和引用,并声称这类技术中有很多基本原则也是敏捷宣言所呈现思想的基础。然而,或许时隔多年,技术卓越与持续学习的理念在悄然弱化,结果人们的观念变得教条,只去关心开发软件的正确流程。

Grenning 探讨了敏捷十周年纪念的共识,并回顾了其中得出的结论:敏捷社区必须“1,追求技术卓越;2,推动个体改变,引导组织变革”。一如Erik Dietrich 内容深刻的博文“为何开发者不再学习:专家新人的崛起”所言,我们必须持续学习,持续改进技术实践,从而避免陷入“有十年经验的开发老手实际上只是重复了十次同一年的工作”的陷阱。例如,开发者应该避免“之后再debug”式的开发,而是关注于应用并提升测试驱动开发(Test-Driven Development,TDD)的技巧。Grenning 在演讲结尾谈到对人力的尊重的重要性(在大会第一天频繁被提及),并感慨说,虽然敏捷方法使管理交付受益巨大,但技术卓越的重要性是不能被遗忘的。

本日商业部分的第一节内容是“为持续交付优化的组织”,演讲者是 Phil Parker ,Equal Experts 的合伙人。在演讲开头,Parker 提到持续交付成功应用到组织中的标志是“可以为现实客户自然地呈现一个准备充分的前景,且过程不会手忙脚乱”,以及“速度和稳定性符合商业需求”。持续交付的关键目标是尽可能减少“从有价值的创意(假设),到实现这种创意并呈现给现实客户”这一流程中的等待时间。因此,这需要整个组织通力合作以成功实现持续交付。谈到效用和流程,Parker 提到关注效用的组织“往往会走向减少价值流、降低效用的结局”,所以应该关注价值流对效用的提升。实现这一目标的一种方式是用小批次(batch)进行开发。

回到演讲主题,Parker 认为传统上以项目为中心的“服务团队”,通常在最大化价值流方面效率不足。这是因为他们欠缺实现端到端变化的能力(例如,从商业创意到架构到部署),结果通常导致需要更大的批次和更长的升级周期,以在交付中包含更多的功能,典型例子就是令人生畏的“大爆炸”式发布。Parker 借鉴了 Spotify 公司的组织模型,也就是小队(squads)、分部(chapters)和公会(guilds),作为组织设计中对传统服务团队的替代,并提出了一种三维度的组织设计模式。这种模式将团队分为以下三种:

  • 领域(垂直维度):每个领域代表一类商业能力,由一个独立小组掌控;领域的功能在部署时应与其它领域团队独立
  • 社区(水平维度):社区是具备相似技能与兴趣的人员组成的松散小组,可以在组织内实现协作并分享知识
  • 推动者(对角线维度):作为推动者的团队负责提供共同需要的资源,例如所需的平台或核心工具

演讲结尾,Parker 强调组织必须注意到康威定律的影响,并牢记这一事实:虽然复用很不错,但它的代价是降低独立性;而领域团队之间的界限及其构建的体制应该是明确定义、相对稳定、不太笼统的。

成功创建有着明确界限,负责单一商业功能的领域团队,对软件开发者来说不应该是什么新鲜事物:这其实就是高内聚、低耦合(high cohesion & loose coupling)的架构设计原则

软件交付话题的下一场演讲是 Phil Winder 主持的,他是 Winder Research and Development 的创始人。他在演讲中探讨了在使用微服务架构风格开发软件,及使用容器技术部署和运营时的安全问题(这里可以下载演讲的幻灯片)。Winder 使用了一个开源的,应用微服务和容器的电商平台“袜店”作为示例,讨论了一系列安全概念,并给出了以下建议:

  • 容器安全:

    • Dockerfile 中设置一个用户账户,从而避免以 root 账户运行操作
    • 使用固化镜像(hardened image,参考网络安全中心页面),将容器部署为不可变工件(immutable artefacts),并将根容器文件系统设置为只读
    • 充分利用 Linux 的功能,限制容器受损时的操作
    • 流行的容器编排框架 Kubernetes ,其文档很好地说明了如何启用它的众多安全功能
  • 网络:

    • 应用“深度防御”,并使用全局防火墙尽量缩小易受攻击的部分
    • 应用网络分区以避免内网入侵
    • 应用网络协议以确保容器只能和其它定义好的容器通信

Winder 在演讲总结中强调,要正确、高效地应用安全功能不是件容易的事情。由于权限和责任逐渐扩散到架构师、开发人员和运营人员等众多角色身上,组织中的所有成员都应熟悉基本的安全原则(尤其是涉及容器这样的新技术时的原则),并意识到他们的工作事关整个系统的安全性。

敏捷沙滩大会的更多信息可以参考大会官网。演讲的视频已上传 AotB Youtube 频道

查看英文原文 Technical Excellence, Organisational Design for CD, and Container Security: Agile on the Beach 2017


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 8 月 23 日 19:00720

评论

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

大白话Java多线程,小白都能看的懂的哦

java金融

Java 多线程 线程安全 创建线程方式 什么是多线程

奈学教育《大数据开发工程师》课程大纲

奈学教育

大数据

有益思考一则:概率与格局

石君

思考 思维方式 格局

元年云“宽能力”拓宽成长型企业数字化升级之路

人称T客

架构师训练营第三周课后作业

竹森先生

极客大学架构师训练营

第三周作业

戴维斯

极客大学架构师训练营

week3 作业& 手撕单例模式

不在调上

第三周作业

andy

第三周总结

andy

到底是什么让IT人如此苦逼???

不会笑青年

程序员 程序人生

架构师训练营第 3 周——学习总结

在野

极客大学架构师训练营

中心化是人性,去中心化是技术

CECBC区块链专委会

区块链技术 去中心化 超级节点

【架构师训练营 - 周总结 -3】设计模式、重构

小动物

总结 极客大学架构师训练营 第三周

用于可视化软件体系结构的C4模型(转载)

清风徐徐

Tweak原理与越狱防护

大冯宇宙😏😏

架构师训练营Week03

Frank Zeng

奈学教育《大数据开发工程师》课程大纲

古月木易

大数据

奈学教育《百万架构师》课程大纲

奈学教育

极客大学架构师训练营

week3 学习总结

不在调上

极客大学架构师训练营

代码重构练习三

李广富

万恶的NPE差点让我半个月工资没了

java金融

Java 程序员 互联网 NPE 空指针

奈学教育《百万架构师》课程大纲

古月木易

极客大学架构师训练营

【week03】总结

chengjing

【架构师训练营 - 作业 -3】组合模式

小动物

极客大学架构师训练营 作业 第三周

从单机事务到分布式事务

ElvinYang

第三周作业

芒夏

极客大学架构师训练营

当教育遇上区块链,会擦出什么样的火花?

CECBC区块链专委会

区块链技术 去中心化 防篡改 教育资源共享

【week03】作业1

chengjing

架构师训练营第 3 周 _ 学习总结

方舟勇士

课程总结

8行代码的21问题: 如何有效Code Review?

zzj8704

Code Review 代码规范 可测性 CR常见规则 结构化CR

瓷都景德镇牵手蚂蚁区块链,重塑非遗陶瓷产业

CECBC区块链专委会

区块链技术 溯源 防篡改 景德镇 非遗

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

2017年敏捷沙滩大会:技术卓越、为持续交付优化的组织、容器安全-InfoQ