DevOps 已死,AppOps 长存

简介:   本文最初发布于 Medium 网站,经原作者授权由 InfoQ 中文站翻译并分享。  没错,我玩了一把标题党。很抱歉,但这样做也是有理由的。我希望大家都来关注 DevOps 中一个被人低估的新趋势,即 AppOps。  在 IT 世界中,时不时学习新的流行语是家常便饭。大多数流行术语就像流星一样,在你完全理解应该学习的内容之前就消失在了天际。还有一些概念会成为接下来几年中的趋势,比如 DevOps 和 Frontend 就是两个例子。  新的术语层出不穷,所以我们必须专注于其中真正有意义的那些。我并不相信什么流行语或者趋势,我相信的是概念。即便技术和趋势纷纷过时,概念依旧长青。

  本文最初发布于 Medium 网站,经原作者授权由 InfoQ 中文站翻译并分享。

  没错,我玩了一把标题党。很抱歉,但这样做也是有理由的。我希望大家都来关注 DevOps 中一个被人低估的新趋势,即 AppOps。

  在 IT 世界中,时不时学习新的流行语是家常便饭。大多数流行术语就像流星一样,在你完全理解应该学习的内容之前就消失在了天际。还有一些概念会成为接下来几年中的趋势,比如 DevOps 和 Frontend 就是两个例子。

  新的术语层出不穷,所以我们必须专注于其中真正有意义的那些。我并不相信什么流行语或者趋势,我相信的是概念。即便技术和趋势纷纷过时,概念依旧长青。

  所以我会在这篇文章中讨论 AppOps 这个概念。读完本文后,当你开始听别人谈到新的 AppOps 趋势时,你就知道该怎样跟他们讨论和争论了。

  顾名思义,NoOps 趋势旨在消除开发和运维之间的所有摩擦,做法就是直接把运维去掉了。

  看起来这是一个颇为激进的解决方案,但我们也用不着从字面上去理解它。正确的解释——也是可行的解释——是在部署和交付阶段尽可能移除人为因素。

  这种方法自然是由云来提供支持的,云可以帮助各种事物实现自动运作。如果你有兴趣了解更多关于 NoOps 的信息,可以参考我几年前写的一篇文章。

  顺便说一下,要继续阅读本文,你只需知道:

  NoOps 做的就是减少部署管道中的人为因素,并将感知带入开发团队。

  因此,NoOps 与 DevOps 并不冲突。相反,它说的只是在情况允许时以巧妙的方式使用 DevOps。

  不管你正在编写的是一个小型应用程序还是一个非常大的项目,你都需要合适的 DevOps 设置才能继续下去。

  我简直无法想象在 2021 年会有人通过 FTP 上传文件来更新应用程序——如果你正在这样做,请赶快停止吧。

  所有人都需要 DevOps 和基础设施,但是我们真的要在上面花费时间和金钱吗?

  当然,我们必须这样做,因为好处太明显了!但如果我们从投资者的角度来看这个问题,我们就会明白这不是团队的最终目标。

  如果说技术是让事物由概念走向实践的推动因素,那么 DevOps 就是提高事物效率的方法。但是我们不能忘记我们的应用程序应该做的那些“事情”。

  这就是 AppOps 的目的:将注意力集中在应用层面,包括源代码和基础设施。

  AppOps 优势体现得最明显的场景之一就是基于 Kubernetes 的应用程序。如果你打开一个个集群,你会发现很多 pod/service/deployment 设置大体都是一样的。

  事实上,每个 PHP 应用程序都有相同的配置,只有参数不一样。Java、.Net 或其他应用程序也是如此。问题是 Kubernetes 对主机应用程序的内容是不可知的,因此它需要将所有细节都告知应用。

  即便用的技术都是一样的,我们也必须从头开始处理所有新的应用程序,为什么?

  我本应只解释一次 PHP 应用程序的组成方式。而且我不该浪费时间来定义 PHP 应用程序的部署方式,因为世界上所有的 PHP 应用程序基本上都是相同的,我希望有人(可能是供应商)向全日制社区提供一次正确的配置来重用。假设有一个可重用的配置。你就只需要简单地开发应用程序就够了,无需再费力做那些重复性任务,不再重新发明轮子。此外,你还可以专注于真正重要的事情,不用操心什么细节。

  前面我说的关于 Kubernetes 的内容还可以扩展到虚拟机、云服务等等。这就是 AppOps 的有趣之处。

  可以想象,Kubernetes 没有什么水晶球插件可以让集群预测你正在部署的购物内容。Kubernetes 是一个容器编排器,将自身确立为抽象基础设施的标准,你不能强求它做更多事情。所以我们基本上有两种选择:

  准备可以重用的配方或工件(例如一组 YAML 配置),按以前的方法做事。采用一种允许你专注于应用程序、不再操心基础架构的解决方案,以云方式实现它。

  我们来具体看看两种方法的细节。

  老方法是最简单但最不时髦的解决方案,不过你用不着重新发明轮子了。

  如果你正在使用 Kubernetes,你可以使用 Helm 或 ArgoCD 等工具自动设置应用并创建可重用的应用定义。

  如果你使用的是虚拟机,一个好的解决方案是准备 Ansible 脚本。

  此外,你可能有兴趣探索 Terraform 这种简单的基于云的解决方案,用它将基础设施作为代码来管理。

  除了上面这些解决方案之外,你还需要制作第一个解决方案的原型,并部署这个部分。因此我更喜欢下面这种方式!

  在云时代,使用现成即用的服务是加快事物实现的巨大推动力。

  所以我们应该首先评估易于使用的解决方案。在 Kubernetes 领域有一些云工具,它们可以让你在应用程序级别部署,无需操心背后的事物。

  第一个工具是Shipa,这是一个非常有趣的新兴解决方案,用来在没有任何 DevOps 流程的情况下部署应用程序。这个解决方案确实可以让我们只专注于应用程序开发而忘掉服务器。

  第二个选项是Devtron,它提供了一个交付工作流实现,可以简化 Kubernetes 管理并让部署过程非常顺滑。这款工具与一些预定义的配方相结合,可以让我们忘掉基础设施。

  我相信很快就会有越来越多的解决方案以 AppOps 的方式实现 DevOps 的目标,就像技术世界每次都会看到的那样,工具永远不会成为问题。

  应用程序开发和交付领域在过去几年中取得了令人难以置信的创新和发展。

  Kubernetes 是加快开发速度和减少开发与运维之间摩擦的革命性工具中的一员。我们可以在网络上找到大量资源,并且云也提供了巨大的推动力。

  虽然这些解决方案都推动了全球的数字化转型,但我们并没有就此止步。我们现在希望不要再为管理这些工具和复杂性付出那么多精力,这样才能更多地关注应用程序的开发,并为最终用户带来更多价值。

  AppOps 是实现这一目标的一种方法。有了那些从更高视角管理基础设施的工具后,我们就能隐藏复杂性,专注于那些对业务真正重要的事情。并且这样做是可行的,我们已经有许多工具可以很好地实现这一目标。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Cloud Native 安全 虚拟化
云原生技术中的容器技术有哪些?
云原生技术中的容器技术有哪些?
247 1
|
NoSQL Ubuntu 关系型数据库
轻松上手 Docker:一键部署常用软件环境指南
轻松上手 Docker:一键部署常用软件环境指南
1571 0
|
9月前
|
应用服务中间件 nginx Docker
配置Containerd运行时镜像加速器
containerd配置国内容器镜像加速器
3523 1
|
12月前
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
1920 8
|
存储 JSON 自然语言处理
大模型服务平台百炼之模型训练与调优实践分享|快来围观~
模型调优是通过Fine-tuning训练模式提高模型效果的功能模块,作为重要的大模型效果优化方式,用户可以通过构建符合业务场景任务的训练集,调整参数训练模型,训练模型学习业务数据和业务逻辑,最终提高在业务场景中的模型效果。
2962 9
C#——向上转型
在学习C#的过程中,一些基础知识比如数据类型、控制结构、数组等都与之前接触的语言大同小异,还能够理解,但是向上转型这个概念还是第一次遇到。
C#——向上转型
|
NoSQL Linux PHP
使用单进程、strace、gdb调试PHP错误
使用单进程、strace、gdb调试PHP错误PHP一般是在FPM的呵护下运行的,但是某些情况下进程异常崩溃会导致502。下面是解决思想: 1. 单进程运行: php -d display_errors=1 -S 0.
1994 0
|
SQL 关系型数据库 MySQL
Amoeba
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将 SQL请求发送到特定的数据库上执行。
1636 0
阿里云服务器托管-云服务器托管介绍
阿里云服务器托管是什么意思? 阿里云服务器托管就是在阿里云购买云服务器。阿里云负责云服务器的维护及安全。 我们只需要在阿里云买服务器,然后各种服务器的维护交给阿里云就行了。我们只管使用
2826 0