近期在 QCon 2017 纽约大会上, Just Software 的 CTO Susanne Kaiser 做演讲介绍了她的团队是如何实现从单体应用架构转向微服务模型的。
微服务的采纳会伴生有各种复杂性,诸如相互独立的多个服务、运营和通信的复杂性、分区的数据,以及最终一致性的复杂性。这些复杂性对转向微服务提出了一些挑战,例如需要多种技术和工具、核心功能的厘清等。团队依然需要谨慎对待已有的系统,并且转变过程需要比预期更长的时间。
Kaiser 指出,事实上从单体应用转向微服务的过程是革命性的。他们转向微服务的做法包括了如下的步骤:
- 候选者识别;
- 候选者分解;
- 微服务生态系统的建立。
微服务建模的核心理念,是建立服务和服务中高度内聚间的松耦合。团队识别了微服务间具有良好定义业务功能的界限环境。候选服务的分解采用如下步骤完成:
- 抽取 Web 应用;
- 抽取业务逻辑;
- 抽取数据存储。
她还介绍了他们是如何处理服务认证的。一开始他们采用了一种去中心化的模型,但是考虑到认证是一个横切关注点,他们不再让模型是去中心化的。认证基于领域对象层,每个领域对象具有自己的认证处理机制。
微服务生态系统包括 CI/CD 流水线、监控、日志追踪、中心配置、API 网关、服务发现、针对故障的设计、测试(包括 API)和开发沙箱环境。他们使用了一系列工具去支持该生态系统,包括 Jenkins 、 Ansible 、 Prometheus , Grafana 、Spring Cloud ( Sleuth 、 Zipkin , Config )、 Pact (CDC-Testing)、Netflix OSS 框架( Hystrix 、 Zuul 、 Eureka 、 Ribbon )、 Vagrant 和 VirtualBox。
在演讲的最后,Kaiser 总结了他们在微服务转化过程中的经验教训。建立一个微服务生态系统需要一些时间,以及多种技术和工具。由于他们不具备一个明确的架构团队,这延缓了该过程的实现。此外,并不推荐一开始就对大块服务做分解。总而言之,他们转向微服务的过程花费了比先前预期更长的时间。
查看英文原文: Susanne Kaiser on Microservices Journey from a Startup Perspective
评论