系统持续交付
随着计算机和信息系统的发展,已经有很少比例的系统是从零开始开发,即使是一个新成立的单位,越来越普遍的做法是在某个开源软件或者产品化软件基础上进行二次开发或者定制开发,这个时候系统的持续交付成为重要的系统过程。持续交付包含假设系统从零开发进行的系统实施以及内部的技术与管理、程序设计方法、编程工具、系统调试和人员变动的系统交接和系统测试。系统交付包含系统试运行与切换、系统培训、系统验收和系统评价。
除了上述的假设,更多的情况系统的持续交付应该考虑二次开发和产品化管理。二次开发首先应该选择导入产品和系统初始化,在此基础上进行二次开发的管理。产品化管理重要的是版本和文档管理以及在此之后的产品范围管理和产品服务剥离。
系统运行与服务基本上参照ITIL的标准,分为服务台管理、配置管理、事件管理、问题管理、发布管理和变更管理。
需要指出的是,传统上本章的内容一般被称为“系统实施与运行管理”,持续交付是目前的趋势,首先由大型移动互联网类企业实践与组织,多数企业与项目暂时也许没有能力完全实现系统持续交付,但是作为教科书和未来的趋势以及系统建设和管理的思想,持续交付已经逐渐被信息管理界所接受以及不断实践迭代。
什么是持续交付
先讲个故事
n 你給客户装修房子
n 客户给你提装修要求,这就是需求
n 你给客户出设计图,这就是设计
n 施工开始,先拆除工程、隐蔽工程、泥瓦工、木工、油漆工、安装工、竣工总验收,这就是功能开发及验收及上线运行
n 你给人家铺瓷砖,不可能把所有瓷砖一次切割,碰到边角或尺寸有误就亏了,总要切一块铺一块,这就是持续集成,
n 你不可能总验收时,才对所有工序进行检查,应该是每完成一个就测试一个,这就是持续部署
n 你給客户装修房子,全部装修完成客户验收,发现地砖颜色不对、吊顶太低、厨房太小,要重新返工吗,不如完成一部分交付一部分使用,这就是持续交付
n 你手下有20工程,你要一个一个的盯是个过程吗?这时候有施工图,有施工规范,请监理,监督规范操作,这就是自动化
n 这时候,20个工程施工过程中,每个客户都有各自问题随时要处理,需要处理纠纷,项目负责人需要全部工序清楚知道问题所在,能够立刻解决问题,该解决的解决,该协调的协调,该拒绝的拒绝,这就是DevOps持续运营
在21世纪90年代,系统每周两次发布或交付系统是很正常的事,在那时,频繁而可靠的交付系统依然是一种文化,在这场变革中尽量缩短交付周期,让发布成为日常活动
持续交付的基础是持续集成(Continuous Integration),在你的公司,仅涉及1行代码的改动,需要多少时间交付到客户哪里部署上线,年?月?日?问下你的cylce time
持续交付的四步实现
n 自动化(工具化)摆脱重复工作,提高工作乐趣,提高工作效率
n DevOps(持续运营)运维与开发之间,没有隔离,软件及运维,运维即全栈
n
n 基础设施服务(云服务或本地虚拟化服务)要不就是共有云服务,要不就是虚拟化服务,你的眼睛都是云,私有云来公有云
n 软件即服务,软件即运维,软件即运营,以软件为中心的哲学(全栈的技术思维)
持续交付的关键要素
n 统一代码库
n 自动构建
n 自动测试
n 每人每天要向版本库提交代码
n 每次提交,都会在持续交付的服务器中触发一次构建
n 每个人都可以快速的获取最新的可执行应用程序
n 每个人都知道构建发生了什么
n 自动化部署
以鲁班楼为例,持续集成的最佳实践
n 持续集成的任何环节都是自动化的,无需过多人工干预
n 持续集成要保证每个时间点,团队成员提交的代码能够成功集成,任何时间点都能第一时间发现软件集成问题
n 持续集成,在需求不明确,或需求变更频繁的时候尤其重要
项目交接的步骤及产出
n 步骤一:对比合同、投标书检查缺漏项
n 根据缺漏项、未完成等内容生成清单,给出解决方案和计划,形成备忘录。
n
n 步骤二:验证功能需求矩阵、设备点位配置、网络拓扑图、各服务器数据库第三方部署信息、账号密码、TV/VPN等信息
n 可制作相应的检查表,对完整性、可读性、逻辑性、真实性逐项检查。
n
n 步骤三:技术培训和业务培训
n 可产出《部署手册》、《业务流程图》。
n
n 步骤四:上线运维计划
n 检查数据、配置、项目后,产出上线计划,提供技术支持。
开发工具使用
n 代码管理:GitHub、GitLab、BitBucket、SubVersion
n 构建工具:Ant、Gradle、maven
n 自动部署:Capistrano、CodeDeploy
n 持续集成:Bamboo、Hudson、Jenkins、GitLab
n 配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRockGuardRail
n 容器: Docker、LXC、第三方厂商如AWS
n 编排:Kubernetes、Rancher、Core、Apache Mesos、DC/OS
n 服务注册与发现:Zookeeper、etcd、Consul、Eureka
n 脚本语言:python、ruby、shell
n 日志管理:ELK、Logentries
n 系统监控:Datadog、Graphite、Icinga、Nagios
n 性能监控:AppDynamics、New Relic、Splunk、Pinpoint
n 压力测试:JMeter、Blaze Meter、loader.io、Loaderrunner
n 预警:PagerDuty、pingdom、厂商自带如AWS SNS
n HTTP加速器:Varnish
n 消息总线:ActiveMQ、SQS、Kafka
n 应用服务器:Tomcat、JBoss
n Web服务器:Apache、Nginx、IIS
n 数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库
n 项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、PivotalTracker、gvsunxmgl、redmine
用户评论