@lsmn
2016-04-23T09:03:07.000000Z
字数 2939
阅读 2329
O’Reilly
软件架构
微服务
本文介绍了4月12~13日在纽约举行的O'Reilly软件架构大会第二天的主要内容。议题包括“走向微服务:HomeDepot.com如何转变”、“迈向云原生:这需要一个平台”、“让痛点可见”、“微服务的反面”以及“作为教练的架构师”。
O’Reilly软件架构大会的第二天从The Home Depot高级架构师Christopher Grant的主题演讲开始,他演讲的题目是“走向微服务:HomeDepot.com如何转变”。The Home Depot第一个面向客户的Web页面是在1996年部署的,自此以后,他们的Web网站和软件应用资产已经实现了大幅的增长。新老技术&应用程序的整合导致了日益延长的提前期和脆弱的部署。他们转而采用一种敏捷的工作方法,定义职责的“领域空间”,利用持续集成实践极大地减少了冲突。2015年,The Home Depot技术团队全面采用了云和微服务,那对架构提出了新的挑战。
为成功实施重大架构调整,Grant提出了四条建议:制定规划、了解目标、选取重点、分步实施。进一步的建议包括:“分析和定义边界”——清楚定义业务产品和领域(及相应的数据模型和人员结构),绘制责任地图;“架构设计要考虑变更”——设法预见未来的变化(在可能的情况下),预计(但要最小化)未来的工作;“落实安全措施”——尽早自动化,根据情况尝试就地升级和全新的做法(没有哪种方法适合所有情况)。最后的建议是Grant从实际的工作中学到的,包括利用功能开关和流量阀门限制和控制问题,鼓励团队之间互相独立——不要过分依赖集中指挥。
在实施重大架构调整时:制定规划、了解目标、选取重点、分步实施。
Chip Childers是Cloud Foundry Foundation的技术副总裁,他做了上午的第二场主题演讲,题目是“迈向云原生:这需要一个平台”,他认为,采用一个“平台”是创建“云原生”和基于微服务的应用程序的关键。平台应该简化软件开发的流程,提供开发模式和流程,管理横切关注点,如安全和日志,高度自动化,并易于扩展。那些已经按照“十二要素应用”原则设计,或者作为微服务系统构建,或者已经打包在容器中的应用程序特别适合如今的平台即服务(PaaS)产品,比如Cloud Foundry、Heroku或OpenShift。
Childers表示,他建议使用一个平台,“不只是跟技术有关”——经济上也经过了充分的论证。恰当的平台有助于“工业化软件开发工艺”,他还讨论了“节拍时间(Takt time)”的概念,这与使用平台标准化特定的操作(比如部署)所带来的好处有关。节拍时间来源于德语词汇Taktzeit,是指“开始生产一个单位到开始生产下一个单之间的平均时间,这些生产起点的设置与客户需求的速度相匹配”。Childers在总结中讲到,平台约束了软件系统,但“恰当的约束在最重要的地方释放了我们的创造力”。
在最后题为“让痛点可见”的开幕主题演讲中,New Iron首席技术官兼Open Mastery创始人Janelle Klein介绍了“Idea Flow”学习框架,该框架提供了一种度量开发者冲突的策略,可以让问题可见。Klein指出,传统的软件开发过程常常遵循一种在各组织中普通存在的消极重复模式,从“各类问题,到痛苦的发布,再到系统抖动,最终项目崩溃”。显然,必须改变使用的策略,必须让软件开发的“痛点”更加可见。不过,这里有两个主要的障碍——第一个是“管理层”通常说一种与“工程师”不同的语言(即管理层和开发团队之间的“无明墙”),第二个是开发人员所做的改进经常毫无作用。
Klein指出,在软件开发过程中,导致大多数痛苦和“冲突”的问题通常是“人的因素”,而不是人们常常怀疑技术债务。
可以说,软件开发最困难的部分是“准确确定需要解决的问题”,但许多组织都没有一种有效的方法来处理这个问题。Richard P Rumelt曾经说过,“一个良好的策略是对发展阻力的一种明确而一致的反应(和克服方法)”,Klein问与会者,我们现在使用的策略,在识别和消除由“高质量代码、低技术债务、易维护的代码和良好的代码覆盖率”所带来的冲突和痛苦时,是最好的吗?他在演讲结束时发出呼吁,在让软件开发的痛点更加可见(和可控)方面,“作为一个行业整体,我们要一起学习和分享”。关于他在演讲中提到的想法,可以查看Leanpub图书“Idea Flow:如何度量软件开发之痛”来了解更多信息。
Mark Bates是Meta42 Labs的创始人兼首席架构师,他介绍了“微服务的反面”,并详述了他的经历,从使用基于Go的微服务和Angular.js UI为一家创业公司构建一个全新的Web应用程序,到最终将整个代码库改造成一个Ruby on Rails单体应用。他向软件开发团队传递的关键信息有助于企业寻找合适的产品市场组合,然后尽可能做最简单的事。Ego可能会驱使开发人员选择“最新最好”的技术和架构风格,比如微服务,但Bates发现,对他而言,最小化开发应用程序所需的认知“范围”是最重要的价值,因为他业余时间要忙于创业公司的工作。采用基于ROR的单体架构,可以最小化所需的活动组件和编排。
由于我是兼职做软件开发,所以我希望最小化变更所需的[认知]范围。在这种情况下,RoR单体架构是最好的选择。
James Stewart是UK Government Digital Service的技术架构主管,他演讲的题是“作为教练的架构师”。他在演讲开始时断言,“大IT”的时代已经结束,如今的架构师和开发人员(而不是供应商)有很大的权力,他们必须负责任地行使这种权力。Stewart认为,由于全部公共和私人部门的技术所普遍具有的特性,“软件现在就是政治”,相应地,架构决策会产生广泛的影响。Stewart提出了一个问题,就是作为组织的“高级技术负责人”意味着什么,对此,他表示,你的职责范围通常不限于培训,该角色的职责一般是纵观全局,推动组织沿着正确的方向变革。这个职位的一项关键技能是,对于组织的方方面面,知道提出什么问题,而且要明白,没有高层的支持,变革目标无法实现。
下面是贯穿整场的7个推动变革的关键点:
关于在纽约举行的O’Reilly软件架构大会的更多细节,可以在大会网站上找到。O’Reilly软件架构大会的其他活动将于2016年10月18~21日(提案征集截止日期5月2日)和11月13~16日(提案征集截止日期6月1日)分别在伦敦和旧金山举办,相应提案征集页面现在已经可以使用了。
查看英文原文:Key Takeaways from the O’Reilly Software Architecture Conference: Day Two