zoukankan      html  css  js  c++  java
  • DevOps

    Technorati 标签: DevOps

    文章由什么是DevOps?总结而成。

    传统开发和运维合作的困境

    对于运维部门来说,不懂开发逻辑,而且团队内部的侧重不同,有些负责数据库脚本执行,有些负责Web服务器,如果每次上线前都需要把所有的人来过来开会,熟悉操作步骤。

    当然最根本的原因在于软件本身太复杂了,开发复杂,部署也复杂。现在的系统,需要面对海量用户的报并发访问,还需要24*7的方式运行,如果只靠开发或者测试部门的人员进行兼职来维护几乎不可能。所以设立了运维部门(Operations)。

    所以运维和研发的重要性已经差不多了。
    7b7984b2-e1b3-4f05-965b-3c6c80904d89

    又来个敏捷开发

    传统的软件开发模式是瀑布式的,也就是说需要严格遵循预先计划的需求分析、编码、测试的步骤顺序进行。将软件开发分为不同的阶段,有点在于更便于协作,但是每个阶段极少有反馈。

    所以经常会出现在项目快到了尾声的时候,才发现客户原来还需要其他功能,比如这个界面多一个选项 ,为领导留一个后门等等。

    根本原因在于,从客户那里得到的需求描述和需求文档,其实离客户真正想要的还差很远。如果到了测试阶段才发现问题,想要改正的代价是非常高昂的。

    那么能不能让客户经常做验收测试呢?这样有了反馈,可以迅速的修改。想想还是很美的,但是还是有很多的问题

    • 抛弃了冗长的需求文档,但是还是得描述需求啊?
      那么我们需要一种更高效的描述方法,叫用户故事,比如

    d6fdb679-ca49-46ab-8afc-48c3dcc8bd0b

    用户故事主要彰显的是:谁做了什么事,带来什么价值。

    • 如何决定每个小开发周期需要开发什么东西?
      用户故事有大有小,大的需要拆分,
      而且还需要对需求的优先级进行排序
    • 架构设计怎么办?
      架构工作肯定还是要的,但是更需要的是演进式的架构,随着迭代而推进。
    • 详细设计怎么办?
      每个迭代开始的时候,把用户故事拆分成小的任务,这个过程就相当于详细设计了。
    • 由于是迭代开发,下一个周期怎么不破坏上一个周期的代码,测试怎么办?
      答案就是自动循环回归测试,包括单元测试和功能测试
      开发人员在写代码的同时,也要写下自动化单元测试,而测试人员需要开发自动化功能测试,一但有修改,就可以运行他们,检查是否有破坏功能。
    • 这么短的时间,如何进行测试
      开发和测试同时进行

    这就是敏捷软件开发

    但是虽然可以频繁交付,但是不能频繁上线,因为运维希望的是稳定,不希望给自己找麻烦,但是敏捷开发的思想是拥抱变化啊。

    3e065054-cc9d-4e53-b3a4-64bc7d4a9955

    DevOps

    所谓DevOps就是把敏捷开发部门和运维部门之间的围墙打通,形成闭环。

    5aae460d-a0f8-4a91-a443-99a5caa958b2

    也就是要让系统不但稳定,还需要支持业务快速演化。

    我们知道频繁部署和稳定是矛盾的,所以引入了微服务,部署不再以巨无霸的应用为单位了,而是以一个一个微服务为单位,简单很多。

    为了方便部署,需要把部署的工作完全自动化,保证脚本在所有的环境能都可用。

    8efed798-04c1-4ea9-816a-e79f04e56cb6

    也可以参见简书主页:https://www.jianshu.com/u/482f183ec380
  • 相关阅读:
    Mach-O 加载命令(Load commands)
    Mach-O文件介绍之loadcommand
    趣探 Mach-O:加载过程
    Forking and Executing the Process
    XNU加载Mach-O和dyld
    OSX内核加载mach-o流程
    App Launch Sequence on iOS
    操作系统 = 内核 + 服务
    OS X kernel architecture
    OSX架构概述
  • 原文地址:https://www.cnblogs.com/dy2903/p/8315469.html
Copyright © 2011-2022 走看看