书籍《微服务设计》,地址:微服务设计 (豆瓣)
架构师应像城市规划师那样专注在大方向上,只在很有限的情况下参与到非常具体的细节实现中来。 他们需要保证系统不但能够满足当前的需求,还能够应对将来的变化。而且他们还应该保证在这个系统上工作的开发人员要和使用这个系统的用户一样开心。
1、分区:粗粒度的服务群组。架构师应该更多的关注服务之间的交互,而不是过于关注各个服务内部发生的事情。
2、一个原则性的方法
”规则对于智者来说是指导,对于愚蠢者来说是遵从。“--- 一般认为出自Douglas Bader
(1)了解公司战略目标,因为这是你的组织前进的方向,所以需要确保技术层面的选择能够与之一致。
(2)为了和更大的目标保持一致,架构师会指定一些具体的规则,称为原则。原则最好不要超过10个,或者能写在海报上,方便大家记忆。
(3)实践是技术相关的,例如代码规范、日志数据集中捕获或者HTTP/REST作为标准集成风格等。由于实践偏向技术层面,所以其改变的频率会高于原则。实践应该巩固原则。
(4)将原则和实践相结合
3、要求的标准
(1)监控:能够清晰的描绘出服务系统的健康状态非常关键。
(2)接口:选用少数几种明确的接口技术有助于新消费者的集成。这里不仅是接口的技术和协议,也包括如何处理资源的分页,如何处理不同版本的API等。
(3)架构安全性:保证每个服务都可以应对下游服务的错误请求。
返回码应该遵守一定的规则。对以下几种请求做不同的处理可以帮助系统追溯问题:正确并且被正确处理的请求;错误请求,并且服务识别出了它是错误的,但什么也没有做;被访问的服务宕机了,所以无法判断请求是否正常。
4、代码治理
(1) 范例:编写文档是有用的,如果想更加直观,可以提供可运行的代码范例。
(2) 裁剪服务代码模板:提供服务的核心代码
5、技术债务:比如为了发布一些紧急的特性,而忽略一些约束,这是一个取舍,长期来看是会付出代价的。所以架构师需要在此做权衡,理解债务的层次及其对系统的影响。可以维护一个债务列表,并定期回顾。
6、例外管理:如果系统偏离了原则和实践的指导,架构师要记录例外情况,如果这样的例外出现了多次,就需要修改原则和实践。
7、集中治理和领导:架构师会承担技术治理这部分的职责。治理就是要确保我们构建的系统符合技术愿景,而且在需要的时候还应对愿景进行演化。
8、建设团队
9、小结:架构师应该承担的职责:愿景、同理心、合作、适应性、自治性、治理。