<commit_before>定义
flow.ci
持续部署示意图
持续部署是指当交付的代码通过评审之后，自动部署到生产环境中。
持续部署是持续交付的最高阶段，意味着所有通过了一系列的自动化测试的改动都将自动部署到生产环境。它也可以被称为“Continuous Release”。
持续集成、持续发布及持续部署的关系：
flow.ci
持续集成、持续发布及持续部署关系图
实践方法
必要的前期准备：应用虚拟化（例如：使用docker）、准备部署蓝图、构建部署系统。
常见的部署方式有：
蓝绿部署：
蓝绿部署是准备2套环境，一套老版本（绿色）一套新版本（蓝色），开始流量集中在老版本上，当新版本部署完成且测试通过后，将流量从老版本切到新版本，然后老版本同时也升级到新版本。
目的在于服务不中断用户无感知，安全稳定地发布新版本应用，并在必要时回滚。

--------------->

蓝绿部署示意图
A/B测试：
A/B测试是用来测试应用功能表现的方法，例如可用性、受欢迎程度、可见性等等。
目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论，并确信该结论在推广到全部流量可信

A/B测试示意图
灰度发布：
灰度发布是在原有版本可用的情况下，同时部署一个新版本应用作为“金丝雀”（金丝雀对瓦斯极敏感，矿井工人携带金丝雀，以便及时发发现危险），测试新版本的性能和表现，以保障整体系统稳定的情况下，尽早发现、调整问题。

灰度发布示意图
收益
可以相对独立地部署新的功能
并能快速地收集真实反馈
全流程自动化（自动部署、自动回滚等）<commit_msg>Update 2015-09-09-持续部署.md<commit_after>定义
flow.ci
持续部署示意图
持续部署是指当交付的代码通过评审之后，自动部署到生产环境中。
持续部署是持续交付的最高阶段，意味着所有通过了一系列的自动化测试的改动都将自动部署到生产环境。它也可以被称为“Continuous Release”。
持续集成、持续发布及持续部署的关系：
flow.ci
持续集成、持续发布及持续部署关系图
实践方法
必要的前期准备：应用虚拟化（例如：使用docker）、准备部署蓝图、构建部署系统。
常见的部署方式有：
蓝绿部署：
蓝绿部署是准备2套环境，一套老版本（绿色）一套新版本（蓝色），开始流量集中在老版本上，当新版本部署完成且测试通过后，将流量从老版本切到新版本，然后老版本同时也升级到新版本。
目的在于服务不中断用户无感知，安全稳定地发布新版本应用，并在必要时回滚。

--------------->

蓝绿部署示意图
A/B测试：
A/B测试是用来测试应用功能表现的方法，例如可用性、受欢迎程度、可见性等等。
目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论，并确信该结论在推广到全部流量可信

A/B测试示意图
灰度发布：
灰度发布是在原有版本可用的情况下，同时部署一个新版本应用作为“金丝雀”（金丝雀对瓦斯极敏感，矿井工人携带金丝雀，以便及时发发现危险），测试新版本的性能和表现，以保障整体系统稳定的情况下，尽早发现、调整问题。

灰度发布示意图
收益
可以相对独立地部署新的功能
并能快速地收集真实反馈
全流程自动化（自动部署、自动回滚等）

http://dockone.io/article/2118
http://blog.flow.ci/cicd_difference/
{'fraction_non_alphanumeric': 0.11951384199864956, 'fraction_numerical': 0.009453072248480757, 'mean_word_length': 11.147540983606557, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4604913', 'n_tokens_mistral': 1391, 'n_tokens_neox': 1672, 'n_words': 56}