DevOps进化之路

ww47

贡献于2015-03-06

字数:0 关键词:

DevOps进化之路 从运维到开发 一路走来的经验分享 范余乐 2014-10-18 About Me • 范余乐 • 畅游福州分公司 运维开发工程师 • 主要负责内部运维平台web化建设 • Shell/Python/Javascript • 联系方式 • QQ:67698243 • 邮箱:67698243@qq.com 提纲  DevOps简介  DevOps实践  总结 什么是DevOps  Development & Operations  传统模式 : 运维——开发  运维需要做的改变: 人工、经验 -> 脚本、工具 -> 平台、产品  DevOps =  将运维的事情系统化,平台化  方便开发人员; 解放运维人员  有助于企业实现 “业务敏捷性”和“IT融合” 怎么做到DevOps 获取需求 梳理并统一标准化的流程 基础设施标准化 日常遇到的某一类需求 用户是谁 自动化工具支持 代码管理 配置管理 批量部署工具 …… Web化形成平台 运维人员思路转变 学习一点html基础 学习一个web框架 DevOps实践——从脚本开始  一个代码发布脚本  代码从哪里来?  代码怎么发布?  发布完要干啥?  类似的开源项目: Jenkins、 BuildBot 代码发布系统 —— 需求分析 • Web / GUI • 支持用户认证 易用的用户界面 • 支持自定义版本号 • 自动差异备份 • 支持.war/.zip • 指定更新或排除更新目录/文件 支持代码的发布/回滚 • 代码发布进度日志 • 应用的实时日志 支持实时日志查看 代码发布系统 —— 业务逻辑梳理 用户登录 • 统一用户认证 申请app 管理员审核、配置 app 用户配置app 用户发布指定app 的代码 • 底层脚本调用 日志查看 • 动态刷新日志 数据库 表单 表格 关于Web框架选择 Django • 包括了几乎所有web开发用到的模块。session管理、CSRF防伪造请求、Form表单处理、ORM数据库对象 化、自己的template language • 强大的URL路由配置 • 自带admin管理界面 • 性能:★ Tornado • 拥有异步非阻塞IO的处理方式 • 有较为出色的抗负载能力、并发处理能力 • 性能:★★★ Flask • 轻量级, 可以通过 Flask-extension 灵活扩展所需模块 • 性能:★★★☆ Django框架架构图 数据在哪里 业务逻辑 数据怎么处理 数据怎么展示 url如何匹配 处理逻辑 把数据库指令 映射成 python代码 解析模板中的 一些语法 MTV架构 Django实例 from django.db import models class Book(models.Model): name = models.CharField(max_length=50) pub_date = models.DateField() from django.shortcuts import render_to_response from myapp.models import Book def latest_books(request): book_list = Book.objects.order_by('-pub_date')[:3] return render_to_response('latest_books.html', {'book_list': book_list}) latest_books.html ---------------------------------------------- Books

Books

{% for book in book_list %} {% endfor %}
书名{{ book.name }} 日期{{ book.pub_date }}
用户访问: http://x.domain.com/latest/ url路由 urls.py 视图函数 views.py 模板 xxx.html 数据模型 models.py url(r'^latest/$', 'myapp.views.latest_books'), 用户 Django实例2 —— 加入表单 表单定义 forms.py 数据模型 models.py 模板 xxx.html 视图函数 views.py from django.http import HttpResponseRedirect from myapp.forms import BookForm from myapp.models import Book def addBook(request): form = BookForm(request.POST or None) if form.is_valid(): b = Book.objects.create( name = form.cleaned_data['name'], pub_date = form.cleaned_data['pub_date'] ) return HttpResponseRedirect('/latest/') return render_to_response('add_book.html', {'form': form}) from django.forms import ModelForm from myapp.models import Book class BookForm(ModelForm): class Meta: model = Book add_Books

add_Books

{{ form }}
用户 用户访问: http://x.domain.com/add/ url(r'^add/$', 'myapp.views.addBook'),url路由 urls.py 关于批量操作 中控方式 or C/S方式 Python-Fabric 无需客户端 学习成本低 并发执行时, 输出日志不易读 Python-Saltstack 带配置管理功能 分组功能强大 Web API 关于实时日志的展示 部署脚本日志 写入数据库 人工刷新页面查看日志 javascript脚本定期请 求获取日志数据并展示 Websocket技术 客户端浏览器 websocket客户端 Web server websocket服务端 Redis 存储 Message queue 部署脚本日志入库 轮询 发布 订阅 代码发布系统 —— 架构图 代码发布系统 —— demo版 提升用户体验 • 与Django的模板结合,获得高大上的界面 Bootstrap模板的引入 • 选择器 • 事件触发 • Ajax请求 学习一点jQuery的知识 • 让你的表格高大上 —— dataTables • 让你的选择框高大上 —— Bootstrap-select • 让你的警告框高大上 —— Messenger • 让你的报表高大上 —— echarts •...... 寻找各种插件丰富细节 产品化所需的改进 解耦 • 页面和部署脚本解耦 • 项目和app解耦 提供API • 单纯获取数据的操作,都通过API完成 • 统一数据返回格式,比如json • RESTful 风格 —— Django REST framework • 看下别人的API怎么设计 继续提升用户体验 • 产品体验超出用户期望才能形成口碑,才 能传播 • 方便, 傻瓜化操作 • 高可用方案 • 提供使用文档 关于架构的改进 环境部署? 目标IP自动获取? 代码目录统一? 用户自行审核权限? 自动回滚? 总结 & 经验分享  官方手册 + Google + stackoverflow 至少解决80%的坑  架构清晰,科学建模,磨刀不误砍柴工  山寨 + 拿来主义 + 不要一步到位 == “敏捷”开发  选择适合自己的,就是最好的  多站在相关用户的角度考虑问题 Thanks 预计在12月份我们还有一场技术分享,内容涵盖系统运维、数据库、运维开发、大数据等等领域 如果你对我们有什么意见或者建议可以在这里留言,我们会第一时间回复您 http://17173ops.com/about-17173ops 感谢 华章计算机、IT168 提供的赞助

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档

相关文档