O'Reilly 2017 SA Con- Day2
概述
谈起O’Reilly,大部分朋友都不会陌生,就是那个经常见到的带着小动物的IT书籍的出版媒体。
O'Relly从15年开始举办Software Architecture Conference,聚焦软件架构的相关内容,包括架构原则、实践、发展趋势等。
Software Architecture Conference的副标题---“Engineering the Future of Software Architecture”,非常好的Slogon,读一次就记住了 :)
此次2017 O‘Reilly London SA Con一共四天,2天Session + 2天培训,接下来,我就和大家分享一下参加O'Reilly SA Con的见闻。
KeyNote
第2天的KeyNotes有4个,主要包括
Jams Lewis的《Thinking about platform》
主要讲了Platform在Modern System中演进的重要性,包括像Netflix,Etsy等在微服务演进过程中构建的平台,总体有点抽象。:)
《The death of Cannot Reproduce》
这个话题阐述了随着云环境、分布式、多语言、库依赖、多核等因素的影响,“Cannot reproduce”这个问题在开发团队中带来的成本越来越高。演讲者给了一个数据:
在Apache Foundation Issues Queue中,大概有12849个resolution是 Cannot Reproduce"
最后给出了些研究的成果和建议,包括在环境搭建、架构、测试测试等过程中可以应用的。
SIG(Software Inproving Group)的《Engineering future of happy developers》
这个话题描述了他们的一项研究成果--对导致程序员焦虑、不开心因素的调研(不得不承认,老外好注重人性^_^),提出了一些关键点帮助开发者能最大化发挥他们的潜能。在SA Con的现场,SIG也提供了他们的一款产品
BetterCodehub,帮助检测代码的质量,复杂度并提出重构建议,感兴趣大家可以试试。
Github的public repo是免费使用的。
《Breaking the rule》
演讲者Dan North是《The RSpec Book》和《97 Things Every Programmer Should Know》的作者之一,25年+的从业经验,exTWer。
他以高德拉特的《Goal》作为背景,提出了We are really really bad at adopting and benefiting new technology。原因是大部分人没有识别limitation,或者对它认识过于乐观。:(
他提出了adopting new tech的4个主要步骤:
(1) What is power of X
(2) What limitation does X diminish
(3) Which X's rules enabled us to manage the limitation
(4) Which new rules will we need
然后依次例举了一些技术,如持续交付、微服务架构等在这几个主要步骤上对应的限制和我们应该如何制定适合自己场景的rule。最后,强调了随着新技术的快速演进,我们应该谨慎的对待新技术所带来的limitation。
话题
今天话题的内容比较多,分享几个印象深刻的。
《What we learned moving 65,000 Microsofties to DevOps on the public cloud》
分享者来自微软VSTS的负责人,讲了微软内部如何将过去几十年建立起来的一系列不同的内部工具,演进成一个基于公有云的开发者平台VSTS。并通过引入一系列实践,实现Microservice&DevOps的转型过程。内容涉及的比较广,包括敏捷/全功能团队,DevOps,工程实践,流水线,提了5个核心点,每个点的信息量都很大。
Customer Focused。除了讲需求,也提到了对于团队一些核心目标的变化,关注局部到关注端到端,给了很多相关的指标可以借鉴。
Production First。这部分主要关注的是团队对产品,而非项目的态度,以及对SLA的保障。
Team Autonomy。提到了几个级别的Autonomy,Organization/Roles/Teams/Cadence和Practices。
Engineering practice。这部分讲了一些重要的工程实践。PR的Review机制、集成测试转变成更多单元的测试、构建的依赖解耦,提高搭建E2E环境的完整性和效率。
Infrastructure as resource
。这部分主要讲基础设施。和Infrastructure As Code的做法类似,对于基础设施的易操作性。
《Evolutionary Architecture》- Neal Ford(TW)
An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.
演进式架构并不是新概念,2016年Neal Ford在TW Insight的Microservices as an Evolutionary Architecture里就曾提到过。不过这次的分享,内容更系统化,包括Fitness的维度,如何支持Constant change,以及Pipeline的重要性等。另外,他的这本书《Evolutionary Architecture》已经出版了,感兴趣的朋友可以关注一下。
这里有一个Neal Ford的Evolutionary Architecture Workshop Slides,大家可以下载参考。
《CQRS and event sourcing: A DevOps perspective》
两位演讲者讲了CQRS和Event Sourcing的概念(虽然是作铺垫,但基础的东西讲的有点忒啰嗦....)。
然后讲了在他们的项目中应用CQRS和Event Sourcing过程中的实践,包括:
• Building resilient systems
• Approaches for logging and monitoring
• Scaling applications
• Deployment and infrastructure as code
• Security
其中Scaling部分讲的还挺有意思,提到进行蓝绿部署时对Event Bus处理的情况。思路不难,主要还是Bus本身无状态,所有的Event都存在Store里。
听完后又和演讲者沟通了下,在蓝绿迁移的时候,Bus的迁移过程和一般的服务迁移过程并无太大差异,更多的注意几点:
• (1)用LB控制A(Blue) -> B(Green)的迁移,保障迁移后,新的消息去了B
• (2)对已经进入A(Blue)的消息及时进行处理,确保不丢。同时新进入的B也在处理消息。
• (3)等A(Blue)中的消息处理完毕,将A的环境释放。
Architecture Katas
一天的议程结束后,晚上有个bonus的环节---Architect Kata。
有点像Code kata,但不是大家聚在一起写code,而是做Architecture Design。
"So how are we supposed to get great architects, if they only get the chance to architect fewer than a half-dozen times in their career?" --Ted Neward
“如果架构师在职业生涯中的设计有限,如何成为伟大的架构师呢?”——Ted Neward
Neal Ford介绍了一下游戏规则,然后大家开始自由组队,各个团队挑选题目。
过程中分成了2个迭代,每轮迭代内团队自主讨论,用白纸画出架构图。
每个迭代会有需求的变化和不同的技术挑战。
迭代结束后,各个团队present结果,其他团队提问。
评委点评。这次的评委是James Lewis和其他几个TWer的讲师,过程中各种拆台 :(
这种方式蛮好的,很多产品架构稳定了,架构师的练习机会相应减少。在快速变化的业务场景中,架构师更需要不断的思考、练习,有助于做好技术方案的平衡。后续可以和小伙伴在公司中练习起来。
最后,给大家附个参考题目列表,方便各位也回去在团队中开展类似的Kata。
总结
这两天的内容主要是记录一些Session,后续再汇总一篇,讲讲从这次会议中看到的一些趋势和心得。