2018年8月7日
2018年8月7日
贡献者:Christy Pettey
成功的微服务架构服务应该独立部署和扩展。
当你转向微服务时,你是在敏捷性上进行投资——但与任何投资一样,你应该确保收益和风险与你的目标一致。成功的微服务架构(MSA)比传统的应用程序架构更复杂,因此需要更多的努力和纪律来设计、构建和管理它。
但是MSA承诺加快开发生命周期,并支持在不稳定工作负载下的可伸缩性。“MSA的强大在很大程度上可以归因于松散耦合和将系统分解为组件服务的好处,这些组件服务可以彼此独立地开发、部署和操作,”他说加里Olliffe他是Gartner研究副总裁。
“高度关注松耦合系统的技术专业人员将发现这种方法可以应用于他们需要做出的许多设计决策,”Olliffe解释道。
这四个步骤可以帮助技术专业人员实现他们的MSA目标。
使用分布式配置将服务与环境分离:配置信息可以包括主题名称、队列名称、数据库名称和其他环境数据。运行时平台或独立解决方案可以提供分布式配置管理。
使用服务发现将服务彼此解耦。服务注册中心应用程序编程接口(API)使提供者服务能够注册其可用性。“注册表还可以让消费者发现并连接到服务端点,”Olliffe说。这个服务端点的解析可以在客户端或服务端进行管理。这两个模型都尽可能地保持链接的后期绑定,以允许消费者和提供者实例的生命周期解耦。”
从头开始迭代。MSA的基本目标之一是支持应用程序交付的快速、流畅迭代——这应该从一开始就实现。
使用分解策略.不要让你的转变成为“大爆炸”,不要让一个新应用的最小可行产品依赖于数十或数百个独立微服务的交付。
使用反腐败策略来解耦。如果存在对已有应用程序数据或特性的依赖,则需要设计一个抽象层,以确保新服务保持解耦。称为“反破坏层”(ACL),其目标是隐藏遗留环境的内部域模型——并防止它们破坏您的新服务设计。
为松散耦合的消费设计接口——将服务隔离为自包含的部署单元。
保持您的服务组合松散耦合。Olliffe说:“随着服务集的增长,你将不得不处理它们之间的各种关系。”“其中一些服务将具有简单的消费者-提供商关系或发布者-订阅者关系,但你也可能在某个时候创建一个现有服务的组合服务。”
解耦数据所有权、持久性、访问和报告。为了在服务之间提供最大程度的敏捷性和独立性,必须对数据进行解耦。一个服务拥有的数据和另一个服务拥有的数据之间不可能存在数据库强制的关系(例如,引用完整性)。
实现一致的版本控制策略。MSA支持并管理快速变更。因此,你需要一个服务和接口的版本控制策略:
实现服务依赖跟踪机制。随着微服务数量的增长,你肯定会问:“我的服务依赖关系图是什么样的?”所显示的依赖关系可以是同步的,也可以是异步的,但是架构师和服务开发人员仍然需要了解哪些服务正在使用它们的功能,以及它们的服务依赖哪些功能。
“理解细粒度微服务架构通常是实现细节是很重要的,”Olliffe解释道。尽管它的设计可能很复杂——并伴随着它自己的一组挑战——但如果实现得当,收益将提供最小化的设计时间、构建时间和服务与其消费者之间的运行时依赖关系。
加入您的同行,在高德纳会议上揭开最新的见解。
为Gartner客户推荐的资源*:
如何为敏捷架构设计微服务加里·奥利夫著。
*请注意,有些文档可能不是所有Gartner客户都能获得。