【编者的话】本文作者主要讲述了将业务迁移至Docker或者容器上需要了解的问题以及实现考虑的事情。很认同作者说的“having a powerful engine doesn’t get you far if you don’t have the rest of the car built to support it(即使有强大的引擎,缺少飞车的其余部件,你也不能走的更远)”,所以Docker只是一个引擎,真正应用到生产环境,还需要Kubernetes等相关工具的支持。

【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实践经验分享。

Docker和其他容器服务极具吸引力的原因是它们轻巧灵活。对于许多公司来说,为了让平台成熟度更上一层,他们希望将运行时的资源需求减少到和裸机运行一致(至少这是他们的意图)。

当你深入研究容器所带来的好处时,很容易看出为什么这么多公司已经开始着手:

  • 容器化他们的app以及支撑服务
  • 实现隔离
  • 减少环境差异
  • 尽可能提升部署周期

对于规模小、松耦合的软件开发模式,能够更好地围绕容器化进行架构设计。我们(作者)是Threat Stack的大粉丝,我们持续投入资源支持那些依赖于Threat Stack的客户。实际上,我们最近发表官方声明我们的代理服务(agent)已经支持CoreOS。

不过,我们发现对于Docker以及其他容器服务的疑惑并不少见(考虑到容器服务快速成长与变化速度,这并不奇怪),比如说:

  • 如何实现容器的好处
  • 对基础设施/运营的影响
  • 对整体SDLC和Ops流程的影响

当然,容器是有很多好处,它提供了很好的方式让你探寻如何为你的公司更好地应用容器。不过,我们最好是能够先剥离其外表的酷炫,找到更好应用容器技术的方式。

为什么是Docker?为什么是现在?

许多公司目前正在运行大量的AWS实例用以加速新的应用程序、服务、数据库等,从而扩大自身业务。当从业务量特别小开始扩张时,会逐步感受到其带来的各种类型的开销:

  • 复用宿主机操作系统的计算资源
  • 与应用程序无关的大量进程
  • 管理更多的实例

这将导致无节制扩张、核心思想的不一致以及流程与预算挑战。财务部门希望了解Ops团队如何规划他们的增长和支出,安全团队会尽量插足业务增长情况,以确保公司达到其安全策略的目标,而工程师希望获知如何能够在他们需要快速部署的新组件上得到足够的灵活性。与此同时,业务还需要不断增长。

因此,一个关键问题是:我们该如何优化我们的流程,优化我们AWS环境(用以省钱),同时还能做我们需要做的事情?

Docker - 至少在表面上 - 似乎为这个难题提供了一个答案。

我们从具有很多AWS实例的公司那了解到一个常见的共同主题是通过增加单个实例配置和其上运行容器的规模来减少原始实例的数量。

例如,你有600个AWS实例,每个实例具有1个CPU和4-5GB的内存,那么你可能会思考可以通过Docker容器将AWS实例减少到100个,而每个实例具有32个GPU和64GB内存。然后你就可以减少AWS上的花费,因为你拥有了更少的实例数。这是正确的吗?其实没那么简单。

转向容器前应该思考什么

在短期内,上述变化可能适用于某些用例。但从长远来看,与许多技术选型一样,你正在为另一种方式提供一套复杂性。为什么?

一种全新的技术栈

随着你开始大规模运行容器,你需要投入资源到一个管理与编排平台用以管理你的容器和资源。这需要一个容器自身的整体技术栈。

而且由于容器的使用模式仍然是一个比较新的课题,因此没有很多最佳做法可以参考借鉴,所以制定策略的过程取决于具体的实现,这将意味着生产和公司投入需要持续的迭代,这可能会影响交付计划。

管理度挑战

应用容器的其他较大挑战包括:

  • 如何管理容器
  • 如何保持容器可见性
  • 如何知道何时使用容器是适当的解决方案(何时又不是)

目前,就上述三个问题,我们能够找到很多“Docker合理化”建议。这就意味着很多公司正在转向容器化方案,因为他们能够解决他们遇到的具体用例。这是一件好事(演变的发生需要不断地迭代),但是当需要确定对于平台可用性、安全性以及成本效率的影响时,最好是提前制定出一套清晰的用例目标。

安全风险

虽然从表面上看将你的工作负载迁移到容器上是有意义的,但难题经常发生在细节处理上。随着容器具备更大的自由性与可选性,我们需要管理新的风险类型。 对于容器而言,安全性可能是非常具有挑战性的,因为你没有靠得住的最佳实践可以依赖。

随着你业务的扩展,你将需要了解如何对你正在使用的镜像,它们的构建方式以及提供给进程的访问范围进行适当的控制。你应该事先知道如下问题的答案:

  • 开发人员是否被允许登录一个生产环境运行中的容器?
  • 所有容器是否保持不变?
  • 我们该怎么管理容器镜像大小?

一开始就明确这些问题的答案将有助于让你的实现过程清晰明确。

真诚面对挑战

很多公司正在揭露容器复杂性方面所遇到的挑战,我们所了解到的一些难题如下:

  • 需要使用哪种类型以及相应数量的实例来运行这些容器?并且,真正的性能瓶颈是什么?
  • 由于工作负载的特点随着时间的推移而变化,如何知道容器基础设施需要进行适配以及重新建模?
  • 如何处理规模伸缩问题?何时向上扩展?何时向外扩展?该怎么减少外层规模而不引入SPoF?
  • 如何处理容器的安全性,进程运行在容器中,它们可以访问哪些容器外部事物?

问题会从很多维度产生。需要谨记的最重要的事情之一是,尽管Docker确实可以帮助你运行得更快,但即使拥有强大的引擎,缺少构建飞车的其余部件,也不能让你走的更远。

未来是光明的

很明显,容器是云计算基础设施未来的重要组成部分,我们在Threat Stack中正在拥抱容器。我们希望看到越来越多的公司能够以开放的态度应用容器技术,从而与容器化中固有的风险认知相平衡。

好消息是将你的工作负载迁移到容器中并不会真正减少可见性,但你必须意识到Docker不能解决云上的所有问题,就像任何其他技术一样,应该用乐观和怀疑的态度来应用它。

原文链接:Why Docker Can’t Solve All Your Problems in the Cloud(翻译:肖远昊)

为什么Docker不能解决云上的所有问题相关推荐

  1. 墨天轮访谈 | 百度云邱学达:GaiaDB如何解决云上场景的业务需求?

    分享嘉宾:邱学达 百度云原生数据库资深技术专家 整理:墨天轮社区 导读 业务上云的大背景对弹性与可靠性的要求越来越高,传统架构的单机数据库或是分片数据库已经很难支撑快速增长的业务,导致单机瓶颈.扩容缩 ...

  2. 韵达混合云深度解析:Docker助力大规模云上调度实践

    在2016杭州云栖大会第二日,韵达快运集团高级总监张磊在智慧物流专场分享了<大数据在物流行业应用突破--大规模云上调度实践>.他主要从韵达上云过程.云上资源调度实践.未来发展三个方面进行了 ...

  3. 上云之路之企业级云上网络解决方案

    2017年,越来越多的企业处于内部部署解决方案和云环境拆分的混合IT世界中.为了适应产品的服务模式和公司未来的业务运营模式,结合公司2018年业务发展计划.计划将部分系统迁移部署在云平台,从而产生对混 ...

  4. 知道创宇云上安全三件套专治上云“水土不服”

    一年一度实战演练大考进行时,也是云上业务问题集中暴露时. 虽然这些年政企都轰轰烈烈的上云,但是上了云才知道,上云不是数字化的终点,而是起点. 虽然上云能够提高工作效率,但传统运维与云上运维之间有巨大差 ...

  5. Soul运维总监尤首智:企业如何从0到1建设云上运维体系

    图:任意门运维负责人尤首智 编者按:2021年12月10日,在阿里云云上架构与运维峰会上,任意门(Soul)运维总监尤首智发表了主题为"Soul云上运维架构创新实践"的演讲,和大家 ...

  6. 蓝云公布2019云生态战略,如何解决企业上云关键问题?

    过去几年,云计算在发展过程中暴露出很多问题,比如云厂商推进步伐很快,但企业接受能力有限,导致不少企业的云初体验并不是很愉快,未能最大化利用云平台的价值造成大量资源浪费,进而产生云平台成本很高的印象-这 ...

  7. 华为云平台使用手册_华为云首发全生命周期应用平台,四大能力解决政企上云五大难题...

    9月19日,在华为全联接大会上,华为云正式发布全生命周期应用平台.华为云应用平台服务产品部副总经理汪维敏介绍,华为云无缝整合三大尖刀产品(华为云DevCloud.ServiceStage.ROMA), ...

  8. 云上远程运维的最后那点担心,“云梯”帮你解决

    摘要:安全可信的网络连接方案是远程运维的基础,否则反而会将安全风险(数据安全.网络攻击)引入到客户本地云中. 本文分享自华为云社区<[华为云Stack][大架光临]第2期:云上远程运维的最后那点 ...

  9. 阿里云上运行Docker版本的PostgreSQL

    阿里云上运行Docker版本的PostgreSQL 最近公司项目上用到PostgreSQL9.3.24, 需要搭建一套PostgreSQL测试环境. 正好最近阿里云双11优惠幅度巨大,果断入手一台2核 ...

  10. 码云上传项目时出现空目录的解决办法

    利用git上传项目到码云上的时候,明明本地项目目录中是有文件的,但是通过git commit提交之后,在码云上显示确实空目录,经过问题定位排查导致这个问题的主要原因是因为git缓存导致的,所以我的解决 ...

最新文章

  1. 百度机器人对战人类最强大脑,赢在了小数点后第二位
  2. 回填用土好还是砂石料好_卫生间做回填好还是做架空好?这两者有哪些优缺点...
  3. Microsoft .NET:Microsoft .NET之.net4.5.1简介、安装、使用方法之详细攻略
  4. Linux 内存管理 | 物理内存管理:物理内存、内存碎片、伙伴系统、slab分配器
  5. python数据结构之栈
  6. mysql如何在一个表中插入数据的同时,更新另一个表的数据?
  7. Python3回文相关算法小结
  8. 软件测试之缺陷报告的BUG状态
  9. 室外定位_为什么老师应该走出自己的舒适区而进入室外
  10. APPCAN学习笔记002---app快速开发AppCan.cn平台特色
  11. PHP06 流程控制
  12. 开源论坛软件 NodeBB 中存在多个严重漏洞
  13. pandas.DataFrame对根据某些列对某些列进行修改
  14. Jquery获取web窗体关闭事件,排除刷新页面
  15. 仓库无证如何处罚_法律问题 | 在船舶检查过程中,我遇到的一些问题该如何解决?...
  16. 显示“没有注册类”问题解决方法(mscomm)
  17. 【第37期】游戏策划:简历那点事
  18. python关于pyaudio无法import的一系列问题
  19. 手把手教你通过Google Adsense“PIN码验证”
  20. 简单人物画像_超级简单人物素描画图片精选

热门文章

  1. zabbix server安装配置
  2. File Manager所支持的文件
  3. 域内,如何限制一台电脑只能指定的域用户登录
  4. OpenCV---膨胀与腐蚀
  5. CodeForces Gym 100935E Pairs
  6. CentOS 安装nload(流量统计)
  7. 分享两款迷你FTP服务器
  8. 《Netty Zookeeper Redis 高并发实战》 图书简介
  9. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍
  10. python plt 如何画不同的数据图