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

简介: 带你读《云原生应用开发: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日志并进行多维度分析。
相关文章
|
22小时前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第11天】 随着数字化转型的深入,企业对技术的敏捷性、可扩展性和成本效益提出了更高的要求。云原生架构作为一种新兴的设计理念和实践方法,正逐渐成为推动企业技术革新的关键力量。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续交付(CI/CD)以及DevOps文化,并分析它们如何共同作用于企业的IT基础设施,实现灵活、高效的运营模式。同时,我们也将识别在采纳云原生技术时面临的主要挑战,并提出相应的解决策略,以帮助企业顺利过渡到云原生时代。
|
3天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第9天】 随着数字化转型的浪潮席卷全球,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,并分析了这些技术如何帮助企业加速产品上市时间,提高运营效率,并最终实现业务目标。同时,文章也识别了企业在采纳云原生实践中可能面临的挑战,如安全性考量、团队技能提升和复杂的网络管理,并提出了相应的解决方案和最佳实践。
|
5天前
|
Kubernetes Cloud Native 持续交付
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
【5月更文挑战第7天】本文探讨了Docker和Kubernetes如何协同构建和管理云原生应用。Docker提供容器化技术,Kubernetes则负责容器的部署和管理。两者结合实现快速部署、自动扩展和高可用性。通过编写Dockerfile创建镜像,然后在Kubernetes中定义部署和服务进行应用暴露。实战部分展示了如何部署简单Web应用,包括编写Dockerfile、构建镜像、创建Kubernetes部署配置以及暴露服务。Kubernetes还具备自动扩展、滚动更新和健康检查等高级特性,为云原生应用管理提供全面支持。
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
|
6天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第6天】 在数字化转型的浪潮中,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了如何利用Kubernetes这一领先的容器编排平台,结合微服务架构,构建和维护高效、可伸缩的云原生应用。通过分析现代软件设计原则和最佳实践,我们提出了一个综合指南,旨在帮助开发者和系统架构师优化云资源配置,提高部署流程的自动化水平,并确保系统的高可用性。
28 1
|
8天前
|
Kubernetes Cloud Native Docker
使用 kubevpn 在本地快速开发云原生应用
KubeVPN 是一个用于云原生开发的工具,它允许用户通过本地计算机直接访问远程 Kubernetes 集群中的服务,利用 k8s DNS 或 Pod IP/Service IP。它可以拦截并调试服务网格中的工作负载流量,并提供开发模式,让容器在本地以与 k8s pod 相同的环境运行。快速开始包括下载二进制文件、自定义 Krew 安装、构建二进制文件以及安装示例应用。KubeVPN 支持链接到多个集群、DNS 解析、反向代理,以及在 Docker 中的开发模式,确保与 Kubernetes 运行环境一致。此外,它还兼容多种协议和平台。
23 5
|
11天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第1天】 随着数字化转型的深入,云原生技术以其灵活性、可扩展性和敏捷性成为现代企业IT架构的核心。本文将探讨云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps实践,并分析它们如何共同塑造企业的运营模式。同时,文章还将讨论在采纳云原生过程中企业可能遇到的挑战,如安全性问题、技术复杂性以及组织文化的转变,并提出应对策略。
28 8
|
11天前
|
运维 Cloud Native 持续交付
构建未来:云原生技术在企业数字化转型中的应用
【5月更文挑战第1天】 随着企业加速其数字化转型的步伐,云原生技术作为推动创新和灵活性的关键力量,正变得日益重要。本文深入探讨了云原生技术如何为企业提供高度可扩展、灵活且安全的解决方案,以及它如何支持企业在不断变化的市场环境中保持竞争力。通过对容器化、微服务架构、持续集成/持续部署(CI/CD)等核心技术的剖析,揭示了它们如何共同塑造一个更加敏捷和响应迅速的开发环境。文章还讨论了企业在采纳云原生技术过程中面临的挑战,并提出了一系列策略建议,以帮助企业顺利过渡到云原生模式。
|
21天前
|
消息中间件 Cloud Native 开发者
电子好书发您分享《阿里云云原生开源开发者沙龙北京站 PPT 合集 》
**阿里云开源沙龙PPT合集:北京站聚焦云原生技术** 探索云原生领域的深度与广度,[阿里云](https://developer.aliyun.com/ebook/8334/116563?spm=a2c6h.26392459.ebook-detail.5.da096cf6t38G15)分享了北京开发者沙龙的精彩内容,涵盖微服务、消息队列等主题,助力开发者洞悉行业趋势。![image](https://ucc.alicdn.com/pic/developer-ecology/cok6a6su42rzm_67b12f6cad6e4b2786859b3a668b3351.png)
19 3
|
2月前
|
人工智能 监控 Cloud Native
iLogtail 2.0 来了;通义灵码下载量破百万丨阿里云云原生 2 月产品月报
iLogtail 2.0 来了;通义灵码下载量破百万丨阿里云云原生 2 月产品月报
|
3月前
阿里云云原生恭祝大家新年快乐!
阿里云云原生恭祝大家新年快乐!

热门文章

最新文章