云原生时代下数据库管理工具的变革
2013年一个名叫“Docker”的开源项目发布,以“应用封装+容器镜像”直接将一个应用运行所需的完整环境实现了“一次发布,随处运行”,彻底解决了PaaS用户一致性的问题,进而通过Kubernetes 开源项目,采用了一整套容器化设计模式和对应的控制模型,从而明确了如何以容器为核心构建真正能够跟开发者对接起来的应用交付和开发范式。容器+Kubernetes技术的逐步成熟与发展,以“云原生”为关键词的技术生态雏形基本确立。
伴随着云时代的演进,大家言必称“云原生”,而“云原生”也被很多人视为企业数字化转型的关键节点,甚至是业务成败的决定性因素。那么究竟什么是“云原生”呢?云原生技术在数据库相关领域又是被如何运用的?我们一起来一探究竟。
何谓云原生?
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。
云原生(CloudNative)是一个组合词,Cloud+Native。
Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
目前对于“云原生”这个概念,认可度较高的是CNCF(云原生计算基金会)给出的定义:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网络、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。
可以说云原生是生在云上,长在云上,也应用于云上。
云原生四要素
云原生不是一项技术或一个产品,而是一种系统化的方法论和技术的集合。只有满足“上云”特征,或者说专门面向“云”设计的应用,才可以称之为云原生应用。
CNCF认为云原生系统应该具备三大特征:容器化封装、自动化管理、面向微服务。要充分理解云原生,必须对每个板块进行了解,而当前,业界对云原生的看法是一致的,那就是四要素:微服务、容器化、DevOps、持续交付。
微服务:
一个微服务基本是一个能独立发布的应用服务,因此可以作为独立组件升级、灰度或复用等,对整个大应用的影响也较小,每个服务可以由专门的组织来单独完成,依赖方只要定好输入和输出口即可完全开发,甚至整个团队的组织架构也会更精简,因此沟通成本低、效率高。
容器化:
Docker是应用最为广泛的容器引擎,在思科谷歌等公司的基础设施中大量使用,基于LXC技术,起到应用隔离作用,为微服务及其所需的所有配置、依赖关系和环境变量移动到全新、无差别的运行环境,移植性强。
kubernetes是容器编排系统,用于容器管理,容器间的负载均衡,重启失败的容器以及编排容器使用的存储,可以说推动了云原生的流行和发展。
DevOps:
这是个组合词,Dev+Ops,就是开发+运维,不像开发和产品,经常刀刃相见,实际上DevOps是一个敏捷思维,是一个沟通文化,也是组织形式。
DevOps强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件,为云原生提供持续交付能力。
持续交付:
敏捷开发要求随时有一个版本可以上到大群环境,所以要持续交付。
持续交付是不误时开发,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发版本和稳定版本并存,需要更多流程和工具支撑。
云原生数据库管理工具的诞生
云计算时代的第一个十年,大多数互联网公司的应用从诞生之初就生长在云端;如今,金融、制造、医疗以及政务等领域的企业和机构也逐渐将业务迁移至云上。
企业的云化不仅仅是基础设施和平台的升级,应用也需要摒弃传统的设计方法,从架构设计、开发方式到部署维护整个软件生命周期都基于云的特点设计,从而构建原生为云而设计的应用,这样才能在云上以最佳姿势运行,充分利用和发挥云平台的弹性。
目前,八成新应用都是云原生化的。而Gartner数据显示,50%的传统老旧应用也被以云原生化的方式改造,应用开发大量转向微服务、Kubernetes,数据库也在上云,比如阿里云rds、腾讯tdb、亚马逊aurora等等。作为开发、测试、运维左膀右臂的数据库管理工具,上云也成为了必然趋势。
而基于云原生技术,数据管理工具中诞生了一批像阿里云DMS、CloudQuery这样的新型数据操作平台,传统的老牌开源管理工具DBeaver也推出了Cloud版本——CloudBeaver,它们解决了传统数据管理工具如Navicat、DataGrip存在的问题,突破了传统数据管理壁垒,相较于传统的数据库管理工具,它们主要拥有以下特征。
① 无操作系统限制。不同于传统数据操作工具对操作系统的限制,云原生数据管理工具对操作系统没有任何限制。
② 更加广泛的数据源支持。云原生数据管理工具能够支持更广泛的数据源,并且对于数据源的管控更为多样化,用户可根据自身需求选择需要支持的数据库。而传统数据管理工具对于数据源的管控则非常严格,每个用户终端对数据源的支持都一样,无法根据自身需求进行选择。
③ 统一的管理控制台。对比于传统数据操作平台每一个使用者都需要下载终端,阿里云DMS、CloudQuery无需安装任何软件,只需一个云服务器或普通服务器就可进行部署,支持公有云、私有云和混合云。并且将所有数据库统一收纳在一个入口,仅需一个账号和一个浏览器便可登录使用。
④ 细粒度用户权限管控。在我们日常工作中,开发、测试、运营等不同角色的人员都需要拥有查询数据库的权限,在传统数据库管理工具中,通常是多人甚至一个团队共用一个账号,这就容易增加用户权限过大的不可控风险。而在CloudQuery这类云原生数据库管理工具中,可做到细粒度用户权限管控。如限制低权限用户对某些数据库的访问,甚至可对这类用户设置只可读不可更改的操作权限,可以有效控制不同用户的操作权限,大大降低甚至避免因用户权限过大带来的风险。
⑤ 具备数据审计分析功能。传统数据库管理工具并不具备数据库审计分析功能,只能记录操作日志,而云原生数据库管理工具可对数据库进行事中及事后审计分析。当用户执行了某条查询语句后,过程中会出现两个检查点。
第一个检查点是权限检查,平台会判断该用户是否具有相应数据库和数据表的权限,若用户是越权操作,则会跳出提示,询问是否申请该操作权限。
第二个检查点是会对高风险语句进行拦截,比如在DBA设置的规范里不允许用户直接执行没有WHERE条件的SQL语句,可以直接拦截掉存在较高风险的SQL语句。第二个检查点还可以进行执行人限流,比如某人在一天之内已经查询了两万条数据,如果他还需要继续查询就可能存在安全问题,因此也会对其请求进行拦截。
此外,云原生数据库管理平台的审计功能还包括了事后追踪。在平台中,用户的任何操作行为都是可管控可追踪的,因此一旦发生数据库安全事件,则可进行安全事件回放,追踪到操作嫌疑人。
⑥ 更加便捷的迭代更新。对于云原生数据库管理工具来说,因为部署在云上,一次更新即可供整个企业使用,而无需像传统工具那样,每个人都需要在自己的桌面端进行更新。
总结
随着云计算的普及与云原生的广泛应用,越来越多的从业者、决策者清晰地认识到“云原生化将成为企业技术创新的关键要素,也是完成企业数字化转型的最短路径”,企业应用上云已经不仅仅是一种趋势,更是现代企业开发模式的必然要求。企业通过采用基于云原生的技术和管理方法而生成的应用,能够持续地享受到“云计算”提供的源源不断的高效服务,如:
① 高扩展性。弹性作为云计算的重要特征,理论上不受资源限制,可以无限占用资源,云原生应用的弹性包括应用使用资源的弹性和应用实例弹性扩展的弹性。举个例子,因为云原生应用可以被在线用户随时访问,各种原因都有可能导致应用的流量在短时间内激增,而云原生的应用可以随业务的需要随时迅捷地在线伸缩资源以应对流量在短时间内的大幅波动。
② 安全性。云原生的应用通过对服务部署的网络(VPC)的设计,利用对网关和防火墙的设计和配置,对应用服务提供多层的安全保护,可抵御众多常规安全威胁。
③ 运维自动化。云原生应用具备自动化异常分析诊断能力,无需登录服务器,使运维从自助转变为自动化。
……
云时代下,我们必须以全新的理念来看待软件架构和基础设施,只有从这个角度理解云原生才能得到正确的答案。未来必然是属于云原生的,企业变革的绝不仅仅是工具,而是从思想到方法,再到工具的一整套理念。只有这样,才能更好迎接云时代的到来。
评论