序三
分布式应用的终级挑战,是如何更快、更好、更经济地创造客户价值。在克服这一挑战的道路上,软件的演进速度起着举足轻重的作用。再不完美的软件,只要能快速地演进就能不断适应新的需求加以完善。对于分布式应用来说,快速演进主要包含软件架构和工程方法两大内容,前者追求合理的概念切分和松耦合的关系,后者则依赖单元测试、持续集成等工程手段去确保质量。
微服务软件架构的出现很好地解决了以往单体应用发布效率低的问题,通过分而治之,将软件的发布粒度变小、变轻去加速整体的发布效率。然而,微服务软件架构并非银弹,在解决发布效率低的同时将复杂度“藏”到了微服务之间。解决好链路跟踪、安全、服务发现、负载均衡、限流等内容都具有相当的挑战,当服务规模变大时尤为如此。
探索微服务软件架构的解决方案是从框架思维开始的,围绕SDK构建的各种框架将各微服务连接起来完成协同,体现的是“智能端点,哑管道”原则。随着探索的深入,发现SDK将应用和框架紧密地耦合在了一起而导致协同演进举步维艰,以及多语言SDK的开发和维护成本过高等新问题。阿里巴巴在过去近十年探索分布式应用的解决方案时沿用的也是这一思维,生动地见证了技术门槛高、因体系化不足而面临人力成本高的现象。
云原生(cloud native)技术的出现尝试着以体系化的方式去解决分布试计算所面临的诸多挑战,其本质是以分层的方式解决分布式应用的弹性、易用性和可移植性。服务网格(service mesh)作为云原生的关键技术,提出以平台思维去探索微服务软件架构的全新解决方案,背后的原则变成了“智能管道,哑端点”。服务网格的核心思路是将框架中易变、与环境相关的内容下沉到平台而使整个应用变轻,借助无缝升级等具体的技术能力实现应用与平台彼此无感独立演进。
Gartner认为,2020年服务网格将成为所有领先的容器管理系统的标配技术。由Google、IBM和Lyft所发起的Istio开源项目,以其对分布式应用解决方案独道的洞见致力于打造全球服务网格技术实现的事实标准。
本书以体系化、实操的形式介绍了Istio的方方面面,相信能帮助读者更好地掌握当下服务网格这一前沿技术。
李云,阿里巴巴高级技术专家
2019年12月