名词:

服务发现:

用来确保服务的位置无关性,通过服务名来查询获得服务的实际地址。

名字解析:

用来确保服务器位置无关性,通过机器名查询获得机器的实际IP地址。

场景一:

特点:

应用少,流量轻,数台机器,DevOps分离,手动基础设施管理,手动应用程序部署,监控非必要,面向机器,基于IP的配置,服务发现非必要,名字解析非必要。

流程:

DevOps分离。

方法:

各个环境的基础设施(网路,服务器,IP地址,操作系统,依赖包)事先由Ops人员搭建,完成后将各个环境最终的机器配置信息告知Dev。机器配置信息包括机器名,用途,规格(OS,CPU,内存,硬盘),IP地址,端口,预装软件信息等。
 
Dev开发完一个迭代后,将软件打包后交由Ops人员部署到QA环境,一旦QA环境测试通过再由Ops人员将软件包部署到PROD环境。Dev要根据Ops人员提供的各个环境的机器配置信息生成应用在各个环境的具体配置文件,并随软件包一起提交给Ops人员。

工具:

手动部署

场景二:

特点:

应用少,流量轻,数台机器,DevOps合作,手动基础设施管理,自动应用程序部署,监控非必要,面向机器,基于IP的配置,服务发现非必要,名字解析非必要。

流程:

DevOps合作。

方法:

各个环境的基础设施(网路,服务器,IP地址,操作系统)事先由Ops人员搭建,完成后将各个环境最终的机器配置信息告知Dev。机器配置信息包括机器名,用途,规格(OS,CPU,内存,硬盘),IP地址,端口,预装软件信息等。
 
Dev提交一个Commit到Git Repo后触发CI/CD执行Pipeline的第一个Stage Build,Build Stage从GitRepo下载代码(包含部署脚本)并编译,测试,打包,上传。
 
打包完成后自动触发CI/CD执行Pipeline的第二个Stage QA,QA Stage调用部署程序(Ansible)根据部署脚本(Playbook)将软件包部署到QA环境(Inventory),部署通常包括下载软件包,根据Inventory生成配置文件,部署程序,启动服务等。
 
一旦QA环境测试通过,需手动触发CI/CD执行Pipeline的下一个Stage Prod,Prod Stage调用部署程序(Ansible)根据部署脚本(Playbook)将软件包部署到Prod环境(Inventory)。

工具:CI/CD + Ansible

CI/CD- GoCD Pipeline:

Build
QA
Prod

部署脚本- Ansible:

invetories
qa
[web]
......
[db]
......
prod
[web]
......
[db]
......
playbooks
web.yml
db.yml
templates
Conf.j2

场景三:

特点:

应用少,流量轻,数台机器,DevOps合作,自动基础设施管理,自动应用程序部署,监控非必要,面向机器,基于IP的配置,服务发现非必要,名字解析非必要。

流程:

DevOps合作。

方法:

各个环境的基础设施(网络,服务器,IP地址,操作系统)由基础设施管理程序(Terraform)根据各个环境的基础设施配置自动配置,完成后自动生成各个环境最终的机器配置信息(Invetory)。
 
Dev提交一个Commit到Git Repo后触发CI/CD执行Pipeline的第一个Stage Build,Build Stage从GitRepo下载代码(包含部署脚本)并编译,测试,打包,上传。
 
打包完成后自动触发CI/CD执行Pipeline的第二个Stage QA,QA Stage调用基础设施管理程序(Terraform)根据基础设施配置自动完成QA环境基础设施配置并生成QA环境机器配置信息(Inventory)。再由部署程序(Ansible)根据部署脚本(Playbook)将软件包部署到QA环境(Inventory),部署通常包括下载软件包,根据Inventory生成配置文件,部署程序,启动服务等。
 
一旦QA环境测试通过,需手动触发CI/CD执行Pipeline的下一个Stage Prod,Prod Stage调用基础设施管理程序(Terraform)根据基础设施配置自动完成Prod环境基础设施配置并生成Prod环境机器配置信息(Inventory)。再由部署程序(Ansible)根据部署脚本(Playbook)将软件包部署到Prod环境(Inventory)。

工具:CI/CD + Terraform + Ansible

CI/CD- GoCD Pipeline:

Build
QA
Prod

基础设施配置- Terraform:

input:
qa:
*.tf
*.tf_state
prod:
*.tf
*.tf_state
output: inventories
qa
prod

部署脚本- Ansible:

invetories
qa - created from terraform
prod - created from terraform
playbooks
web.yml
db.yml
templates
Conf.j2

场景四:

特点:

应用多,流量巨,万台机器,DevOps合作,自动基础设施管理,自动应用程序管理,监控,面向容器,服务发现,名字解析,配置管理。

流程:

DevOps合作。

方法:

各个环境的基础设施(网络,服务器,IP地址,操作系统)由基础设施管理系统根据需求信息(由高层提供)自动配置。各个服务的用途也由基础设施管理系统根据需求信息(由高层提供)自动决策。因基础设施并非事先设定,故应用的配置不能依赖服务和机器的物理地址,需采用服务发现配合名字解析来实现系统的集成和配置。

工具:

自动基础设施管理系统(面向机器,伸缩,部署,监控)
自动应用程序管理系统(面向容器,伸缩,部署,监控)
服务发现
名字解析
配置管理
 
 

DevOps的几个场景的更多相关文章

  1. 翻译-DevOps究竟是什么?

    原文地址:http://www.drdobbs.com/architecture-and-design/what-exactly-is-devops/240009147 作者:Neil Garnich ...

  2. 基于微服务的DevOps落地指南 交付效率提升40%

    基于微服务的DevOps落地指南 交付效率提升40% 2015-2016年,珍爱线下门店已新增覆盖城市9个,与此同时,CRM系统大小故障却发生了数十起... ... 珍爱网是以“网络征选+人工红娘”模 ...

  3. DevOps - DevOps精要 - 落地

    1 - 关键问题 如何向不具备相关基础知识的人说明和解释DevOps? 如何在组织和团队中推广和实施DevOps? 2 - 在组织中实施DevOps 在全新的组织或服务开发中,没有既定规则和老旧的习惯 ...

  4. DevOps的分与合

    一.抽象的 DevOps DevOps 是使软件开发和 IT 团队之间的流程自动化的一组实践,以便他们可以更快,更可靠地构建,测试和发布软件.DevOps 的概念建立在建立团队之间协作文化的基础上,这 ...

  5. DataOps Reading Notes

    质量.效率.成本.安全,是运维工作核心四要素. AIOps 技术会涉及到数据收集方面的基础监控,服务监控和业务监控,甚至会涉及到与持续交付流水线的数据和状态整合(比如在软件发布的阶段会自动关闭某些监控 ...

  6. Kubernetes官方java客户端之二:序列化和反序列化问题

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. 在Docker应用场景下 如何使用新技术快速实现DevOps

    在Docker应用场景下 如何使用新技术快速实现DevOps @Container容器技术大会是由国内容器技术社区DockOne组织的专为一线开发者和运维工程师设计的顶级容器技术会议,会议强调实践和交 ...

  8. DevOps的基本原则与介绍

    DevOps的基本原则与介绍       DevOps这个术语是developer与operations的合并简写.实现还有QA.DevOps描述与精简软件交付流程,在今天已经开始广泛的使用.强调从生 ...

  9. DevOps是云计算时代的开发与运营

    DevOps(英文Development和Operations的组合)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整合.[1] 它 ...

随机推荐

  1. Bootstrap入门(十五)组件9:面板组件

    Bootstrap入门(十五)组件9:面板组件 虽然不总是必须,但是某些时候你可能需要将某些 DOM 内容放到一个盒子里.对于这种情况,可以试试面板组件. 1.基本实例 2.带标题的面板 3.情景效果 ...

  2. MyBatis-Generator的配置说明和使用

    关于MyBatis: MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2. ...

  3. 关于Node.js后端架构的一点后知后觉

    前言 上周有幸和淘宝前端团队的七念老师做了一些NodeJS方面上的交流(实际情况其实是他电话面试了我╮(╯-╰)╭),我们主要聊到了我参与维护的一个线上NodeJS服务,关于它的现状和当下的不足.他向 ...

  4. pwnable.kr-fd-Writeup

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  5. class path resource [config.xml] cannot be opened because it does not exist

    初学Spring在用Resource rs=new ClassPathResource("applicationContext.xml");时老是遇到这个错误.后来发现用Appli ...

  6. asp.net权限认证:OWIN实现OAuth 2.0 之简化模式(Implicit)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  7. Superwebsocket 模拟微信聊天室

    在园子里潜水几年了,工作以来算是有些积累,突然想写点东西方便以后温故而知新,希望自己能够坚持下去. 关于Superwebsocket的介绍我就不多说了,请点击:http://www.cnblogs.c ...

  8. matlab 嵌套循环的学习

    循环嵌套带嵌套的循环一般为两重,举例1: disp('一个简单的二重for循环'); : : result = ii *jj ; fprintf(' %d * %d = %d \n',ii,jj,re ...

  9. load & get 加载方式

    1.Hibernate中get和load有什么不同之处? (1)Hibernate的get方法,会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数 ...

  10. 关于C# XmlDocument方法Load加载流后自动释放流的解决方法

    在实际应用doc.Load(Request.InputStream)的时候,doc.Load方法内置默认释放流 造成再次度Request.InputStream的时候,代码报错 替换方法: XmlDo ...