读书评价

上个周末读了下这本书,第一部分的基础理论,或者说是指导思想部分,还是蛮有启发性的。DEVOPS已经发展了这多年了,大家多少都已经有一些认识或实践了,读读这本书,一方面可以印证下你的理解是否正确,另一方面也可以帮助你认识得更加全面些。

本书的第2部分讲服务器、服务器模板和服务器更新与变更的管理模式。有一些参考价值吧,不过放在现在这时候看都是些常识罢了,可能在刚刚写这本书时的价值会更大些。

第3部分讲实践,就更加凌乱了,像系统质量、CICD、测试、连续性管理这些,,跟基础设施即代码的主题关系也不大,是不是在凑字数呢。

基础设施即代码这件事儿,确实是说起来简单,没多少内容,但做起来并不容易。

下面我把从书中第一部分摘录的一些指导思想,给大家分享下,这些内容还是很不错的,必竟需要先把一件事儿想对了,才有可能做对(做错的概率仍然会很大)。

动态基础设施的挑战

  • 服务器蔓延
  • 配置漂移
  • 雪花服务器
  • 脆弱的基础设施
  • 自动化恐惧症
  • 侵蚀(熵增)

基础设施即代码的原则

  • 系统能够轻松复制
  • 系统是用完可扔的(牲口而非宠物)
  • 系统是一致的
  • 过程是可重复的(幂等)
  • 支持设计的经常变更

基础设施即代码的良好实践

  • 使用描述式声明定义文件
  • 自文档化的系统和流程
  • 一切皆版本化
  • 持续测试系统和流程
  • 小的变更,而不是批量变更
  • 让服务持续可用

动态基础设施平台的概念与要求

概念:动态基础设施平台是提供了计算资源,具体包括服务器、存储和网络,并且支持程序化分配和管理这些资源的系统。

这个平台需要具备以下的特征:

  • 可编程
  • 按需获取
  • 自服务

不管使用了多么昂贵、先进的软件,如果服务模型既非动态也非自服务的,那么它就无法支持基础设施即代码。

选择怎样的基础设施即代码工具

  • 支持命令行工具和可编程的API,如果同时有开放的源代码无疑会更好了;
  • 命令行工具应该支持静默式执行;
  • 支持可靠的无人值守式的执行,应该具备一些特征如幂等、事先检查、事后检查、错误可见以及参数化;
  • 支持外部化的配置管理模式,工具与配置文件松耦合,使用svn/git等管理配置文件版本;

配置注册表

为什么需要配置注册表?
配置注册表不是CMDB,前者是为支持自动化而共享数据,后者是为了记录与管理资产信息。
对于需要管理和集成基础设施的脚本、工具、应用服务来说,配置注册表提供了一种信息发现的方式。

实现配置注册表的方式有很多种:

  • 对于简单的基础设施,使用配置定义文件就足够了。对于复杂的基础设施而言,zookeeper/Consul/etcd都是可选的配置注册表产品。
  • 为了能在动态基础设施上工作,配置注册表服务必须支持从注册表中以编程的方式添加、更新和删除条目。

注:提防掉进与配置注册表的紧耦合陷阱,这会让配置注册表成为一个新的服务脆弱性的来源。

自动化服务器管理的目标

  • 能够完全按需配置一台新服务器,耗时至多不过几分钟;
  • 配置新服务器时完全不需要人工参与或响应某些事件;
  • 当有新的服务器配置变更时,可以自动地应用到服务器而不需要人工参与;
  • 每个变更都应该被应用到所有相关的服务器上,且在该变更之后再配置的新服务器都自动包含了该变更;
  • 配置以及变更服务器的过程具有可重复性、一致性、自文档和透明化等特性;
  • 向服务器应用配置或配置变更的流程既容易又安全;
  • 每次有服务器配置定义的变更时,都会触发运行自动化测试;
  • 配置的变更和处理基础设施任务的流程变更应纳入版本控制,支持应用到不同的环境中以便支持对照性测试和阶段性发布策略;

《基础设施即代码》阅读摘要相关推荐

  1. 《JavaScript设计模式与开发实践》阅读摘要

    <JavaScript设计模式与开发实践>作者:曾探 系统的介绍了各种模式,以及js中的实现.应用,以及超大量高质量代码,绝对值得一读 面向对象的js 静态类型:编译时便已确定变量的类型 ...

  2. JS代理模式《JavaScript设计模式与开发实践》阅读笔记

    代理模式 代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问. 保护代理和虚拟代理 保护代理:当有许多需求要向某对象发出一些请求时,可以设置保护代理,通过一些条件判断对请求进行过滤. 虚拟 ...

  3. 专访《Javascript设计模式与开发实践》作者曾探:爱编程 爱生活

     专访<Javascript设计模式与开发实践>作者曾探:爱编程 爱生活 发表于12小时前| 2742次阅读| 来源CSDN| 8 条评论| 作者夏梦竹 专访曾探图书作者Javascr ...

  4. JavaScript设计模式与开发实践系列之单例模式

    本系列为<JavaScript设计模式与开发实践>(作者:曾探)学习总结,如想深入了解,请支持作者原版 单例模式 实现单例模式 单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的 ...

  5. 《JavaScript设计模式与开发实践》模式篇(12)—— 装饰者模式

    在传统的面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活, 还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之 改变;另一方面,继承这种功能复 ...

  6. JavaScript设计模式与开发实践——JavaScript的多态

    "多态"一词源于希腊文polymorphism,拆开来看是poly(复数)+ morph(形态)+ ism,从字面上我们可以理解为复数形态. 多态的实际含义是:同一操作作用于不同的 ...

  7. 《JavaScript设计模式与开发实践》模式篇(5)—— 观察者模式

    发布-订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状 态发生改变时,所有依赖于它的对象都将得到通知.在 JavaScript 开发中,我们一般用事件模型 来替代传统的发布- ...

  8. 《JavaScript设计模式与开发实践》模式篇(3)—— 代理模式

    代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问 故事背景: 假设当 A 在心情好的时候收到花,小明表白成功的几率有 60%,而当 A 在心情差的时候收到花,小明表白的成功率无限趋近于 ...

  9. JavaScript设计模式与开发实践 | 02 - this、call和apply

    this JavaScript的this总是指向一个对象,至于指向哪个对象,是在运行时基于函数的执行环境的动态绑定的,而非函数被声明时的环境. this的指向 this的指向大致可以分为以下4类: 作 ...

  10. 《JavaScript设计模式与开发实践》原则篇(3)—— 开放-封闭原则

    在面向对象的程序设计中,开放封闭原则(OCP)是最重要的一条原则.很多时候,一个程序具有良好的设计,往往说明它是符合开放封闭原则的. 当需要改变一个程序的功能或者给这个程序增加新功能的时候,可以使用增 ...

最新文章

  1. MarkdownPad2.5 注册码
  2. 微软与联合国环境规划署联手解决环境问题
  3. syslinux引导GRUB4DOS
  4. bootcmd和bootargs
  5. Android之UI线程与子线程交互设计的5种方法
  6. AtCoder Beginner Contest 084(AB)
  7. 在HTML中怎么去掉超链接的下划线?
  8. UE3 中文教程主页
  9. python 手势检测和追踪_用kinect和python进行手势识别:嗯学习
  10. 笔记本删除隐藏分区 释放固态硬盘空间
  11. 人们一说赚钱,都会说赢利摸式
  12. 计算机Excel运行环境,Excel Server Tutorial
  13. 如何用计算机制作思维导向图,电脑怎样制作思维导图,手把手教你绘制思维导图简单方法...
  14. Vue 中如何引入第三方 JS 库
  15. 宽度学习系统:一种不需要深度结构的高效增量学习系统
  16. linux 历史记录索引_使用Google桌面索引FireFox浏览器历史记录
  17. w10怎么改mysql用户名_win10用户名彻底改为英文的详细操作步骤
  18. Python数据可视化-基于Python-matplotlib
  19. TODO:这是一个我的自媒体
  20. TCP报文头部结构详解和作用解析

热门文章

  1. 全国一级计算机老师考试试题及答案,全国计算机一级考试试题及答案
  2. 2011级-csdn-java-张侃— struts2的优点
  3. Hello Wowo!
  4. QR Code 二维码的生成与扫描
  5. 如何用AXURE制作简单的幻灯片播放
  6. 论文分享 MetaBalance: High-Performance Neural Networks for Class-Imbalanced Data
  7. 记一次阿里云被入侵的解决方案(小白攻略欢迎大佬指点)
  8. 新兵训练营课程——环境与工具Java[转]
  9. Apache Commons Codec
  10. 什么是Photoshop中的曲线?