不久以前,大多数员工远程工作是不寻常的,尤其是全职工作。然后,在2020年3月,出现了全球大流行病。突然间,厨房的桌子、客厅和卧室都被改成了办公场所。
Slite,一家以远程为先的公司,帮助分布式团队分享想法,汇集知识,并跨越时间和空间保持一致,它提供了一个基于云的解决方案,以存储和连接文件,并建立一个知识库,使用起来非常有趣和吸引人。一夜之间,在家工作的热潮给Slite带来了巨大的商业机会。但它也带来了一个直接的挑战:如何快速扩大规模,以满足消费者的海啸式需求。
该解决方案也必须是可持续的:所有迹象表明,对远程工作的兴趣浪潮不会随着病毒的威胁而消退。在Gartner于7月发布的一项调查中,超过80%的雇主表示他们计划继续允许至少部分时间的远程工作,42%的雇主表示他们计划容纳全职远程工作。
本案例研究解释了Slite如何与Container Solutions和Google Cloud合作,为自己的指数级增长做好准备。
为GitOps提供案例
Slite与Container Solutions合作,在一套被称为GitOps的实践中找到了扩大交付能力的关键。这是一种全新的运营架构,在科技公司中被广泛采用,特别是在云原生领域。
GitOps的核心思想是将你的应用程序的基础设施设置保存在像Git这样的版本控制系统中,使其能够轻松地自动部署到任何特定的环境中。
通过使用Git进行部署,你将会有一个变化的历史,并为每一个变化提供信息,而且大多数Git供应商,如GitHub,已经有内置的用户和访问管理。这可以解决一些安全问题,也便于非工程师审计你的部署历史。
在实践中,大多数组织会将GitOps与Docker化的应用程序一起使用,这些应用程序应该在带有部署清单(Kustomize或Helm)的Kubernetes集群上运行。不过,从理论上讲,这也可以适用于任何允许可编程基础设施的技术。
谷歌云平台(GCP)提供了各种云原生解决方案,如谷歌Kubernetes引擎(GKE),用户和角色管理,以及更多的工具,使其快速和容易开始完全云原生。
情况总结
当Slite引入容器解决方案团队时,它有六个工程师积极参与开发平台,就在大流行期间的远程工作助长了巨大的需求激增。它需要有效地扩展基础设施,并以更高的商业价值和强大的新功能快速打动新客户。
该公司的产品由大约15个微服务组成,它们或多或少地相互独立,在两个Kubernetes集群上运行,用于暂存和生产。Slite选择Kubernetes集群是因为其易用性和可用性。该公司选择GKE进行用户和角色管理以及部署脚本的简单集成,因为正如一位Slite工程师所说,它不会 "碍事"。随着基础设施的解决,工程师们可以专注于提高业务价值。
此外,Slite还有一个单独的GCP项目,有两个Kubernetes集群,运行开发环境,供其工程师实验和开发新功能。
在我们的工作开始时,Slite在其部署过程中有一些自动化。它使用GitHub Actions脚本来构建Docker镜像,并将其存储在谷歌镜像注册中心。为了部署新的镜像,必须手动启动另一个GitHub Actions脚本,以确保镜像已经成功构建并发布。部署本身是通过Helm处理的,这使得共享全局配置和回滚到旧版本变得容易。该团队设法每天部署大约四次--不足以跟上对其服务的新的激增需求。
Slite使用不同的服务进行数据存储,如SQL、BigQuery和CloudStorage,这取决于使用情况。
拥抱GitOps
由于Slite已经将其产品分割成了微服务,它处于一个很好的位置,可以利用拥有完全自动化的独立交付流程的优势。它已经在使用GitHub Actions来构建和部署,所以使用现有的技术栈而不是用更多的工具来扩展它,这将需要更多的时间和精力。
此外,使用已经存放了所有源代码的Git作为起点,使团队能够通过所有的服务来规范发布过程,跟踪所有环境的变化,并能一目了然地看到当时在生产中运行的是哪个版本和配置。
最后,当公司成长或团队专业化时,这种设置可以很容易地复制为新项目和服务的模板。(下图显示了整个事情的样子。)

谷歌云解决方案
在新的GitOps工作流程中,部署过程将由源码库的主干分支上的变化触发,通常是通过一个合并的拉动请求。然后,这将触发现有的GitHub行动,从源代码建立一个Docker镜像,并将其发布到谷歌容器注册中心。
这样一来,存放Helm图表的仓库就会被更新。对源代码的修改通常涉及修改图像标签和/或版本号。对于服务配置的改变,Helm图表本身可能需要被改变。在任何情况下,这些修改都很容易通过检查差异进行审计。
在GKE集群本身,ArgoCD管理着Slite服务的生命周期。ArgoCD是促进GitOps的主要工具,只需一个Kubernetes清单或其自身的操作者就可以轻松安装。对于Slite来说,操作者是没有必要的,因为在GKE上的安装是简单明了的。
ArgoCD采用Helm或Kustomize等配置清单,并将其应用于Kubernetes集群。如果在部署过程中出现问题,ArgoCD会继续将当前的集群状态同步到所需的状态,如OPS库中定义的那样。
此外,ArgoCD带来了一个直观的图形用户界面(GUI),可以通过浏览器访问,查看和管理集群的当前状态以及ArgoCD管理的资源。为了确保只有拥有正确权限的人才能看到集群状态,Slite整合了GCP身份感知代理,以确保对ArgoCD的访问。
随着这些变化的到位,Slite实现了图像构建和部署过程之间的干净分割。ArgoCD,特别是它的GUI,也减轻了工程师监测其应用程序部署状态的认知负担,使他们能够更专注于创造商业价值。一个附带的好处是,工程师对拥有他们的服务一直到生产更有信心,因为他们现在可以快速和独立地发现、缓解和修复生产中的问题。
容器解决方案的作用
Container Solutions帮助Slite实现了许多常规任务的自动化,并为这家成长中的公司提供了建立GitOps实践的专业知识、最佳实践和实践培训。它与Slite的工程团队携手合作,找到实施GitOps工作流程的最佳方式。随着Slite雇佣了更多的工程师,底层的谷歌云技术解决方案在短短六周内就被完全实施。
成果
这些变化帮助Slite进一步加快了部署速度,而没有给工程团队带来更多的基础设施工作量。基于这一成功,Slite致力于采用GitOps模式,并进一步改进其工具。
"Container Solutions的专业知识让我们在GitOps上运行起来。Slite的高级产品工程师Arnaud Rinquin说:"它缓解了团队的扩展,使我们能够更频繁地向客户发布。
该团队现在对部署过程非常有信心,他们已经实现了从源代码到预生产的完全自动化交付,这使他们每天可以部署多达20次。同时,由于采用了易于使用、透明和可扩展的CI/CD,Slite将其工程团队从6人扩大到16人,而没有失去动力。现在,一个错误的修复可以在发现错误后的15分钟内进入生产。
采用谷歌云的GitOps使Slite保持在增长的道路上,并使其能够提供令其不断增长的用户群惊讶的SaaS产品。
本文详述了Slite与Container Solutions和Google Cloud合作,如何利用GitOps应对远程工作热潮带来的业务扩张挑战。通过GitOps,Slite实现了自动化部署,增强了基础设施扩展能力,从而每天可进行多次部署,满足客户需求。


4995

被折叠的 条评论
为什么被折叠?



