重构全云原生软件架构理论
回顾软件架构的发展历程,IT 基础设施(Infrastructure)的变迁总是会推动架构演进。在大型机时代,架构就是与之匹配的单体架构,随着 PC 及局域网时代的到来,客户服务器架构成为主流。后来,Internet 的发展推动了 WEB Service 架构的发展,也带动了 SOA/EDI 等基于 WEB Service/SOAP 的架构思想。现今,伴随互联网应用的规模日益庞大及云计算平台的广泛应用,能够适应大规模系统快速演化及发挥云计算优势的微服务架构日益流行。
到了 2018 年,云原生技术理念开始逐渐萌芽,这是因为此时 Kubernetes 以及容器都成为了云厂商的既定标准,以“云”为核心的软件研发思想逐步形成。云原生其实是一套指导进行软件架构设计的思想,按照这种思想设计出来的软件天然就“生在云上,长在云上”,能够最大化发挥云的能力,使得开发的软件和“云”能够天然集成在一起,发挥“云”的最大价值。
在蔡超看来,云计算与云原生看起来很相似,而实际上有很大的不同。
云计算通常情况下就是大家所指的“云”,是一种按需获取的基础设施,比如虚机、存储、数据库等。大家非常熟悉的云计算平台提供者包括亚马逊 AWS、Google Cloud、阿里云、微软 AZure 等,开发者可以按需获取基础设施,并按实际使用量付费。
然而,云原生是一种充分利用云计算模式的优点来构建和运行应用的理念和方法。2018 年,CNCF 对云原生技术的定义是“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松对系统作出频繁和可预测的重大变更。”
由此可见,云原生与云计算技术不同的不是基础设施,而是理念和方法。云原生的理念和方法重点在于指导开发团队在云计算环境中高效构建大规模软件。蔡超表示,在这种理念的冲击下,与架构设计最为相关的当然是微服务。正如前面所提到的“云原生”的一个核心目的就是要让大规模系统的构建更加高效,而通过微服务架构可以有效解决大团队开发大规模软件开发中的多种效率问题,并且微服务架构也可以充分发挥云平台的优势。
至于哪种架构模型是目前的主流,蔡超没有做过精确的统计和分析。不过,目前不少系统,尤其是云下系统仍然采用的是多层单体架构,这种架构如果迁移到云端是很难发挥云计算的基础设施优势。
Design with love © Tanahcon 2019. All right reserved. Privacy Policy