对于那些应用的需求变化比较快,需要采用敏捷开发的应用,如云上的互联网应用,手机应用。同时应用负载采用分布式架构,对性能和弹性要求很高的应用,都是为服务适合的对象。但微服务也会带来很多挑战,如分布式更为复杂,对DevOps运维一体化的要求更高,所以在那些高内聚、拥有复杂事务处理、对于事务一致性要求高的项目是不适合采用微服务的。所以在合适的项目,合适的团队,采用微服务架构收益会大于成本。需要避免为了“微服务”而“微服务”, 需要认清它所带来的挑战,了解其开销及总体成本。
数据和服务如果可以重用和共享,原则上都适合暴露成API,尤其是微服务的对外接口定义都是API的最佳候选。