在数字化转型开始的时候,需要编写代码进行构建,开发人员应该对其进行负责。他们精心设计了逻辑,然后使其在服务器上运行。随着团队的扩大和人员的差异化,这种情况发生了变化,一些团队成员维护代码(Dev),而另一些团队成员则负责维护机器(Ops)。
如今,由于云计算和微服务的兴起,采用软件将由数十个甚至数千个运行在不同计算机上的组件组合在一起。每台机器在技术上都是独立的,但所有这些机器都必须协同工作。确保它们的执行最好通过自动化脚本来完成。
DevOps团队的主要任务是提供这些面向应用程序的所有高级流程。它们可能无法处理软件体系结构的深层次问题,但它们可以保持部分平稳运行。
尽管如此,DevOps专业人员这一角色仍然相对较新,其职责尚未明确界定或分配,其技能仍在不断发展。DevOps专业人员是跨职位、执行编程和运营的混合,但是许多团队发现保持服务器平稳运行就足够了。在编程团队更改代码以及更改代码运行方式的过程中,配置它们需要对细节进行精心规划。
随着越来越多的组织寻求DevOps专业人员支持其数字化转型,重要的是要有清晰的看法。对于DevOps的新兴领域,以下是一些隐藏的事实和人们普遍存在的误解。
1. DevOps不是编程人员
许多管理人员认为DevOps专业人员并不是编程人员,他们的想法是正确的。但DevOps专业人员的工作职责已经发生了变化,一些处理字节和数据结构的许多混乱工作都分配给了不同的编程人员。从策略上讲,使程序人员摆脱保持一切正常运转的责任是有道理的,因为他们可能沉迷于现代堆栈中。
但是DevOps专业人员仍然必须编写一些代码。他们仍然需要抽象地考虑隐藏的数据结构。仅使所有内容保持运行需要无休止的命令行调用,这些调用通常可以收集并简化为shell脚本。尽管一些编程纯粹主义者可能不会将这样的高级工作归类为编程,即使它包括函数调用、参数和变量,但现实情况是,DevOps人员具有与程序员相同的技能类型。
2. 管理程序员是主要工作
即使DevOps专业人员不编写代码,他们最终还是要管理程序人员,而这通常开展很多工作。每个开发人员都在创造新颖而美丽的事物,他们编写的代码是一种艺术。每个人都希望立即将其容器投入生产。他们通常这样想,代码运行顺利吗?一切都会崩溃吗?确保编码人员不会把事情搞砸是DevOps专业人员的重任。
3. DevOps正在慢慢接管
当软件应用程序比较简单的时候,程序员拥有所有的控制权。现在应用程序通常被分成几十个甚至几百个微服务,DevOps专业人员负责它们的运行情况,并且仍然有架构师和程序员在决定如何将服务连接在一起,但是DevOps专业人员负责如何将它们连接在一起,这是一个越来越重要的难题。
4. DevOps不用管理成本
当云计算提供商以每小时几美分的价格为使用其云服务定价时,他们很聪明。但是随着云计算实例数量的运行和时间的推移,这些费用就会累加起来。在30天的一个月中有720个小时,因此一台每小时仅花费1美元的机器一年的费用为8,760美元。这时,用户可能感觉到自己采购和运行服务器可能更便宜。
在收到一些成本高昂的账单后,一些团队可能配备了DevOps审核人员,其唯一职责是在混乱的机器中寻找节省资金的方法。他们检查了业务生产细节,然后开始说“不”。他们将会计较每一分钱,因为他们知道这样可能节省预算。
5. 只有少数几种方法可以提高性能
管理云计算的工作变得更加困难,因为DevOps专业人员通常只有几个工具和方法可以利用。一旦程序员提交代码并构建容器,DevOps专业人员的工作就是让它们运行。如果它们看起来很慢,可以尝试添加更多的虚拟CPU或RAM。如果速度仍然很慢,他们可以在机房中增加更多的机器来分散负载。
6. 完成拆除工作
最深层的问题之一是计算机总是在记录错误。例如一些容器每隔几个小时就会崩溃。可能是数据库连接失败,可能是参数配置错误。答案可能在日志文件中,但是从未发现。 Kubernetes非常友善,可以启动另一个实例,然后回答查询并完成其工作。这是故障安全体系结构的一个示例,即使其内部混乱不堪。
只要用户和客户都能完成工作,通常每个人都可以更轻松地换个角度来看问题,而忽略所有虚拟的拆除工作。
7. 数据库支配一切
人们可能会为所有的本地代码而感到烦恼,而把AJAX this或CSS弄乱了,但是最后,所有数据都在数据库中找到了家。经典数据库仍然是代码的核心。这是真理的唯一来源。如果团队能够保持运行并回答问题,那几乎就是全部工作。用户可以容忍未对齐的DIV或奇怪的新布局,但不能容忍数据库损坏。行业专家曾经为一个使用最新、最出色的Node.js软件包的团队审核过代码,不断地更新其堆栈以保持最前沿。但是该数据库已有10多年的历史了。没有人想对其进行改动。
8. 对代码的运行方式知之甚少
如今仪器的性能可能是惊人的。人们可以通过各种软件运行来感受到数据激增,就像水手感觉到风浪一样。随着机房负载量的波动,人们知道工作负载事情何时正常运行以及何时不堪重负。如果负责电子商务网络应用程序,那么DevOps专业人员将是第一个知道折扣何时生效的人,因为其应用程序的负载将会激增。
这些数字总结了组件的平均应变和响应时间,但无法告诉原因。而了解程序员可以知道组件内部发生了什么事情,他们可以隔离错误并找到解决方案。
一些商业人士可能希望拥有无所不能、无所不知的技术人员,并且能够自下而上地理解整个堆栈。但对许多公司来说,这工作量太大,代码行太多。最好为DevOps专业人员和程序员找到一种简单的协作方式。
9. 一切都有些神秘
计算机可能完全是逻辑机器,其中代码以可预测的确定性方式演化。出现每个错误都是有原因的。工作人员可以采用调试器,查看日志文件,仔细检查代码,但是谁有时间呢?
就像通过重新启动设备可以解决90%的技术问题一样,DevOps专业人员需要做同样的事情。可以肯定,在使用诸如“容器”和“实例”之类的词,并且采用大量仪表跟踪正在发生的事情,但是最后,继续前行通常更快捷、更简单。