这是最近一大学习方向,找工作也想找这样的运维岗,但devops是什么?别人问起我又该如何解释呢?所以翻翻资料写写文章记录下关于这个名词的所思所想好了。
所谓devops是一种软件开发和运维一体化的方法,也是一种小步快跑的开发模式,也就是将大的需求分割为一个个小目标来完成,与此同时又尽可能维稳。具体操作模式分为五大步,即持续开发、持续测试、持续部署、持续集成和持续监控,然后将监控监测到的情况加以总结后,如果出现了新的改进目标,或者客户提出了新的需求,那么又会再次开启一轮开发\测试\部署.... 继而就形成了,如下所示的一个持续性闭环。
对于软件开发人员而言devops就是敏捷型开发+自动化运维,而对于运维人员来说就是尽可能的实践自动化运维,同时又参与到开发工作中去,这对于不善于软件开发的运维工程师而言应该是不小的考验(至少我工作两三年中,碰见的运维工程师,没哪个愿意做开发的)。
之前知乎上也有看到一些前端工程师也在学习devops,貌似做开发的对于devops热情度挺高的,而对于运维工程师而言大概首要目标就是学习docker以及学习使用那些用来实践devops运维开发所需要的工具。要做到devops中重点提及的持续性,搭建并使用起这些工具应该是必不可少的。
如下是查到的比较全的关于devops实践所需要的一些工具(存在文章中,供之后学习用吧)。
代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
构建工具:Ant、Gradle、maven
自动部署:Capistrano、CodeDeploy
持续集成(CI):Bamboo、Hudson、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方厂商如AWS
编排:Kubernetes、Core、Apache Mesos、DC/OS
服务注册与发现:Zookeeper、etcd、Consul
脚本语言:python、ruby、shell
日志管理:ELK、Logentries
系统监控:Datadog、Graphite、Icinga、Nagios
性能监控:AppDynamics、New Relic、Splunk
压力测试:JMeter、Blaze Meter、loader.io
预警:PagerDuty、pingdom、厂商自带如AWS SNS
HTTP加速器:Varnish
消息总线:ActiveMQ、SQS
应用服务器:Tomcat、JBoss
Web服务器:Apache、Nginx、IIS
数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库
项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker
(碎碎念,想起以前公司的上司一个35岁左右的工程师,从我入职第一天就开始念叨整个devops的逻辑,还总说运维早晚要被开发取代,总是无限憧憬开发的工作...然而一年零8个月后我都要辞职了,也不见公司实践devops的理论,更别说用起devops相关的工具...其实我总在想,不管是运维也好还是开发,他们身上应该都有一个同样的角色,即problem solver,为了解决问题,运维工程师去学习开发学习编码,做到持续学习应该也是必然的吧)