基础设施即代码的原则与实践
1. 服务连续性原则
在我们的基础设施上托管的服务,即使个别基础设施元素消失,也必须对其用户保持连续可用。为了在一次性基础设施组件上运行连续可用的服务,我们需要确定服务绝对必需的要素,并确保它们与基础设施解耦,这主要涉及请求处理和数据管理。
请求处理
我们要确保服务始终能够处理请求,无论基础设施发生什么情况。如果一台服务器消失,我们需要有其他服务器正在运行,并能够快速启动新的服务器,以确保服务不中断。虚拟化和自动化可以让这一过程变得更容易。
数据管理
广义的数据管理可能更具挑战性。通过复制等已有数十年历史的方法,服务数据可以在承载它的服务器出现问题时保持完整。在设计基于云的系统时,扩大需要持久化的数据定义很重要,通常包括应用程序配置、日志文件等。
状态和事务处理
状态和事务处理是特别需要谨慎考虑的问题。虽然有管理分布式状态和事务的技术和工具,但实际上最可靠的方法是设计不依赖于此的软件。十二因素应用方法是一种有用的方法,对于大型企业级系统,微服务架构已被许多组织证明是有效的。
2. 自我测试系统原则
有效的自动化测试是基础设施运维团队可以从软件开发中借鉴的最重要实践之一。与我合作过的表现最佳的软件开发团队,会将自动化测试作为开发过程的核心部分。他们在编写代码的同时实现测试,并持续运行,通常每天会运行数十次,因为他们会对代码库进行增量更改。
自动化测试的好处
自动化测试的主要好处是能够快速反馈所做的更改是否正确工作,且不会破坏系统的其他部分。这种即时反馈让团队有信心快速发现错误,
超级会员免费看
订阅专栏 解锁全文

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



