文档阅读 - GoCD 基本概念
这篇文档 描述了 GoCD (一款持续交付工具)系统中的基本概念,通过这些概念我们可以快速感受这个系统的一些设计理念。
- Task:一般来说对应一条命令。
- Job: 多个 Tasks 组成一个 Job。Tasks 按定义顺序逐个运行,除非某个 Task 运行失败整个 Job 算作失败。需要注意,每个 Task 有自己独立的运行环境,是个独立程序,这样可以保证 Tasks 之间互相不会影响。
- Stage:多个 Jobs 组成一个 Stage。Jobs 并发运行,当某个 Job 运行失败其它 Jobs 仍然运行但整个 Stage 算作失败。
- Pipeline:多个 Stage 组成一个 Pipeline。Stages 按照定义顺序运行 …
Terraform - 一款管理基础设施的自动化工具
Terraform 用于快速创建或销毁各种云平台上的实例,它根据你编写的 *.tf
文件创建出需要的实例,运行一些 Provision 的脚本。
- 可以通过
brew install terraform
在 osx 上获得软件。 - 通过编写
provider "aws"
等语句声明想要的云平台,它支持几十种平台,例如 aws, googlecloud, azure, digitalocean, heroku 等等. - 通过编写
resource XXXXX xxx
语句声明需要的资源,一般来说资源是跟 provider 相关的,aws 有 aws_instance, digitcalocean 有 digitalocean_droplet 等等。 - 在 resource 中可以声明 depends_on 定义需要先有哪些资源。
- 你可以写 terraform …
Prometheus Introduction
Prometheus 是一款开源的监控和报警工具,出自 SoundCloud,继 Kubernetes 之后成为第二个 Cloud Native Computing Foundation 的项目。
- Data Model: Prometheus 中的基础数据是和 OpenTSDB 格式兼容的时间序列,以
[a-zA-Z_:][a-zA-Z0-9_:]*
为 Metric 名称,附带诸如{method="POST", handler="/messages"}
这样的格式作为 Label。每一个数据点都是[精确到millisecond的时间戳,float64]
。 - Query: Query 表达式的数据可用于图表或者自己从 API 拿。
- 可以直接根据 Metric 名字或者带上标签:
metric_name{label="mylabel"}
获取数据。Label 操作符可有=
,!=
,=~
(正则 …
- 可以直接根据 Metric 名字或者带上标签:
在 Game Day 破坏和修复你的系统
这篇文章介绍了不少公司的传统演练项目:Game Day,在这天工程师们会主动在生产环境上造出故障,借此锻炼应急响应能力。这个词是 Amazon Master of Disaster
Jesse_Robbins 提出的,业内 Netflix 也提供了一套叫做 Simian Army 的工具做这件事情。这个活动的核心目标是让系统和团队两方面都有能力很快从灾难中恢复。对于系统而言,要提供自动部署,断路器,扩容等能力,对团队而言,要演练搞挂和修复问题。如果小团队不敢搞,可以放在 staging 或者 testing 环境中做。但还是在生产环境中做这件事情比较性价比高。Game Day 的准备阶段其实比执行阶段更复杂,你要选择好场景,假想好会出现的情况,实施的时候验证是否符合预期。