说起DevOps,无非是网络上的几张经典诠释图了。
首先,从软件生命周期的工作人员说起。
DevOps强调了个体之间的互动是非常重要的。
DevOps下的人员关系是这样的:
DevOps从对于人来说就是协作、交流、去隔阂,从而达到提高软件生态流程的效率 。
然后就是DevOps流程环,实现软件生态链的闭环:
也可以这样表示:
还有这样的DevOps体系环:
软件生态链过程实现高度自动化,类似河流的意义,源源不断,生生不息。
软件生态链减少人员干预,提高交付质量,节约人力资源,从而节约软件开发成本。
根据上图,即可得出下图:
软件生态链高度自动化后,产品迭代就能高质量的快速迭代,为企业不断输出,提高企业竞争力。
说了这么多,到底DevOps怎么实现呢?
DevOps是一种文化,一种思路,并不是一款软件。
实现DevOps唯有使用相关的工具软件了,当然这里介绍的是开源软件,根据开源软件栈可搭建DevOps技术平台。
从而实现属于自己的DevOps。
DevOps工具生态链:
目前DevOps常用的应用的开源技术(工具)是:
Ansible、Jenkins、Docker、Kubernetes、Git、Python
真正的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