DevOps入门:小型DevOps

导航至

DevOps是科技领域一个很酷的交汇点,其中流程、工具和哲学都相互碰撞。但使它有趣的事物也正是使其难以理解和采用的事物。对于DevOps新手来说很难——至少对我来说是这样的——因此,我想尽我所能使其他人更容易入门。

第一次在工作中提到DevOps时,我像不知道发生了什么但很确信可以通过Google找到答案那样点了点头。

<figcaption>关于DevOps你需要知道的一切</figcaption>

事实证明——它有点难以Google,因为它太广泛了。我在每个关键词上遇到了障碍。我发现了一些我从未听说过的词。我分支进入了一千个更小的搜索,直到我忘记了最初试图查找的内容。可供选择的工具太多了,而且每款工具似乎都要求我具备我不具备的背景知识。

所以我Google了所有DevOps最佳实践的组合,但仍然,我感觉我错过了DevOps的魔力。

由于尝试使用适用于拥有数百万用户和数千名员工的全球公司解决方案存在问题,即使它们是最成功的模式。我的公司——就像大多数科技公司一样——没有数百万用户和数千名员工,我们需要适合的解决方案。

最创新的DevOps策略令人印象深刻,它们大多来自大型公司。大型公司有数据库团队来制定策略并从数据库中收集数据。大型公司有网络团队来编排和监控他们的网络。大型公司可以承担几乎每个问题的团队。在平均规模的公司,我们没有这种能力。我们必须发挥我们的专长,并做出我们能做的最好的决定。这几乎总是涉及到权衡。

当然,大型公司必须解决的问题很难,但这并不意味着小型公司面临的挑战更少或更简单。我们几乎都在试图优先考虑和妥协,以使DevOps解决方案适用于我们。那么我们该从哪里开始呢?

采用DevOps不是从采用工具开始的——它是从采用DevOps社区的基本价值观开始的。

洞察力

技术洞察力可以以很多形式出现。例如,我们可以从不同的应用程序、基础设施和平台级别监控系统。即使是小型公司,使用多种工具来完成这项任务也成为了一种增长趋势。我们可能使用一个工具来收集日志,一个来收集网站流量,另一个来管理扩展。然后,我们可能还有最后一个工具来统一所有这些数据来源。

<figcaption> 过多的洞察力 </figcaption>

这对我来说已经听起来令人不知所措了。在我工作的前两个月里,真正聪明的人向我解释了很多概念,但我感觉就像是在看太阳——我的大脑在融化,我的眼睛在流泪。直到我第一次使用我们的工具从我的一个旧的Rails应用程序中获取一些指标,我才明白。我不需要精细、颗粒化的数据。我需要从我应用程序中获得基本指标,例如响应时间、响应代码和数据库查询时间。即使这么一点数据也足以改善我的代码。

我们用来获得洞察力的工具有它们的工作要做,但它们不应该占用我们的资源。特别是在DevOps中,我们使用的工具应该鼓励我们的协作文化,而不是创造更多的障碍。

即使是最基本的水平,看到你应用程序的指标也比担心使用哪个工具重要得多。

沟通

沟通是DevOps中最困难的部分。这可能是我看到最多讨论的领域,是我们所有人需要改进的领域,也是我们失败最多的领域。

想想所有层次的沟通:团队成员和不同团队之间,我的代码和它的使用者之间。我们必须认识到,即使我们对应用程序的行为有了洞察力,如果没有沟通,可能也不会有任何进展。

我们应该以我们编写代码相同的方式思考我们收集的数据和指标。下一个人会理解我们的意图吗?如果我们不小心,对应用程序进行工具化可能会给其他人带来更多的工作——即使那个人只是六个月后的你,想知道你当时在想什么)。

假设其他人知道如何解释指标存在一定的风险。例如,当我使用我的InfluxDB Enterprise集群(无耻地推广)中的数据节点超过60%时,我可能会收到警报(shameless plug)。这不一定是因为该数据节点处于危险状态,而是因为我正在考虑一个场景,其中两个数据节点都在60%运行,其中一个节点崩溃后,剩余的节点立即达到120%,这意味着我没有任何节点可用。没有我的上下文的人可能对那个警报有非常不同的反应,特别是如果他们在凌晨3点被叫醒。我们意图并没有写入我们收集的数据中,因此我们确保我们的意图清晰是我们的责任。在这种情况下,可能只是简单地将警报消息说清楚。

认识到沟通策略像采用它们的公司一样多样和独特也很重要。也许你的团队强调代码中的注释或描述性的提交信息。也许你的团队希望有使用过的工具的书面历史。如果你根据组织需求更改成功的沟通工具和模式,这是完全可以的。

结论

我们总是比任何外部来源更好地理解我们的团队、数据和代码,因此我们适应那些异常组织的工作策略是合理的。他们是成功的和特别的,但记住,大多数小公司从未需要担心全球霸权。

如果我们拥抱DevOps,我们就在拥抱我们需要更多沟通和洞察力的想法,因此我们采用的工具和实践永远不会阻止我们分享数据、协作或构建我们的文化。