最近在考虑将这些年写的若干个单体服务(monolithic)按照微服务方式重写一下,以便获得高可用性、高吞吐量、易维护性等好处。先是看了些关于Orleans的资料,觉得适合作为服务的基础架构,但怎么从传统服务向微服务转变,特别是服务的粒度问题还没搞明白,恰巧今天看到微软service-febric(Azure 版的Orleans)文档(https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-overview-microservices),里面提到五阶段模式,翻译过来。
- 从单体(monolithic)服务开始;
- 迁移到Service Fabric的容器中;
- 现代化(Modernize):在容器周围添加新的微服务;
- 变革(Innovate):按需将传统服务拆解为微服务;
- 将应用转换或重构为微服务。
可以在上述五步中的任何一步停下来。
迁移
通过将单体服务迁移到云端容器中降低部署和运行成本。
现代化(外围微服务化)
现代化是在现有的代码的基础上增加新的服务。如果你打算写新的代码,最好沿着微服务的路径走一小步。这可能意味着添加新的RESTAPI节点或新的业务逻辑。这样,您就可以开始构建新的微服务的过程,并实践开发和部署它们。
变革(关键部分微服务化)
微服务方法可以满足不断变化的业务需求。在这个阶段,您需要决定是开始将单体服务拆分为微服务,还是进行创新。这里的一个经典示例是,当您用作工作流队列的数据库成为处理瓶颈时(随着工作流请求数量的增加,需要分布式负载均衡),将不可扩展或需要更频繁更新的应用程序拆分为微服务和创新。
完成迁移
在此阶段,您的应用程序完全由(或拆分为)微服务组成。为了达到这一点,您已经完成了微服务的旅程。你可以从这里开始,但如果没有一个微服务平台来帮助你,就需要大量的投资。