带你读《云原生应用开发 Operator原理与实践》第一章引言1.1云原生介绍(五)

1.1.3        应用云原生改造

业界云原生相关的基础设施已基本成熟。对用户来说,对已有的传统架构服务进行改造,加速迁移到云平台至关重要。

应用的云原生改造基本分为3个阶段(1容器化改造(2微服务化改造(3) DevOps 改造。下面分别说明。

1. 容器化改造

  为什么要对传统应用进行容器化改造?传统云化应用大多运行在虚拟机上,如图1-5所示,由于增加了虚拟操作系统这一抽象层,虚拟机方案过于复杂冗余,存在资源调度困难、利用率低下、难以快速交付部署等问题。因此,使用共享内核的轻量级容器技术成为云原生时代更好的选择。

带你读《云原生应用开发 Operator原理与实践》第一章引言1.1云原生介绍(五)

图 1—5虚拟机 vs容器

 

容器化改造是将传统应用程序和其所需的运行环境打包在一起形成完整的镜像,使得应用可以运行在 Docker、KataContainer   或其他类似容器中。容器化改造的具体流程如下。

(1)  抽离环境不同导致配置项发生变化,用环境变量或参数等形式传入应用。

(2)   编写 Dockerfile文件 ,在 Dockerfile 中安装程序运行依赖的第三方软件包。

(3)  根据 Dockerfile 文件构建容器镜像,并推送到容器镜像仓库。容器化改造后,应用程序将具有如下优势。

(1) 标准化:只需配置好 Docker 或其他类似容器的运行时环境,即可消除开发、测试、生产环境的不一致性,从而实现一次构建,随时可运行。

(2) 快速交付,通过构建容器镜像,可以实现高度定制化的自动交付部署机制,以及错误回滚机制,极大地降低运维流程的复杂度。

(3) 高效:由于容器间相互隔离,确保了应用有序竞争资源,从而降低系统整体资源负载。


2. 微服务化改造 

容器化改造本质上是优化了应用运行的环境,并没有改变传统应用内部模块的耦合,存在扩展困难、可靠性低等问题,因此,微服务化改造应运而生。

微服务化改造就是将原有的单体应用按照业务范围划分成多个微服务,服务之间相互独立,通过远程过程调用协议(RPC,RemoteProcedureCallProtocol、RESTfulAPI等轻量级通信机制通信,整体形成分布式的架构。

容器化改造结合微服务化改造,应用将具备更多优势。

(1) 松耦合:由于容器的隔离性,不同服务内部独立,可以采用不同的开发语言,独立测试、部署,不需要考虑技术栈的相互影响;个别服务业务变动,重新部署上线也不会影响其他服务。

(2) 扩展性:随着服务复杂度的提升,需要分配更多的资源,结合容器技术可针对所需服务进行资源的精准按需分配,提高资源利用率;同时当业务需要添加新的第三方依赖时,得益于容器化的轻量性,可以快速启动依赖服务。

(3)  高可靠:重点服务可大量横向扩展,以确保服务的高可用性;此外得益于低耦合和容器的快速部署,可动态根据流量规模对部分服务进行动态扩缩容。

结合云原生平台提供无侵入式的自动化服务发现、监控、容错、追踪等微服务网格

(ServiceMesh)的能力,可以进一步发挥微服务改造后应用的优势。

 

上一篇:带你读《云原生应用开发 Operator原理与实践》第一章引言1.2Operator 介绍(五)


下一篇:带你读《云原生应用开发 Operator原理与实践》序言