Lyft开源基础设施统一管理平台Clutch

Lyft开源了自家内部使用的基础设施工具Clutch,其提供了可扩展UI以及API平台,让工程团队能够构建、执行和维护用户友善的工作流程,包括特定的安全机制以及访问控制,另外,Clutch还提供了管理AWS、Envoy和Kubernetes等平台的功能,官方提到,由于Clutch可扩展性设计,可以支持系统堆栈中的任何组件。

Lyft提到,云计算采用的成本已经大幅下降,根据CNCF Landscape,现在已经有300多个开源项目,并衍伸出1,000多个商业产品,虽然企业已经可以快速选用这些项目,以及供应商提供的解决方案,但是每种技术都有自己的配置、工具、日志和指标,开发人员要可以快速且安全地,在整个堆栈中执行变更,需要大量且持续投信息工程具开发,而这是大部分企业做不到的。

在使用Clutch之前,Lyft的工程师需要依赖各种命令行工具和网页接口等,才能执行一些简单的任务,官方举例,像是在Lyft中最常处理的警示,就需要综合6种不同的来源才能解决,包括警示、其他服务的仪表板、Runbook、文件、供应商控制台或是脚本、配置设置。而这使得Lyft意识到,他们的工具已经无法跟上业务的发展。

所以就算新基础设施越来越容易采用,随着平台以及工程团队规模的增长,管理新组件也会变得困难,而Lyft花了一年开发Clutch,就是要来解决因为内部开发人员经验与工具不足,所产生的问题,让基础设施团队能够为整个工程团队,提供主动且安全的基础设施管理接口。

Clutch由两部分构成,后端是以Go开发而成,设计成可扩展的基础设施控制平面,可进行一般身份验证,并且提供系统的可观察性以及日志记录审核功能。而React前端是可插拔,以工作流为导向的UI,让用户不需要先具备丰富的JavaScript知识,能以更少的程序代码创建新功能,且更易于维护。

Clutch采用了Envoy代理的许多核心模式,同样也由配置、架构驱动,在不影响可维护性的状态下,用户可以利用模块化扩展基础架构,使其能够用于不同的使用案例中。Lyft提到,扩展Clutch不需要进行分叉或是重写工作,自定义的公共和私有外部存储库的程序代码,可以直接被编译到应用程序中,这使得大小企业采用的特殊技术,都能够汇集整理到Clutch,将Clutch作为基础设施控制平面。

经过一年的发展,Lyft内部团队积极地采用Clutch,并且将许多具风险的基础设施管理,都通过Clutch处理,官方提到,在2020年底前,内部会有7个工程团队采用Clutch。