名词:

服务发现:

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

名字解析:

用来确保服务器位置无关性,通过机器名查询获得机器的实际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. Ubuntu 制作U盘启动盘

    部门需要一台Linux系统远程共享服务器,需要一个启动盘安装.但是由于公司windows 系统都安装了保安软件,而且软件的使用也是有限制的.所以不能使用UltraISO 这类软件制作U盘启动盘.还好部 ...

  2. <C++Primer>第四版 阅读笔记 第二部分 “容器和算法”

    泛型算法中,所谓"泛型(generic)"指的是两个方面:这些算法可作用于各种不同的容器类型,而这些容器又可以容纳多种不同类型的元素. 第九章 顺序容器 顺序容器的元素排列次序与元 ...

  3. css3 3d 与案例分析

    作者:魔洁 聊到3d那我们就先聊聊空间维度,首先一维,比如一条线就是一个一维空间,连点成线在这个空间里这些点只能前进后退,二维空间就是一个平面,这时点不仅可以前进后退还可以左右移动,3维空间也可以说是 ...

  4. C++ 头文件系列(iosfwd)

    简介 输入输出历来都是语言的重要部分,在C++中,该库也是占据了相当大的一部分. C++的输入输出库是其遵循面向对象设计的结果,并结合了泛型编程. 以下是这些库类的关系图(箭头标示继承,白框表示摸板, ...

  5. Iterator——迭代接口

    迭代对于JAVA的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator.ha ...

  6. 你需要了解的 Core Spotlight

    你需要了解的 Core Spotlight -- 了解Spotlight Core Spotlight是iOS 9中苹果推出了新的Search API,可以直接搜App内的内容(in-App Sear ...

  7. Jenkins的安装与系统配置

    Jenkins的安装 Jenkins的安装需要一个安装包:http://pan.baidu.com/s/1hqQBruc,也可以去Jenkins官网上下载,Jenkins的官网地址 http://Je ...

  8. java多线程四种实现模板

    假设一个项目拥有三块独立代码块,需要执行,什么时候用多线程? 这些代码块某些时候需要同时运行,彼此独立,那么需要用到多线程操作更快... 这里把模板放在这里,需要用的时候寻找合适的来选用. 总体分为两 ...

  9. FZU 2167 大王叫我来巡山呐

    Problem 2167 大王叫我来巡山呐 Accept: 931    Submit: 1405Time Limit: 1000 mSec    Memory Limit : 32768 KB Pr ...

  10. Java ArrayList小程序理解

    package Collection; import java.util.ArrayList; import java.util.Iterator; //import javax.xml.crypto ...