作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
乔纳森·白求恩的头像

乔纳森·白求恩

Jonathan是一位经验丰富的DevOps工程师,拥有基础设施和安全方面的经验. 他有快速学习新事物的本领.

专业知识

以前在

大都会人寿
分享

我们这些年纪足够大的人还记得,软件主要通过物理介质交付的日子. 宽带互联网和智能手机的普及将我们带入了网络服务时代——软件托管在云端,由浏览器和应用程序等用户客户端访问.

不久以前,web应用程序直接在私有数据中心的物理机器上运行. 便于管理, 这些应用程序通常是单体的——一个大型服务器将包含所有后端代码和数据库. 现在, 像亚马逊这样的网络托管服务和虚拟机管理程序技术的普及改变了这一切. 多亏了 亚马逊网络服务 (AWS)和VirtualBox等工具,将整个操作系统打包到一个文件中变得很容易.

使用像EC2这样的服务, 打包机器映像和将虚拟服务器组合在一起已经变得很容易. 随之而来的是微服务范式——一种软件架构方法,其中大型单片应用程序被分解成更小的专注于一件事的服务. 在一般情况下, 这种方法允许更容易的扩展和功能开发,因为瓶颈可以更快地找到,系统更改更容易隔离.

从宠物到牲畜

我成为了一名基础设施工程师,正是在这种趋势达到顶峰的时候. 我记得在Amazon中使用一系列bash脚本构建我的第一个生产环境. 服务员对我来说就像宠物. 我给他们每个人起了可爱的名字. 我仔细地监视着他们. 我对警报迅速作出反应,并保持它们的健康. 我用爱和感情来对待这些例子,因为试图取代它们是痛苦的——就像一只心爱的宠物.

随着配置管理工具厨师的出现,我的生活几乎立刻变得轻松起来. 有了这样的工具 厨师木偶,您可以省去与管理云系统相关的大部分手工工作. 您可以使用它的“环境”构造来分离开发服务器、登台服务器和生产服务器. 您可以使用它的“数据包”和“角色”来定义配置参数和推送更改集. 现在,我所有的“宠物”服务员都从服从学校毕业了.

起重机管理集装箱的图形表示

然后在2013年,事情发生了 码头工人,一个新的时代开始了:软件作为牲畜的时代(向观众中的素食主义者道歉). 容器范例是编排范例之一,而不是配置管理范例. Kubernetes之类的工具, 码头工人组成, 和Marathon专注于移动预定义的图像,而不是在运行实例上调整配置值. Infrastructure is immutable; when a container goes bad, 我们不会试图修复它,我们会朝它的头部开枪,然后换掉它. 我们更关心畜群的健康,而不是单个动物. 我们不再给服务器起可爱的名字了.

奖励

容器使很多事情变得更容易. 他们让企业更多地专注于自己的特殊酱料. 技术团队可以少担心基础设施和配置管理,而是主要担心应用程序代码. 公司可以更进一步,为MySQL之类的东西使用托管服务, 卡珊德拉, 卡夫卡, 或者Redis,这样就完全不用处理数据层了. 有几家初创公司也提供“即插即用”的机器学习服务,让公司可以做复杂的事情 分析 不用担心基础设施. 这些趋势在无服务器模型中达到了顶峰——一种允许团队在不管理单个VM或容器的情况下发布软件的软件架构方法. 像S3、Lambda、Kinesis和Dynamo这样的AWS服务使这成为可能. 为了扩展这个类比, 我们已经从宠物发展到家畜,再到某种按需提供的动物服务.

这一切都很酷. 在我们生活的这个时代,一个12岁的孩子只需点击几下鼠标就能启动一个复杂的软件系统,这真是太疯狂了. 我们应该记住,就在不久以前,这是不可能的. 就在几任美国总统之前, 物理介质是标准,只有大公司才有能力制造和分发软件. Bug修复是一种奢侈. 现在, 那个12岁的孩子可以创建一个AWS账户,让全世界都能使用他的软件. 如果有漏洞,有人会在Slack上向他提出问题,几分钟后,修复程序就会为所有用户推出.

的风险

非常, 非常酷的, 但对亚马逊等云服务提供商的价格依赖意味着对大公司和专有技术的依赖. 如果理查德·斯托曼和爱德华·斯诺登没有让你担心这些事情的话, 最近Facebook的溃败当然应该如此.

对硬件的更大抽象也带来了透明度和控制力降低的风险. 当运行数百个容器的系统出现故障时, 我们只能希望故障会在我们能检测到的地方冒出来. 如果问题与主机操作系统或底层硬件有关, 这可能很难确定. 如果没有正确的工具,使用vm可以在20分钟内解决的中断可能需要数小时或数天的时间才能解决.

当涉及到像码头工人这样的东西时,我们需要担心的不仅仅是失败. 还有安全问题. 我们使用的任何容器平台, 我们必须相信没有后门或未公开的安全漏洞. 使用开源平台也不能保证安全. 如果我们的系统部分依赖第三方容器映像,我们可能会很脆弱.

总结

畜牧业模式有许多吸引人的原因,但它并非没有缺点. 在把整堆货物装进集装箱之前, 技术团队需要考虑这是否是正确的选择,并确保他们能够减轻负面影响.

就我个人而言,我喜欢与容器打交道. 随着新平台和新范式的出现,我很期待看到未来十年的发展. 然而, 作为前安全顾问, 我很谨慎,知道任何事情都是有代价的. 工程师需要保持警惕,以确保我们不会放弃作为用户和开发人员的自主权. 即使是世界上最简单的CD/CI工作流程也不值得付出这样的代价.

了解基本知识

  • 码头工人中的容器是什么?

    码头工人中的容器是一个孤立的环境,其中进程被限制在它们自己的一组操作系统资源中,而不必抽象硬件层.

聘请Toptal这方面的专家.
现在雇佣
乔纳森·白求恩的头像
乔纳森·白求恩

位于 达拉斯,德克萨斯州,美国

成员自 2018年3月9日

作者简介

Jonathan是一位经验丰富的DevOps工程师,拥有基础设施和安全方面的经验. 他有快速学习新事物的本领.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

专业知识

以前在

大都会人寿

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.