Docker适合应用于生产环境了吗?
Docker适合生产环境了吗?
Docker适合应用于生产环境了吗?
之所以称为生产环境就是因为它可以为企业创造利润。所以答案非常清晰:视情况而定。
Docker.是现今最前沿的科技。 同时,它也是近10年最具挑战性的技术,原因在于它革新了软件开发、运维、系统架构、测试以及常规做法。 Dokcer至今才诞生仅两年时间。你会用一个仅发展两年左右的数据库技术吗?亦或是一个操作系统?向前兼容性很差,升级会造成对先前软件的不兼容,这是Docker存在的问题,但请不要因这个事实丧失尝试的勇气。
同时,也还有一些大的碎片问题围绕在持续部署,网络及认证管理上。对于生产环境而言,目前已有一个雏形的生态系统可以支撑doker化的程序。不过,从生态系统角度而言,docker目前仍然缺少一些重要的元素,即使有,也是粗糙不成熟的:
1、监控— 作为docker发现版的一部分,直至最近才被并入常用工具行列之中。(如New Relic, Zabbix, Data Dog)。
2、日志—那些拥有一套成熟的日志策略来观测用户行为习惯和使用模式的企业会发现标准输入及标准错误输出范例上限是远远不可限制的。与监控类似,最新添加的工具,例如系统日志,意味着go的生态系统将会解决这种复杂事情。(如Splunk, Sumologic, Logstash).
现在问题转变为,在我的公司中,那些案例适合采用docker作为生产环境。
初创公司
如果你是在一家小公司工作,致力于寻找一种结合客户细分、生产和增长引擎组合,那么docker对于你确实有较高意义。
采用docker意味着你将更全面的考量你的基础设施和应用软件。这将直接转换为技术层面的灵活性。所以,如果你的商业团队来对你说,我们将会从B2C模式转为B2B模式,那你在此方向的核心技术将进一步加强。
一定要记住,当你给一个开发人员docker daemon访问权限的同时意味着他们在此机器上拥有了root权限。假设一开始有这么一个开发人员存在,那么类似于身份认证之类的事情通常就不需要考虑了。不过,对于一些大公司而言,这是无法接受的。
我相信在下述这些状况下docker应当作为第一选择,但问题是,我们为什么不使用它。
企业
考虑一个拥有众多业务部门的大公司,dokcer是一个非常有趣的提议,但使用上应该更明智点。如果做得好的话,通过docker化核心应用,一个企业能在市场上获得持续的竞争优势。
Docker能否作为生产环境应用到一个4亿产值的系统?考虑那个我们在上面介绍格林菲尔德公司中忽略的身份认证问题,这将是个大的安全隐患。
Docker 在2015年6月举行的Dockercon中宣布将身份认证作为Orca项目的一部分。当此计划还未使用于生产环境时,一些公司,例如StackEngine Home Page就通过采用docker主机池(a pool of Docker hosts)的API,CLI和GUI接口解决了这个问题。这两种方案都为大公司切分了访问权限,为运营团队提供了一种“single pane of glass”的访问策略,将操作权限限制在合理范围。
对于企业而言,任何类似“Docker-all-the-things”的答案,都是看起来非常棒,但实际上是很不靠谱的。一个企业必须反问自己,他们需要将那部分docker化以及为什么需要这样做。我曾经写过一份着重介绍我的一些线上经验的长篇报告,Legacy Applications - Choosing Success。
而且,一个公司的规模和业务复杂性也在实际上阻止了通过采用docker实现的必要创新。这个问题在The Innovator’s Dilemm(创新的窘境)中描述的很详细:The Revolutionary Book That Will Change the Way You Do Business: Clayton M. Christensen: 8601300047348: Amazon.com: Books (Try the audiobook version if your reading time is sparse.)
TL;DR是一个必须通过一个或多个他们的思想领袖,基于特定标准对软件进行确认的组织:
(1)需要提升
(2)可测试性
(3)彻底更换系统对业务带来的风险
(4)当前使用该系统的团队/用户的风险承受能力(通常被概括为“早期试用者”)
从技术角度而言,这些企业应当寻找一个软件来应用于docker化,并从中验证docker当前的一些缺陷及影响。
举个例子,如果他们选择一款复杂网络应用的软件,操作团队将会发现使用初期docker网络将意味着什么。这类的经验应当被加入任何docker化的期望结果中。
Christensen强烈认为有必要分拆出一个单独的组织致力于创新,就像IBM对他们桌面应用业务所做的那样。
这也有些异议,我曾经看到一个企业部门这样宣称,“在2015年,我们将通过大范围应用docker节省30%的基础设施费用”。然而,这些特定的企业是广为人知的拥有很大的规模,可以致力于创新。
所以,如果你身处一个企业当中,在某些特定状况下docker是值得你去评估使用的,不过你得基于企业文化这一评估标准去辨识这样的创新机会。这个问题就是,我们是否可以在合适的地方将docker应用于生产环境。
小公司
已有现成软件的小公司通常更能接受更换一个已有生产系统的风险的
我们已经看到很多规模在60到400人的公司因某些特殊原因切换到docker。
在一个Austin的公司,他们觉得Docker能通过更大规模部署应用为公司节约大笔的AWS(云计算)费用。相较于重构已有巨大的软件体系,他们使用docker进行了替代,“将所有东西堆入容器,通过不同的执行路径调用”。
在此种情况下,正如他们所预期的,他们可以减少云服务的花费。然而,他们遇到了另外一个问题。在90%密度下,当一个负载尖峰到来时,他们没有闲置的产能来“laying around”以提供一个可以放大的通道。
这就意味着他们需要一个新的产能规划 和管理方式。这就暴露了一个重要的问题,你的公司准备在生产环境中运行docker了吗?
这个性能规划的结果让人惊讶支出在于,一个可以启动dockerhosts的调度层面。这就导致另一个重要问题,“docker的工具生态体系足以让你在生产环境中顺畅操作Docker吗”
总结:
Docker仅在你们公司足以支撑它的情况下才适合应用于生产环境,并且他们是一套匹配你们系统需求的工具生态且可以赚钱。
你应当体验docker吗?答案是绝对应该。你讲在你的体验过程中找到正确的应用方式。
祝你体验之路顺畅!
PS:
V1.0版,语句不够流畅,文法生疏。
半年后能力提高再回来重新修改下
更多推荐
所有评论(0)