Docker 在过去五年中改变了软件工程师工作方式的四种方式
十年前,Git 改变了软件工程师的工作方式。五年前,Docker将容器技术推向大众。在 Docker 之前,容器技术在 Google 和 Heroku 等公司中如同神圣的秘密。Docker 既是一款软件,也是一家公司。它试图构建一个更广泛的生态系统,但Kubernetes在这一过程中抢占了风头,压制了swarm 的势头。这篇文章并非探讨某些 Docker 工具为何不受欢迎,而是探讨 Docker 在过去五年中如何改变了我们的工作方式。
Unsplash上的鲸鱼图片
TLDR;
使用 Docker,您可以交付整个堆栈,而不仅仅是代码。为容器分配最低限度的资源,然后进行水平扩展。容器的安全性通常已内置。使用 Docker 和 Kubernetes,您可以实现零停机时间和更快的部署,从而带来业务利润。
改变了方式
如果您想了解什么是容器以及为什么要使用 docker 的技术细节,请谷歌搜索:)。
Docker 还部分弃用了许多配置管理工具。
这篇文章讲述了 Docker 自 2013 年 3 月发布以来如何改变了我们的工作方式。以下是一些有助于改进我们工作方式的原因:
交付整个堆栈,而不仅仅是代码
对于容器,尤其是 Docker,你总是会在每个版本中交付整个堆栈。每次都会重建整个镜像。它包含精确的操作系统版本、特定的语言版本。它还包含依赖项,例如框架和其他库(版本取决于你的处理方式)。它还包含你编写的代码,这带来了显著的优势。优势在于,如果它在你的机器上正确构建,那么它也有可能在服务器上构建成功。一旦它运行起来,它在开发、预发布、测试甚至生产环境中都是相同的环境。
发生这种情况是因为您不仅购买了代码,还发送了您的代码+供应商代码+特定语言版本+精确的操作系统版本。
仅向应用程序分配所需资源并水平扩展
对于每个 Docker 容器,您可以指定要为其分配多少资源。使用 Kubernetes 之类的软件,可以更轻松地扩展应用程序。在高负载下,容器数量可以增加;在低负载下,容器数量也可以减少。因此,通过这种机制,每个容器(或 Kubernetes 中的 Pod)都可以分配到最少的资源,并根据需要进行水平扩展。
例如,一个简单的 Node JS 应用容器/pod 可以运行在 128 MB 内存和 0.25 个 CPU 的配置下。当负载增加时,可以运行 5 个 pod 而不是 2 个。
这要求应用程序在构建时充分考虑水平扩展性。这基本上意味着不在文件系统上存储任何数据。像对待牛而不是宠物一样对待容器有助于实现水平扩展。这也使得应用程序的高可用性成为一项可实现的任务。
安全性已融入
使用容器而非虚拟机,攻击面已经缩小。遵循容器安全最佳实践,您已经可以改进安全措施。当然,如果您的应用程序存在漏洞,例如 SQL 注入,那就另当别论了。不过,使用像 Alpine 这样更小、更注重安全的镜像,可以更轻松地做好基础工作。
安全的核心在于将攻击面控制在最小。有了容器和 Docker,关闭更多安全门就变得更容易了。
容器应该只访问其所需的内容。由于文件系统对于容器而言是临时的,因此它既可以带来安全方面的益处,又可能带来安全审计问题。
部署更快,零停机时间
部署 Docker 容器始终意味着要运送整个堆栈。因此,单个文件不同步或单个服务器未获取最新更改的可能性不大。由于部署镜像始终需要成功构建,因此任何问题都可能在构建过程中发现。
借助 Kubernetes 和 Helm 等软件,容器的编排和部署变得非常简单。通过合理的负载均衡实现高可用性 (HA),部署可以实现零停机。
更轻松、更快速的部署意味着能够部署更小的变更。妥善完成的细微变更可以更快地响应市场需求。总而言之,使用正确的工具来部署容器,从而实现业务优势。
结论
过去五年,Docker 的普及速度飞速。借助 Kubernetes 等工具,部署和扩展应用程序比几年前轻松多了。
不要过度依赖虚拟机,高效利用它提供的资源。加入 Docker 和容器的行列,享受它带来的好处。
原文刊登于geshan.com.np。
链接:https://dev.to/geshan/4-ways-docker-changed-the-way-software-engineers-work-in-past-half-decade-1cj3