“在Kubernetes之前,”Ghods说,“我们的基础设施非常陈旧,需要6个多月才能部署一个新的微服务。现在,一个新的微服务部署时间不到五天。我们正在努力让它达到不到一天。诚然,这六个月的大部分时间都是由于我们的系统有多么糟糕,但裸机本质上是一个难以支持的平台,除非您有像Kubernetes这样的系统来帮助管理它。“
锁定通常是工程师和管理层关心的问题。应该以与选择编程语言或框架相同的方式将其作为应用程序的风险来权衡。编程语言和云提供商的选择是锁定的形式,工程师有责任了解风险并了解风险何时可以接受。
代替使应用程序处理网络弹性逻辑,可以将代理置于适当的位置,作为应用程序的保护和增强层。代理的优势在于避免应用程序需要额外的复杂代码,并尽量减少开发人员的工作量最初和持续的发展。
一些需要探索的地方是Netflix的文化套餐,它促进了自由和责任感,还有亚马逊的双比萨团队,这些团队以低开销推广自治团体。云原生应用程序需要与构建它们的团队具有相同的解耦特征。康威法律最好地描述了这一点:“设计系统的组织被限制为产生这些组织的通信结构副本的设计。
合规性测试不会测试架构设计,而是集中于组件的实施,以确保它们遵守定义的策略。放在代码中的最简单的策略是那些有助于安全的策略。围绕组织需求(例如HIPAA)的策略也应定义为代码并在合规性测试期间进行测试。
使用传统基础设施,大部分工作时间,维护和升级应用程序都由人完成。这可以包括在单个主机上手动运行服务或使用自动化工具定义基础结构和应用程序的快照。但是,如果基础设施可以由应用程序管理并同时管理应用程序,那么基础设施工具就会成为另一种应用程序。工程师在基础设施的责任可以用调解器模式表示,并内置到在该基础设施上运行的应用程序中。
基础设施是用来支撑应用程序的。可信任的软件对于工程成功至关重要。如果每次在终端输入ls命令,都会发生随机动作,那么你将永远也不会相信ls,而是去找另一种方式来列出目录中的文件。
随着基础设施的不断发展,运行在基础设施之上的应用程序也要随之演变。为这些应用程序设置的功能将随着时间而改变,因此基础设施是隐性地演变。随着基础设施的不断发展,管理它的应用程序也必须发展。
构建管理基础设施软件工程不是一件容易的事情。我们有管理传统应用的所有问题和担忧,而且我们正处于一个尴尬的境地。基础设施软件工程看上去似乎很荒谬,构建软件来部署基础设施,这样就可以在新创建的基础设施之上运行相同的软件,这很尴尬。
精巧的云基础设施可以从简单的设计到非常复杂的设计,无论复杂性如何,必须对基础设施的表现给予高度的重视,以确保设计的可重复性。能够清晰地传递想法更为重要。因此,明确、准确和易于理解的基础设施级资源表述势在必行。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号