带你读《云原生应用开发:Operator原理与实践》——1.1.3 应用云原生改造

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 带你读《云原生应用开发:Operator原理与实践》——1.1.3 应用云原生改造

1.1.3 应用云原生改造


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

应用的云原生改造基本分为 3 个阶段:

(1) 容器化改造;(2) 微服务化改造;(3) DevOps 改造。下面分别说明。


1. 容器化改造

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

image.png

图 1-5 虚拟机 vs 容器

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

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

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

(3) 根据 Dockerfile 文件构建容器镜像,并推送到容器镜像仓库。

容器化改造后,应用程序将具有如下优势。

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

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

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


2. 微服务化改造

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

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

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

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

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

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

结合云原生平台提供无侵入式的自动化服务发现、监控、容错、追踪等微服务网格(Service Mesh)的能力,可以进一步发挥微服务改造后应用的优势。


3. DevOps 改造

基于容器化和微服务化改造的基础, DevOps 改造可以解决应用开发过程中存在的需求变化快、交付慢、运维成本高等问题。从严格意义上讲,DevOps 不只是一个技术范畴,而是组织、流程与技术的结合。

(1)组织上:团队敏捷开发,特性专一,每个业务可以被独立地开发、发布和运维。

(2)流程上:强调端到端、可视化、灰度升级、链路追踪、故障自动回滚等。

(3)技术上:打破开发、测试和运维之间的壁垒,引入 CI/CD(持续集成 / 持续支付) 工具。

DevOps 改造流程具体如下。

首先需要完成容器化改造和微服务化改造,此时应用可以容器化部署运行,且已拆分业务逻辑,实现松耦合。

然后进一步微服务化改造,或者叫网格化改造,如图 1-6 所示,随着业务的发展,一个应用容器中除了业务代码,可能还包括日志、监控、限流熔断、链路追踪等运维功能的代码,此时即使只是调整日志模块的代码也需要将整个应用重新打包发布并升级部署,为了让应用更专注业务本身,需要将日志监控这类服务治理类的代码抽离出应用容器,放到 Mesh Sidecar(边车模式) 形式的容器中,这样应用只需关注业务变化。

image.png

图 1-6 网格化改造对比图

最后引入 CI/CD 工具,如图 1-7 所示,实现从代码推送到应用部署的全流程自动化。

image.png

图 1-7 CI/CD 流程

完成 DevOps 改造,业务代码推送后借助 CI/CD 工具自动打包镜像,持续部署,并利用 Service Mesh 的能力实现自动灰度发布和错误回滚,同时利用日志、链路追踪实时监控业务,从而实现业务的全链路持续集成交付以及自动化运维。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
25天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
26天前
|
运维 Cloud Native 安全
云原生技术在现代企业中的应用与挑战####
本文探讨了云原生技术在现代企业IT架构中的关键作用,分析了其带来的优势和面临的主要挑战。通过实际案例分析,揭示了如何有效应对这些挑战,以实现业务敏捷性和技术创新的平衡。 ####
|
23天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
28天前
|
Kubernetes Cloud Native 物联网
云原生技术在现代软件开发中的应用与挑战####
本文探讨了云原生技术的兴起背景、核心理念及其在现代软件开发中的广泛应用。通过具体案例分析,揭示了云原生架构如何促进企业数字化转型,并指出了在实施过程中面临的主要挑战及应对策略。 ####
|
18天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
23天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
1月前
|
消息中间件 Cloud Native 持续交付
云原生技术在现代企业中的应用与优势###
本文深入探讨了云原生技术在现代企业中的具体应用及其带来的显著优势。随着云计算的普及,云原生作为一种新兴的技术架构,正逐渐成为企业数字化转型的关键驱动力。文章将详细介绍云原生的核心概念、主要技术组件以及在实际业务场景中的成功案例,旨在为读者提供一个全面且实用的参考框架,以便更好地理解和应用云原生技术。 ###
|
23天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
44 3
|
1月前
|
Cloud Native 持续交付 云计算
云原生架构的演进与挑战
随着云计算技术的不断发展,云原生架构已成为企业数字化转型的重要支撑。本文深入探讨了云原生架构的概念、发展历程、核心技术以及面临的挑战,旨在为读者提供一个全面了解云原生架构的视角。通过分析Kubernetes、Docker等关键技术的应用,以及微服务、持续集成/持续部署(CI/CD)等实践案例,本文揭示了云原生架构在提高应用开发效率、降低运维成本、增强系统可扩展性等方面的显著优势。同时,也指出了云原生架构在安全性、复杂性管理等方面所面临的挑战,并提出了相应的解决策略。