Skip to content

Files

Latest commit

 

History

History
75 lines (38 loc) · 6.81 KB

DevOps干什么.md

File metadata and controls

75 lines (38 loc) · 6.81 KB

DevOps干什么

What do you do as a DevOps?

介绍

在这篇文章里我将为你介绍我实际的工作,和过去三年里在这个领域作为一个咨询顾问,而不是试图界定一个工作角色。

DevOps这个词的意思是巨大的过载,对于不同的人或者组织来说,可能是许多不同的事情。因此我不打算尝试找或者描述DevOps工程师的规范定义,或者实际上是一个工作角色/职位或者一个文化运动。

动机因素

写这篇文章的动机是有的时候我很难一句话说清楚我具体的工作,相比我是Java专家,前端开发,系统管理员或其他你经常提到的角色,这在知识领域内严格定义了单一的专业领域(sysadmin也有一些含糊)。

我在Reddit Devops Chanel看到一篇文章让我问自己这个问题是否可以在自己的博客中描述它,在我问了原始的文章后。这是我的尝试。

作为DevOps顾问我做什么

DevOps角色背景

当我最初开始为公司工作的时候,当时我在IT领域仅仅只有一些短期的经验,总共7个月时间,其中一个暑假4个月时间在做全栈开发,使用ASP.NET框架和RAZOR的后台模板技术,和一些kickout.js混合开发,使用svn当做软件配置管理(哎...:D),之后在我的考核中,我兼职做了3个月的初级研究员,在那里我接触到了虚拟化技术,基于一个研究项目,使用一个叫做Jailhouse的西门子项目来发现虚拟化技术对RTOS(实时操作系统)的影响,允许虚拟化单元(让我们称之为单元),访问其他单元无法共享的硬件,这是我第一次接触Hypervisors(虚拟化管理系统),它们的类型,它们如何工作,我相信虚拟化概念将是DevOps/基础建设 角色中需要了解的一个重要概念。

DevOps角色中我的路线图

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

自从Fiercely来了后,我开始工作在工业物联网环境中,在那里我可以选择语言、框架,只要在架构层级和业务需求都允许的情况下。

在那个项目中我最终使用python和flask,第一次接触到docker,用来管理网络、工业协议、交叉编译到arm设备上,RAM资源优化,如何加固软件项目,应对物理环境的挑战,就像断电、网络中断等等。与此同时,我在内部开发一个叫ODOO的Open ERP系统使用python脚本自动配置(ODOO也是用python开发的)。

从那之后我转到咨询顾问,最终我接触到了Configuration Management,使用Ansible,在Vagrant使用LXC(后来迁移到Docker)来保持ansible中provisioning和开发环境一致,在DevOps的直接中最著名的一句,避免了"它在我这里可以运行了"!

配置管理(Configuration Management)

为了让所有这些一起工作,对于那些做过配置管理的人来说,这不是什么问题,他们使用一些手册,因为当你写那些时候,你需要全面的基础设施和开发背景,你需要了解操作系统,它们的特点,它们的脚本(是bash,powershell还是其他),最重要的是对任何DevOps角色的最大要求是对软件架构的充分了解,深入了解软件如何工作,它们的模式和工具语法。

DevOps角色需要你了解组织架构,如何变成,网络如何工作,如何虚拟化,软的,类型1,类型2等等,你需要做胶水,这些都发生在你工作流当中。

CI/CD

使用CI/CD(continuous intgration/Continuous Delivery)工具,在源代码管理系统管理应用代码和基础架构。为了实现这个目标,我大量的使用git,和一些git工作流,在使用groovy自动构建Jenkins,允许yaml人工配置,不能同时使用groovy和shell脚本,我在那块花了很多时间,它作为DevOps静态呈现,即使我现在没有使用我想要的那么多的功能,CI/CD工具也是一个很好的管道。

安全和权限控制

最后还配合认证、授权使用LDAP,Keycloak,keycloak也是常见问题,虽然那里有很多工具,就像我说的,我们是顽固的,众所周知的3A(授权、鉴权和访问管理)解决方案就像keycloak是你的工具必须有的。

基础设施作为代码

除了Docker,Vagant,甚至在某些场景下可能的,我又接触到了Terraform,和CloudFormation的简短接触,除了一些带有ESXI实例,你还会把一些云基础设施自动化,在这里角色开始模糊,很多公司需要一些Terraform专家,或者部分Azure DevOps Ninja或AWS Boss,忘记大部分时间,这些工具都在行尾,作为一个好的DevOps角色,你需要很多工具,在DevOps角色中你不会仅仅接触单一的,但是,您正在寻找一些Terraform专家/Azure角色,并成为一个新的Cloud SysAdmin,而不是DevOps角色。

负载均衡和反向代理能力

如果你没有接触过Nginx,HaProxy或Traefik或者以他们的实例格式安装,那你就做错了。我配置了负载均衡器,主要作为反向代理,虽然我还没有遇到很多ELB的配置或者他们的Azure对应的配置。

应用开发

最后但并非最不重要的一点是,是的,我现在也发展成了全栈开发,使用Java和Javascript。我相信作为一个DevOps,在整个解决方案中考虑上下文,实际上会让我成为一个更好的工程师和程序员。也就不会出现,你编译下它你运行它...所以最终,双方都写应用程序线,到支持的基础设施代码,到前面的LB,它们的部署和QA管道。

数据库

ElasticSearch, PostgreSql , MySql等等。我当前不是DBA,但最终也会配置这些。从连接到ACL,到备份和管理,但我远不是SQL专家,无论如何也要避免在狭小的领域里,成为数据库或者AWS专家。

人文要素

到目前为止,我已经接触了很多语言和环境,所以除了所有的编码之外,大部分时间,我最终还是和人类交谈,我的工作的一部分实际上是帮助其他有DevOps心态的工程师,简化事情,让他们的生活更容易在整个组织内运行自己的应用程序,缩小Devs和Operation之间的差距。

Tl;Dr

Tl;Dr你最终使用了多种技术。因此,DevOps有时被用作“所有行业的杰克“的总称,尽管我并不自称“任何东西的主人“,但仍有很长的路要走。

希望你喜欢.,希望它给你带来了一些关于DevOps实际做什么的光芒。或者如果你已经在做类似的事情,你发现你的工作和我的工作有一些相似之处

最后附上一个优秀的DevOps的学习路线图