上周,我参加了在温哥华举行的2016 DevOpsDays 。 自2012年我在山景城参加我的第一个DevOpsDays活动以来,DevOps社区的发展给我留下了深刻的印象。有350多个参与者,他们所有人都在做有趣而重要的工作。
以下是我在这次会议上遵循的主要主题:
换位思考–人性化的工程和操作
整个会议上有一个很强的话题,那就是工程和运营的人性方面的重要性,理解和同情整个组织的人们。 有两份专门介绍共情的演讲:一个是乔伊特(Joyent)的马修·斯米利 ( Matthew Smillie)从工程学角度讲的,另一个是天秤座的戴夫·曼戈特( Dave Mangot)关于共情的神经科学的精彩演讲,它解释了我们是如何为共情而建立的,它是我们生存的核心。 还举行了有关性别问题的演讲,并举行了几次小组讨论会,内容涉及处理人际问题和将新人带入DevOps。
另一个方面是我们如何使用工具进行协作并建立人与人之间的联系。 越来越多的人越来越依赖于聊天系统(例如HipChat和Slack)来聊天。 使用聊天作为与其他工具的通用界面,利用Hubot之类的机器人自动触发和指导动作,例如跟踪发布和处理事件。
在某些组织中,随着人们不断寻找新的方式来与远程工作以及团队内部和外部的其他人进行互动并建立联系,站立式会议已被Chatups所取代。
扩展DevOps
各种组织都在处理DevOps中的扩展问题。
扩展他们的组织。 在极端的情况下,在大型组织中处理DevOps,并弄清楚如何在小型团队中有效地进行DevOps。
扩展连续交付。 每个人都在尝试更快,更频繁地推出更多变更,以降低风险(通过减少变更的批量大小),增加参与度(对于用户和开发人员)并提高反馈质量。 一些组织已经达到需要管理数百或数千个管道或优化由数百名工程师共享的单个管道,每天多次将变更(或新烘烤的容器)构建和交付到许多不同环境中的地步。
随着组织规模的扩大,CD的一个常见故事是这样的:
- 开始使用Jenkins以临时的方式构建CD功能,并添加一些插件并编写自定义脚本。 继续努力直到无法跟上。
- 然后购买并安装商业企业CD工具集,过渡并运行直到无法跟上。
- 最后,构建自己的定制CD服务器,并将构建和测试团队移至云中,并继续进行下去,直到财务部门向您大喊大叫为止。
缩放测试。 提出有效的测试自动化策略,以提高其价值-在单元测试(位于测试金字塔的底部)和端到端系统测试(位于金字塔的顶部)中。 决定在哪里投入时间。 了解工具以及如何使用它们。 什么样的测试值得写,值得维护。
扩展架构。 这意味着越来越多的微服务实验。
码头工人,码头工人,码头工人
Docker无处不在。 在飞行员中。 在开发环境中。 特别是在测试环境中。 而且现在更常见于生产中。 与Docker的合作,Docker的问题以及有关Docker的问题出现在许多演讲,专题讨论和走廊讨论中。
Docker在CD管道的开始和结束时都产生了新问题。
首先,它将配置管理从前移到构建步骤。 对应用程序进行的任何更改或对其生成并运行的堆栈的更改都要求您“烘焙一个新蛋糕”(Openshift的Diogenes Rettori )并构建并运送新的容器。 这对您的构建环境提出了很高的要求。 您需要找到有效且高效的方法来管理容器中的所有层,缓存依赖项和映像以使构建快速运行。
Docker在生产端也提出了新的挑战。 随着应用程序的扩展,如何跟踪和管理容器集群? Kubernetes似乎是这里的选择工具。
取决于依赖
越来越多的注意力转向构建和依赖管理,管理第三方和开源依赖。 识别,简化和保护这些依赖性。
不仅是您的应用程序及其直接依赖关系,还包括下面所有层中所有嵌套的依赖关系(您的软件所依赖的软件以及该软件所依赖的软件,依此类推)。 特别适合使用Java之类的重堆栈的团队。
关于使用诸如Archiva , Artifactory或Nexus之类的工具以及私有Docker注册表来跟踪依赖关系并管理自己的依赖库的重要性的讨论很多。 并消除不必要的依赖关系,以减少虚拟机和容器的攻击面和运行时占用空间。 一个组织通过不断减少构建依赖关系并在Vagrant中扩展测试环境直到事情破裂来做到这一点。
Docker通过使依赖关系管理看起来更简单,更方便,并为开发人员提供了对应用程序依赖关系的更多控制,从而带来了一些新的挑战–这对他们有好处,但对安全性并不总是有利的:
- 默认情况下,容器太胖了–它们包含了您不需要的通用平台依赖项,以及-如果您将这些交给了开发人员,则是不需要在生产中使用的开发人员工具。
- 容器附带了所有依赖关系。这意味着在将容器放在一起并随处运送时,您需要跟踪构建了什么版本的映像,哪些版本的依赖关系以及何时何地将它们交付。以及需要修复哪些漏洞。
- Docker使从公共注册表中提取预先构建的映像变得容易。 这意味着也很容易提取过时或可能包含恶意软件的图像。
您需要找到一种方法来管理这些风险,而又不至于妨碍和降低交付速度。 诸如Twistlock之类的容器安全工具可以扫描漏洞,提供运行时安全风险的可见性并执行策略。
保守秘密
Docker,CD工具,Chef和Puppet和Ansible等自动化配置管理工具以及其他自动化工具给操作和安全性带来了另一组挑战:如何保持这些工具需要的凭据,密钥和其他秘密。 使它们远离代码和脚本,配置文件以及环境变量。
这需要通过代码审查,访问控制,加密,审核,频繁的密钥轮换以及使用诸如Hashicorp的Vault之类的机密管理器来处理 。
热情,模式和问题
在这次会议上,我遇到了很多有趣,聪明的人。 我经历了很多真诚的承诺,热情,激动和活力。 我了解了一些不错的主意,新的使用工具以及遵循(或避免)的模式。
还有新的问题需要解决。
翻译自: https://www.javacodegeeks.com/2016/04/devopsdays-empathy-scaling-docker-dependencies-secrets.html