前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当你谈论DevOps时,你到底是在说什么?

当你谈论DevOps时,你到底是在说什么?

作者头像
灵雀云
发布2019-08-23 16:46:52
7420
发布2019-08-23 16:46:52
举报

在本文中,我将解释我实际上在做什么,以及过去三年里,作为这个领域的顾问所做的事情,而不是试图定义一个工作角色。

DevOps是一个术语,它承受了过多的含义,意味着许多不同的事情,不同的人或组织,所以我不敢轻易定义或者描述DevOps工程师是干嘛的,即使它已经被定义为一个工作角色/职位,或者是一项文化运动。

动机

写这篇文章的动机在于,在单一语境下,有时对于解释DevOps是什么,我感觉非常困难。我不是你的Java专家,前端开发,系统管理员或者其他你能碰到的常见角色。你会发现,这是一个在知识领域内严格定义的单一专业领域。

作为DevOps顾问,我主要做什么

DevOps角色之前的背景

在我为公司开始工作之前,我在IT领域有一些短期的经历,大概7个月左右。有一段经历是在一个暑期实习了4个月左右,这让我拥有完整的全栈开发经验,当时使用APS.NET 框架,Razor后端模板,以及一些kickout.js mix,使用svn作为我们的SCM。在这之后以及BsC实习期间,我接触到了虚拟化,我兼职做了3个月的初级研究员,在一个叫做Jail house的西门子项目中,发现虚拟化在RTOS中的影响,允许授予虚拟化单元访问无法在其他单元之间共享的硬件,这是我第一次接触虚拟机监控程序,它们的类型以及工作方式。我相信虚拟化概念是一个在DevOps / 基础设施角色中工作时要了解的关键概念。

我在DevOps角色上的职业经历

Fiercely - 一家咨询公司,通过改进开发流程和工作流程,基础设施自动化以及整体思维方式的变化,帮助IT公司改善组织流程。

自从来到Fiercely,我开始在工业物联网环境中工作,在这里我可以自由选择语言和框架,只要它们在架构级别和业务需求上有意义。

在那个项目中,我最终使用了python flask框架,第一次接触docker,同时必须管理网络,工业协议,arm交叉编译,RAM资源优化,以及如何通过加固软件项目以抵御物理环境挑战,例如断电(你好,被损坏的文件,这点我正在写给你),网络中断等等......同时,我使用Open ERP(被命名为ODOO)开发一个内部项目,同时用python脚本自动配置它(ODOO也是用python编写的)。

从那时起,我转向了咨询,在那里我接触到了配置管理,同时使用Vagrant与LXC (后来迁移到Docker) 以及Ansible provisioning,确保开发环境在开发人员的机器上保持相同状态。这里有个思维方式在起作用 ->在DevOps的世界里有句名言,要避免说“It works on my machine”。

配置管理

为了使上述那些一起工作,对于进行过配置管理的人来说,你需要有完整的基础设施和开发环境的背景,操作系统知识、特性、他们自己的脚本(从bash到powershell等等)。最重要的是软件架构的全面知识,软件应该如何运行,已知模式,这是对每一个DevOps角色的最大要求。(请忘记需要你具备一个一次性使用工具5年工作经验的那些角色吧,实际上这个最新的工具还可能是1年前才发布的,并且是被测试了1年),之后就只是怎么使用的问题了。

由于DevOps角色要求跨组织架构,了解如何编程,网络应如何工作,虚拟化如何实现,......等等,你必须写大量的胶水代码将你的工作流串起来。

CI/CD

使用CI / CD(持续集成/持续交付)工具,并在源代码管理下获取IAC( infrastructure as code)和应用程序代码。为了达到这个目的,我已经广泛地使用大量git工作流,同时自动化和配置Jenkins,因为 jenkins 的流水线文件要用 groovy,而一般用户又不想写 groovy,于是就用groovy 和shell 脚本做出一些工具让用户直接用 yaml 来写jenkinsfile,这是花费我大量时间的地方。DevOps是持续存在的,CI / CD工具和Pipelines是永不过时的。

安全和访问控制

最后还要使用身份验证,授权,LDAP,Keycloak(及其所有集成,SAML,Oauth等等)。即使有这么多工具,keycloark永远是最有存在感的一个。如果你需要一个比较全的关于授权,身份验证,访问管理(3A, Authorization, Authentication and Access Management)的解决方案,你必须试试 keycloak。

基础设施即代码

基础设施的代码化,除了选择 Docker 和 Vagrant,在某些情况下也可以用 Ansible 实现(IAC所涉及的部分),我最近尝试过Terraform,也简单的研究了Cloud Formation,还有在 ESXi 中的一些场景(我还没做这部分的自动化)你最终都会自动化基础设施的管理,Devops这个角色开始变得模糊,许多公司都在招聘 Terraform 专家,或者Azure DevOps Ninja 或 AWS Boss,但大部分时候,工具只是完成任务的落脚点,一个好的优秀的 DevOps 人员需要很多很多工具,但不单单是在用这些工具就结束了,否则,你需要的只是Terraform专家或者Azure 运维,最后变成另一个云服务提供者,而事实上这并不是DevOps。

负载均衡器和反向代理

好吧,如果你还没有在容器中安装或配置过Nginx、HaProxy或Traefik,那么你就做错了。虽然我还没有遇到大量的ELB配置或者他们的Azure配置,但我已经配置了Load Balancers,大多数时间都是作为反向代理使用的。

这还伴随着你将无法回避/逃离的证书管理。

应用开发

最后但同样重要的是,我现在也使用Java和Javascript开发了完整的全栈开发。我相信一个DevOps角色必须将自己置身于完整的解决方案中,这实际上使我成为一个更好的工程师和程序员,因为不用说,你构建它...你运行它,所以最终既要编写应用程序,又要支持基础设施代码,前面的LB(负载均衡),部署和QA Pipeline。

数据库

好吧......差点忘了这些.. ElasticSearch,PostgreSql,MySql等。好吧我不是DBA,但最终还是要配置这些,从他们的连接,ACL,到备份和管理,但我并非一名SQL专家,无论如何都要避免陷入一个狭窄的领域,成为数据库或plane AWS expertise。

人的思维方式

到目前为止,我已经接触过很多语言和不同的环境,大多时候,除了编码之外,我最终还是要和人沟通,我的部分工作实际上是帮助其他工程师拥有DevOps思维方式,简化事物,让他们更轻松地在整个组织内运行自己的应用程序,减少开发人员和运营团队之间的代沟。

结语

你最终使用了多种技术。因此,DevOps有时被用作一个总称:“万金油”或者“架构大师”,我不认为自己是任何领域的大师,这仍然有很长的路要走。

希望你喜欢本文,希望它能让您了解一些DevOps的实际功能。如果你已经在做类似的事情,你会发现我们的工作之间有相似之处。

感谢您阅读本文。如下是由roadmap.sh提供的优秀的DevOps路线图:

原文链接:

What do you do as a DevOps?

https://ilhicas.com/2019/08/11/What-you-as-a-Devops.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档