如何在六个月甚至更快的时间内成为一名DevOps工程师。第4部分。软件包装

如何在六个月甚至更快的时间内成为一名DevOps工程师。第1部分。简介
如何在六个月甚至更快的时间内成为一名DevOps工程师。第2部分。配置
如何在六个月甚至更快的时间内成为一名DevOps工程师。第3部分。版本



考虑如何打包代码以方便部署和后续执行。让我提醒您,我们现在在这里:



不管您是与现在还是将来的雇主进行交流,您都应该能够清楚地阐明什么是DevOps及其重要性。
提供一个一致的故事,说明如何最好地快速,有效地将代码从开发人员的笔记本电脑交付到最终产品的部署地点,并获得适当的收益。我们不是研究一堆完全不同的,时髦的DevOps工具,而是研究一组技能,这些技能应根据业务需求并依靠技术工具来指导。请记住,学习DevOps的每个阶段大约需要一个月的培训,总共需要六个月的时间。

虚拟化教程


还记得物理服务器吗?您已经等了几个星期的服务器来等待采购订单的批准,发送过程的批准,数据中心的批准,网络连接,操作系统安装和补丁程序?这些就是我们生活中的服务器。

想象一下,找到房屋的唯一方法是建造一个全新的房屋。毕竟,您需要住在某个地方吗?因此,无论花费多长时间,都必须等到它建成为止!这似乎很酷,因为每个人都有自己的家,但又很繁琐,因为其建造需要大量时间。按照这种比喻,物理服务器就像一个家。

随着时间的流逝,这个过程变得很烦人,真正聪明的人想到了虚拟化的想法。他们决定在一台物理机器上运行一堆假想的机器,并使每个假想的机器都是真实的机器。巧妙!

因此,如果您确实需要房屋,则可以自己盖房子并等待六个星期。或者,您可以搬入公寓楼并与其他居民共享资源。也许不是很酷,但是足够好!最重要的是,您无需等待任何东西!

这种情况持续了一段时间,VMWare等公司从中获得了可观的资本。然后,其他聪明人决定将一堆虚拟机推入物理机中是不够的:您需要将更多进程更紧凑地包装到更少的资源中。

因此,一间房子甚至一间公寓都太昂贵了,所以也许只是尝试暂时租一个房间?而且,我可以随时进入和离开它!截至2018年12月,这基本上就是Docker的代表。



出生Docker


Docker是一项基于非常古老的想法的新技术。 FreeBSD操作系统包含监狱虚拟化引擎的概念,该概念可以追溯到2000年!确实,所有新旧事物都被遗忘了。

然后,现在的想法是基于操作系统级别的虚拟化或“系统级别的虚拟化”在同一操作系统内隔离各个进程。请注意,这与完全虚拟化或“完全虚拟化”不同,后者在同一物理主机上并行运行虚拟机。

实际上,这意味着Docker的日益普及准确地反映了微服务的增长,这是一种软件开发方法,其中将软件分解为许多单独的组件。所有这些组件都需要自己的家。将它们分别部署为独立的Java应用程序或二进制可执行文件是一个巨大的痛苦:控制Java应用程序的方式不同于控制C ++应用程序的方式,这又不同于管理Golang应用程序。

取而代之的是,Docker提供了一个单一的管理界面,该界面允许程序员打包,顺序部署和运行各种应用程序。这是一个巨大的胜利,但让我们谈谈Docker的优缺点。

Docker的好处


1.流程隔离


Docker允许每个服务都有一个完全隔离的过程。服务A生活在具有所有依赖项的自己的小容器中,服务B生活在具有所有依赖项的自己的专用容器中,这两个服务不冲突。

而且,如果一个容器发生故障,那么只有这个容器会遭受损失。

其余的容器将并且应该继续工作。这样的机制有利于安全。如果容器遭到破坏,则要破解基本操作系统将非常困难(但并非不可能!)。

最后,如果容器行为不正常(消耗过多的处理器或内存资源),则只能减小该容器的“爆炸半径”,而不会影响系统的其余部分。

2.部署


考虑一下实践中如何构建不同的应用程序。如果这是Python应用程序,则它将具有许多不同的Python软件包。其中一些将作为pip模块安装,其他将作为rpm或deb软件包安装,而另一些将作为简单的git-clone安装安装。或者,如果使用virtualenv完成,那么它将是virtualenv目录中所有依赖项的单个zip文件。

另一方面,如果它是Java应用程序,则它将具有Gradle Built程序集,其所有依赖项都将扩展并散布在适当的位置。

看看发生什么事了吗?在为prod部署这些应用程序时,不同的应用程序,具有不同语言的程序集和不同的运行时会带来问题。此外,如果发生冲突,问题将会更加严重。如果服务A依赖于Python v1库而服务B依赖于Python v2库怎么办?这里存在冲突,因为v1和v2无法在同一台计算机上共存。

然后Docker开始发挥作用。它使您不仅可以完全隔离进程,而且可以完全隔离依赖项。可能有多个容器在同一OS上并排工作,每个容器包含自己的与其他容器不兼容的库和软件包。

3.程序执行管理


我注意到,我们管理不同应用程序的方式取决于应用程序本身。 Java代码在注册表中的编写方式与Python代码不同,其运行方式也不同,跟踪方式也与Python代码不同。 Python与Golang等不同。

使用Docker,我们获得了一个统一的管理界面,该界面使我们可以启动,控制,集中日志,停止和重新启动许多不同类型的应用程序。这极大地提高了生产率,从而大大降低了生产系统的运营成本。

自2018年12月以来,您将不再需要在Docker快速启动和虚拟机安全之间做出选择。Fireckracker轻量级虚拟化平台项目由Amazon引入,试图将两种解决方案的优点结合在一起。但是,这是一项仅处于生产阶段的新技术。



注意:Firecracker平台提供了用于创建和管理使用无服务器开发模型构建的隔离环境和服务的工具。该项目代码是用铁锈和分布在Apache 2.0许可。

Firecracker提供了称为microVM的轻量级虚拟机。为了完全隔离它们,使用了硬件虚拟化技术,但同时,在普通容器级别提供了性能和灵活性。该平台基于虚拟机监视器(VMM),该虚拟机监视器使用内置在Linux内核中的KVM虚拟机管理程序。VMM基于Rust编写的crosvm项目的基础,Google正在开发该项目,以便在ChromeOS上启动Linux。在2018年底,crosvm和Firecracker代码库被拆分,但Amazon计划将对借用组件的更正发送到上游。

但是,无论Docker多么出色,它也都有缺点。

Lambda简介


首先,正在运行的Docker仍继续在需要准备,打补丁等的服务器上工作。其次,Docker不是100%安全的。至少它不如虚拟机安全。使用托管容器的大型公司有理由在虚拟机中而不是在裸机上这样做,这是有原因的。他们需要快速的容器启动时间和虚拟机安全性!



第三,实际上没有人控制Docker。相反,它几乎总是部署为复杂的容器编排结构的一部分,例如Kubernetes,ECS,docker-swarm或Nomad。这些是相当复杂的平台,需要特殊的人员来工作(我将在后面详细讨论这些解决方案)。

但是,如果我只是一名开发人员,我只想编写代码并要求某人为我运行它。 Docker,Kubernetes和其他爵士乐-我真的必须学习所有这些吗?我会这样说:这全视情况而定。对于只希望别人运行代码的人来说,AWS Lambda云存储和类似的东西是一个不错的选择。

AWS Lambda允许您运行代码而无需置备和服务器管理。您只需为消耗的计算时间付费,而当代码无法正常工作时,则无需付费。
如果您听说过无服务器存储,那么就是这样。不再需要启动服务器或管理容器!只需编写您的代码,将其打包为zip文件,然后将其上传到Amazon,然后让他们处理您的头痛!另外,由于“ lambda”是短命的,因此没有什么可以破解的-“ lambda”在设计上非常安全。非常好?

但是也有消极的地方。首先,lambda最多只能工作15分钟(截至2018年11月)。这意味着长时间运行的进程(例如Kafka或数字破解应用程序)无法在Lambda中运行。

其次,“ lambda”是“功能即服务”(功能即服务)。这意味着您的应用程序必须完全分解为微服务,并与其他复杂的PaaS服务(例如AWS Step Functions)同步。但是,并非每个企业都处于这种微服务体系结构级别。

第三,对lambda进行故障排除非常困难。它们是云运行时,所有错误修复都在Amazon生态系统中进行。这通常是非常复杂且不直观的。简而言之,这里没有免费的午餐。

我注意到,在2018年底,还有无服务器云容器解决方案,例如AWS Fargate它的机制与Lambda非常相似。如果您刚刚开始学习这些服务,我强烈建议您尝试Fargate,这是一种使容器“正确”工作的非常简单的方法。此外,2019年1月13日,AWS云服务宣布大幅降低Fargate的价格,使其成为启动无服务器容器的极具吸引力的选择。



摘要


Docker和Lambda是两种最流行的基于云的现代方法,用于打包,运行和管理应用程序。它们通常是免费的,都适用于各种用例和应用程序。

即便如此,现代DevOps工程师必须精通两者。因此,培训Docker和Lambda是良好的短期和中期目标。
我注意到,到目前为止,我们已经讨论了DevOps初级和中级工程师应该知道的主题。在以下各节中,我们将开始讨论更适合中级和高级DevOps工程师的方法。与往常一样,没有简单的方法来获取知识!

即将继续...

一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles