关于DevOps
02 April 2015
前言
再开一个坟,云计算和自动化,对高效率的生产力追求永不止境。就目前的接触而言,存在这样的几个扩展点:
- vagrant - 用来构建和分发开发环境的工具
- chef - 系统集成框架,为整个基础设施构建配置管理
- puppet - 应用程序和服务器自动框架
- capistrano - 服务器部署工具,现有一些轻量级的竞争对手mina
- Docker - 应用程序虚拟化容器,新进的革新工具
以上的工具,打算形成这样的工具链: vagrant/chef/capistrano/Docker。该工具链的形成,估计要花个好几年。
Docker
传统软件开发的流程:
- 确定产品定位和需求,确定首次迭代的范围。 - pm 的工作
- 制作界面原型。 - UI的工作
- 技术选型,然后根据技术选型为每个开发者搭建开发环境和技术栈,例如 Java 环境、Python 环境、Ruby 环境、数据库、中间件等等。 - CTO的工作
- 构建基础技术框架和服务,包括日志、存储、消息、缓存、搜索、数据源、集群扩展等等。
- 模拟用户容量,构建测试环境。 - 使用监控,动态的扩展基础设施。
- 开始编写真正的业务代码,实现产品功能。
- 迭代开发/测试,生生不息,周而复始,直到头发掉光为止……
备注: 参考自Docker 传奇之 dotCloud
完善的云端技术(PaaS)可以削减 3 - 5 步的工作量,云端的基础技术去中心化的含义是: 底层基础设施随时可以迁移,可以迁移到任何地方(物理的、虚拟的机器、云端)
云技术的发展历程:
- 云是新一代IT资源供给技术
- 大数据处理能力是未来应用的基本需求
资源整合(网格技术/集群技术) –> 虚拟化(服务器虚拟化/存储虚拟化/网络虚拟化) –> Iaas(自动部署/异构资源/服务模板) –> PaaS & SaaS (云平台- All-in-One)
-
运行期的包管理: 多站点、多版本部署,版本-补丁-代码的关系管理
-
应用生命周期管理
- 部署、配置、运维
- 软件管理、补丁管理
- 资源监控、资源调度
- 性能监控与统计分析
- 应用拓扑 - server的部署
-
应用分发工具
手机端应用市场 / 服务端的应用市场(企业环境,创业的方向)
- 基础OS(VM镜像) -> 基本镜像
- 应用组件(二进制包 + meta描述文件) -> 软件安装
- 自定义配置语言 + 执行引擎 -> Dockfile + Docker Engine
- 软件仓库(OpenSack Glance) -> Docker Hub
新的理念: Build - Ship - Run , 应用开发的变革。 应用开发流程 & 应用发布流程。
未来和机会
- 云技术热点从基础架构转入应用层: DevOps, 应用生命周期管理
- 基于容器的资源管理/调度和性能管理技术
- 行业应用开发、分发/交付模式
- 企业应用市场
一句话概括企业/公司/网站的使命。系统运维 - 云服务业务。 Dev与Ops紧密的结合。
Docker的业内实践越来越多了,时代潮流越来越汹涌。 某些技术成为基础后,为更加复杂的应用铺平了道路。
Docker建设私有云,解决资源利用的问题。
可以多多关注一下InfoQ上关于Docker的相关的新闻。下一份工作也可以从Docker上着手。
Docker的问题:
- 安全性的问题,不过,这很正常,现在的云环境,没有几个是绝对安全的
- 网络的问题,
- 是否适合的问题
后记
最近,东拉西扯的坏习惯又犯了,专注、专注。仔细想想,自己是不是摊子铺太大了,集中收缩。
傲娇的使用Disqus