如何让你的初创公司的云更稳定:4 个实用的 DevOps 技巧

在创业的世界里,当你把时间投入到哪里时,有一个平衡的行为。我遇到过很多情况,由于需要发布 MVP,DevOps 实践处于次要地位。

我认为这是正常的,并不是一件坏事,因为“MVP”应该是“最小的”,而好的 DevOps 解决的大多数问题都不是这么小的问题。

但这里有几件事绝对应该做(或至少考虑)。因为在创业世界中,没有比让您的云基础设施崩溃更糟糕的事情了。

k305qMPtQ5JQ-YTmewSKZ4QMr3yDxxi4Lhso
当有很多其他事情要做时,很难在初创公司中找到时间进行 DevOps

提示 #1:安排数据备份?

对于任何关心拥有持久数据的初创公司来说,这都是必须的。您需要自动备份您的关键数据,否则您可能不仅会丢失文件,还会失去客户信任,这将影响您未来的发展。

我通常在启动项目时自动执行两种类型的备份方法

数据库备份

这通常采用计划脚本的形式,例如每天晚上运行的 cron 作业,并将数据库转储推送到云上某处,例如私有 S3 存储桶。您可以通过一些备份解决方案获得更多奇特的解决方案,但这些解决方案往往更侧重于企业,并且会花费您大量的时间和金钱(对启动不友好)。

xVaOSbJdAg94fofj9T705IRPpB8xOnY5ttfH

磁盘快照

当所有其他方法都失败时,如果您有磁盘副本,通常会很安全。大多数主要的云提供商都有适当的解决方案,可以让您按照您选择的时间表拍摄磁盘快照,因此请尽量避免编写直接连接到云 API 的脚本,因为您将负责维护它们。

? ?确保测试您的备份恢复方法或风险发生在 GitLab上,他们的所有 5 种备份方法都失败了,因为他们从未测试过恢复?

提示 #2:设置监控并收到问题警报 ?️

您会知道服务器何时出现故障或应用程序因磁盘空间不足而崩溃吗?如果没有,您应该考虑解决该问题(不需要太多时间)。

设置监控的最简单方法通常是像Amazon CloudWatchGCP Stackdriver 这样的云提供商解决方案。您可以设置指标来监控和发出不同类型的警报,以响应云基础架构中发生的这些事件,例如当您的磁盘运行不足时收到一封电子邮件。

如果您不想使用供应商的解决方案——也有与云无关的选项可以监控您的云。存在简单的解决方案,例如安排定期运行发送电子邮件的 shell 脚本,但更全面的解决方案为您提供系统的仪表板视图通常更好且更具可扩展性。企业私有云存在Blue MedoraSolar Winds等选项,但大多数初创公司需要省钱,这意味着转向开源解决方案,例如Countly

总而言之,我建议使用基于云提供商的解决方案,因为这些解决方案将保证稳定、易于设置,并且在初创公司的规模上不会花费你太多额外费用。

提示 #3:转向 CI/CD 管道?

u3t9eAehi-11vaS36FCSnYsIYtc94mPTGuoS

我在初创公司中看到的常见难题之一是发布代码的过程。许多人还没有将时间投入到 DevOps 来开发稳定的发布管道,这意味着推送到版本控制的代码要么是手动测试、构建和发布,要么容易出错,而且对你的开发来说很耗时团队。

持续集成——确保变更不会中断

持续集成的重点是每次代码准备好提交时都会启动一个管道。

M-Dh7rZOrTVvpB7ExmQgrwq971QiOmVcPv5C
持续集成保护您的代码库的稳定性
  1. 代码提交到版本控制
  2. 像 Jenkins 这样的自动化系统会创建应用程序的构建
  3. 执行自动化测试以验证系统是否仍然正常工作
  4. 一旦所有测试都通过,就可以将代码添加到稳定的代码库中
  5. 新代码现在可以部署了(这就是持续部署发挥作用的地方)

 

持续部署——自动化你的发布到生产

持续部署在您的持续集成管道完成验证新代码的工作后开始,不会破坏您的构建。这通常包括创建一个新的生产构建,就像在持续集成阶段所做的那样,并替换旧的构建(不可变的基础设施)。

从技术上讲,您可以在没有持续集成的情况下进行持续部署,但这样做的风险很大。您基本上会将未经测试的代码直接推送给客户(?B AD?

转向 CI/CD 时应该从哪里开始?— 自动化测试!

众所周知,大多数开发人员不喜欢编写测试。随着应用程序的发展,它们往往需要不断更新,并且需要大量时间,因此许多初创公司自然会因为“MVP”而忽视编写测试。

如果您没有全面的测试套件,我不会费心考虑 CI/CD,直到解决此问题。随着测试覆盖率的提高,您将开始看到主要的效率提升,因为您看到生产中的错误越来越少。这是您应该继续进行 CI/CD 管道的其他部分的时候。

提示 #4:容器化您的应用程序?

Rl8fBg6SSZ2ixPA3NjmdWfzYRuFgfQ9HT1AB
容器使创建应用程序的自动化构建变得容易

不要害怕容器,虽然技术本身很复杂,如果没有内核的基本知识就很难理解,但利用它们并将应用程序转换为容器真的很简单。

整理一个 Dockerfile(取决于您的应用程序的复杂性)通常需要不到一个小时的时间,并且在您知道它之前,您可以立即部署您的应用程序并利用 Kubernetes 等出色的系统。

以下是通过容器化应用程序可以立即获得的一些好处。

一致的构建

不再有“它在我的机器上工作”的问题——如果容器构建,它将以相同的方式在任何机器上运行。

无痛部署

你知道当你想建立一个开源项目时,你必须经历各种手动步骤,设置数据库和安装所需的包吗?使用容器不再是这种情况,所有这些步骤都被纳入构建过程,您需要做的就是运行一个命令来启动您的服务器。

充满活力的容器生态系统

Docker 和 Kubernetes 等容器平台拥有庞大且不断增长的产品和服务生态系统,可帮助您更轻松地管理应用程序。基本上消除了诸如存储、网络和资源分配之类的许多令人头疼的事情,从而节省了您的时间和金钱。

结论

许多初创公司并没有在他们的云基础设施上投入太多精力或时间。这通常是由于 MVP 的理念是先发货,然后再清理技术债务。

在寻求扩展您的 DevOps 基础架构时——考虑计划备份、监控、CI/CD 和容器化。这些通常很容易获胜,并将导致更加稳定的云。

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!