DevOps工程师
DevOps工程师
1. DevOps工程师的任务是什么?
- 设计、构建、测试和部署可伸缩的分布式系统,实现从开发到部署的自动化
- 管理代码库(如Git、SVN、BitBucket等),包括代码合并与集成、分支与维护、远程库管理等
- 管理、配置和维护基础设施
- 设计数据库体系结构和数据库对象,并同步各种环境
- 设计、实施和支持DevOps持续集成和持续交付pipeline
- 研究和实施新技术和新实践
- 将流程、系统和工作流文档化,更新操作手册
- 使用行业领先的服务创建和增强动态监视和警报解决方案
- 持续分析手动执行的任务,这些任务自动化
- 创建和增强基于Docker和Kubernetes的持续部署自动化
2. 谁能成为DevOps工程师?
- DevOps是一个涉及的知识面非常广。例如,您可能来自编码或测试背景,也可能是系统管理员、数据库管理员或操作团队。在DevOps方法中,每个人都可以扮演一个角色。
- 如果你具备以下的知识和/或专长,你就已经准备好成为DevOps工程师了:
- 你拥有学士、硕士或理学学士学位(最好是计算机科学、IT、工程、数学或类似专业)
- 2年以上软件开发经验,熟悉SDLC生命周期和精益敏捷方法(SCRUM)
- 有较强的Linux/Unix和Windows管理背景
- 使用面向对象或函数式编程语言(如Python / Ruby / Java / Perl / Shell scripting / Groovy或Go)进行系统开发
- 系统级了解Linux (RedHat、CentOS、Ubuntu、SUSE Linux)、Unix (Solaris、Mac OS)和Windows服务器
- Shell脚本和自动化的例程,远程执行脚本
- 具有数据库管理经验,熟悉Mongo/Oracle或MySQL数据库
- 强大的SQL和PL/SQL脚本
- 有使用Git、GitLab、GitHub或Subversion等源代码版本控制管理的经验
- 熟悉云架构,特别是Amazon Web Services(AWS)或谷歌云平台或Microsoft Azure
- 对docker/或Kubernetes的容器使用和实现有很好的理解
- 有使用Jenkins和GitLab进行CI/CD pipeline的经验
- 数据中心管理,系统管理,监控,网络和安全知识
- 有使用Ansible, Puppet and/or Chef进行自动化/配置管理的经验
- 了解如何使用配置监视工具(如Nagios或Prometheus)监视代码
- 基础设施和网络方面的背景
- 关于RESTful api的广泛知识
- 对网络和核心互联网协议(如TCP/IP、DNS、SMTP、HTTP和分布式网络)有扎实的理解
- 优秀的书面和口头英语沟通能力
- 自我学习,团队合作,愿意学习新技术,独立解决问题和交付结果的能力。
3. 相关的工具
- 编程语言(C、Java、Perl、Python、Ruby、Bash shell、PowerShell)
- 操作系统概念(资源管理)
- 源码控制(如Git、Bitbucket、Svn、VSTS等)
- 持续集成和持续交付(Jenkins, GitLab CI, CircleCI)
- 基础设施即代码(IaC)自动化(工具如Puppet、Chef、Ansible和/或Terraform)
- 管理服务器(应用程序、存储、数据库、基础设施、网络、web服务器等)
- 应用程序、数据库、Web服务器、存储、基础设施、网络服务器
- 网络和安全
- 容器的概念(Docker)
- 持续监视(Nagios和Prometheus)
- 云(比如AWS、Azure、谷歌云)
4. 软技能
作为一个DevOps工程师,你必须是一个积极的团队成员,需要有学习和成长的愿望,优化流程并找到更好的解决方案。
由于DevOps涵盖的范围很广,所以最好专注于您的关键技能,并根据需要学习技术和工具。
理解问题/挑战,然后找到一个与此类似的DevOps解决方案。