2020-01-06 17:25:27 qwefgh123321 阅读数 12

点击观看大咖分享

随着互联网、移动互联网的浪潮,软件工程从瀑布到敏捷发生了巨大的变化,服务器架构也从 IOE 演变到微型机,又发展为云计算,运维成本越来越低,持续部署逐渐流行起来。本课程主要讲解敏捷开发和 DevOps 在实际研发中如何提高效率、降低成本,以及分享互联网公司的研发流程、岗位分工和技术点,学习业界先进工程技术,提高团队效率。

本次腾讯云大学大咖分享课程邀请 CODING DevOps 架构师 杨周 分享关于“敏捷开发与 DevOps 实战”课程的内容。

软件工程:从瀑布到敏捷

软件工程从瀑布到敏捷,是对软件工程效率和软件交付效率的提升。

瀑布模型(Waterfall Model)将软件生命周期划分为6个阶段:计划、需求分析、设计、编码、测试、维护,顺序固定,如同瀑布逐级下落。作为早期软件工程方法,瀑布在20世纪80年广泛使用,但存在致命的缺点:流程是线性的,到最后才测试和交付开发成果,一旦发现问题为时已晚,所以没能很好的解决软件危机,2003年的统计报告显示82%的项目延期,和1995年的84%几乎没有好转。

敏捷开发是循序渐进的开发方式,在尽量短的周期内持续测试和交付“可运行的软件”,再加上团队沟通和客户沟通,从而做到了“拥抱变化”。在敏捷开发中,软件项目在构建初期被切分成多个迭代,各个迭代的成果都经过测试,具备可视、可集成和可运行使用的特征。

敏捷开发宣言:

  1. 个体和互动:高于流程和工具
  2. 可运行的软件:高于详尽的文档
  3. 客户合作:高于合同谈判
  4. 响应变化:高于遵循计划

从上面的宣言可以看出,敏捷开发的核心是人 、协作、时刻可运行的软件、变化。

敏捷开发框架

敏捷是一种思想,不止应用于软件开发。

敏捷开发框架种类较多,但Scrum使用频繁度最高。

幻灯片9.JPG

下图为 Scrum 框架的流程:

幻灯片10.JPG

互联网公司的岗位分工和敏捷工作流

主要有产品负责人和开发团队,具体工作流如下图所示,而敏捷教练往往由研发工程师或产品经理兼任。

DevOps 自动化上线

实战:Git项目管理&自动上线

修改一个错别字需要多久呢?其背后流程又是如何运作的?

首先,使用缺陷管理

其次,创建缺陷

由于这个文档项目很简单,所以采用单分支开发,即 GitHub Flow。具体知识大家可以扫描下图中二维码进行阅读。

Git commit 怎么写才正规?有两个原则:

1、不要做完几件事一起提交,而是做完一件事就提交一次,用一句话简洁地描述

2、详细的描述在任务里,关联任务 ID 即可,所以做任何事之前都应该先创建任务

建议大家安装使用 git cz 工具,提供了 feat、fix、refactor 等关键词,严格按照要求做,经过一段时间就学会了。具体知识大家可以扫描图中的二维码进行阅读。

最后,合并请求

团队沟通的效率非常重要,这是敏捷开发的核心价值观。效率最高的是 面对面交谈,然后是电话、即时聊天,最差是邮件。

所以发起代码合并请求之后,用即时聊天软件通知同事,请她进行评审,她合并之后,就自动上线了。

敏捷开发之持续交付

持续交付已发展为DevOps

服务器架构:从自建到云计算

雅虎开创了 web 1.0 时代,编辑生产内容,免费提供,通过网站广告营利,这个模式至今仍然是2C消费互联网的主要商业模式。

如果大家对互联网发展史感兴趣,推荐阅读《浪潮之巅》,作者是吴军博士,曾担任 Google 资深研究员和腾讯副总裁。

云计算的第一个产品是 云存储,第二个产品才是租服务器。

自建服务器的上线流程

幻灯片26.JPG

云计算时代的上线流程

可以发现,云计算大厂招募运维开发岗,广大中小团队和非科技公司点击开通就可使用,不再需要招聘不会编程的普通运维了,所以运维的岗位数量越来越少,难就业。

而开发人员会配云服务器是必备技能,学计算机的同学请注意。

DevOps

DevOps 自动上线的原理

把一个网站部署到服务器分为几步?答:3步。

  1. 打成压缩包;
  2. SCP 上传到服务器;
  3. SSH 解压;

如果使用持续集成,则可以实现提交代码时自动上线,原理如下图:

常见的持续集成有:商业化的 CircleCI、开源的 Jenkins,本文以 Jenkins 云服务—— CODING 为例。

1、 DevOps 理念

自动化是核心理念。

2、 DevOps 权限最佳实践

代码质量的终极方案:Code Review 和单元测试

1、 现状的代码质量低。

2、 提高代码的终极方案有如下三种。

实战:像互联网公司那样做项目(代码托管、敏捷开发、DevOps)

像互联网公司那样做项目。这些属于产品经理的工作,对大学专业无要求,推荐感兴趣的同学读一读《俞军产品方法论》

创建团队

backlog 与迭代

服务器安装了 Apache,就可以通过 IP 访问了,但 IP 都是数字,不好记,所以我们需要买个域名。

切记:不要用电话号码、QQ 号这种很长的数字注册域名,那和 IP 一样难记,失去了域名的本意。

2012年,腾讯注册了五位和六位数的QQ号码.cn域名,结果并不好用,2014年就过期了。具体新闻请扫描喜爱阅读。

域名解析有一个入门技术点:www 其实是二级域名,根域名是什么都不带的,一定要都配上,才能保证用户输入哪个都能访问。

这个网站很简单,就是一个 markdown 文档,Git 提交流程和上一篇实战一样,就不再赘述。Git 提交完毕,我们来配置一下 Jenkins,建议调试阶段使用在线静态 Jenkinsfile,调试通过以后,再保存到代码库里。

  • 注册 coding.net,创建一个 Git 仓库,提交代码;
  • 创建一个私钥放在 CODING,把公钥放在服务器的 .ssh/authorized_keys,实现 SSH 信任,参考文档:《在持续集成中使用凭据》
  • 新建构建计划,选择“使用静态配置的 Jenkinsfile”,然后可以使用“图形化编辑器”,也可以使用“文本编辑器”填入下面代码,保存并构建;

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout(
          [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
          userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]]
        )
      }
    }
    stage('构建') {
      steps {
        echo '构建中...'
        // 把 markdown 转成 HTML
        sh 'apt-get update && apt-get install -y python3-pip'
        sh 'pip3 install mkdocs'
        sh 'mkdocs build'
        // 打包成压缩包
        sh 'tar -zcf tmp.tar.gz apache2/ site/'
        echo '构建完成.'
      }
    }
    stage('部署') {
      steps {
        echo '部署中...'
        script {
          def remote = [:]
          remote.name = 'web-server'
          remote.allowAnyHosts = true
          remote.host = '106.54.86.239'
          remote.user = 'ubuntu'
          // 需要先创建一对 SSH 密钥,把私钥放在 CODING 凭据管理,把公钥放在服务器的 `.ssh/authorized_keys`,实现免密码登录
          withCredentials([sshUserPrivateKey(credentialsId: "c4af855d-402a-4f38-9c83-f6226ae3441c", keyFileVariable: 'id_rsa')]) {
            remote.identityFile = id_rsa

            // SSH 上传文件到远端服务器
            sshPut remote: remote, from: 'tmp.tar.gz', into: '/tmp/'
            // 解压缩
            sshCommand remote: remote, command: "tar -zxf /tmp/tmp.tar.gz -C /tmp/"
            sshCommand remote: remote, sudo: true, command: "mkdir -p /var/www/china-speed"
            sshCommand remote: remote, sudo: true, command: "cp -R /tmp/site/* /var/www/china-speed/"
            sshCommand remote: remote, sudo: true, command: "cp -R /tmp/apache2/ /etc/"
            // 重启 apache2
            sshCommand remote: remote, sudo: true, command: "a2ensite china-speed.org.cn"
            sshCommand remote: remote, sudo: true, command: "a2enmod headers rewrite ssl"
            sshCommand remote: remote, sudo: true, command: "systemctl reload apache2"
          }
        }

        echo '部署完成'
      }
    }
  }
}

经过一番调试,Jenkins 构建成功了,这时候再把它保存在代码仓库里,把设置修改为“使用代码库中的 Jenkinsfile”,以后推送代码即可自动上线。

  • 切换到 Markdown 编辑器TS
    流量劫持属于互联网黑产,2015年,国内某智能路由器厂商劫持404页面,收集用户数据并插广告。后来此厂商的官网也被宽带运营商劫持插广告,他们部署了 HTTPS,仍然被劫持,就是因为没有部署 HSTS 以及禁止 iframe。
    当用户手动输入域名时,浏览器默认请求 HTTP,返回跳转,但被劫持篡改成 200,内容改为 iframe 展示 HTTPS 的正常内容,而 iframe 外面展示广告。更多知识请扫描图中的二维码进行阅读。

  • no-www
    2018年9月,Chrome 69 隐藏 www,引发了争议,让人以为真的不用打 www 了,结果很多落后网站无法访问,比如学校网站。然后 Chrome 又显示了 www。到了2019年8月,Chrome 76 再次隐藏 www。理念很简单:技术应该迁就用户,而不是迁就那些落后的网站。www 没有意义,去掉让用户更方便更环保。
    就像万维网之父蒂姆在2009年向公众致歉:网址中 http: 后面的两条斜线 // 其实没必要。“如果这么多年来人们不用写或敲入那两条斜线的话,该可以省下多少的纸和树啊。”
    所以我建议:大家做网站时,把 www 跳转到根域名。更多有趣的知识可以扫码阅读。

总结

完整代码:https://china-speed.coding.net/p/china-speed/d/china-speed/git


问卷

为了给广大开发者提供最实用、最热门前沿、最干货的视频教程,请让我们听到你的需要,感谢您的时间!点击填写**_ 问卷

腾讯云大学是腾讯云旗下面向云生态用户的一站式学习成长平台。腾讯云大学大咖分享每周邀请内部技术大咖,为你提供免费、专业、行业最新技术动态分享。

2019-12-25 16:40:12 CODING_devops 阅读数 16

软件工程在日新月异的科技面前上演了一部穿越剧。服务器架构从 IOE 演变到微型机,又发展为云计算,运维成本越来越低,持续部署逐渐流行起来。

CODING DevOps 架构师 杨周受腾讯云大学邀请,为大家分享课程—— 《敏捷开发与 DevOps 实战》。本课程主要讲解敏捷开发和 DevOps 在实际研发中如何提高效率、降低成本,分享互联网公司的研发流程、岗位分工和技术点,掌握互联网公司研发部门的正确打开方式,学习业界先进工程技术,提高团队效率。

课程主题

敏捷开发与 DevOps 实战

课程时间

12 月 26 日(周四)20:00

课程讲师

杨周 - CODING DevOps 架构师

曾在创新工场、百度担任后端开发。十余年一线研发和带队经验,经历了 ToB、2C、O2O、国内、出海各种项目,见证了自建服务器到云计算时代的变迁,擅长各种研发最佳实践:Code Review、DevOps、Git Flow、敏捷开发、极客办公硬件、服务器架构。

课程大纲

  • 软件工程:从瀑布到敏捷
  • 互联网公司的岗位分工和敏捷工作流
  • DevOps 自动化上线
  • 代码质量的终极方案:Code Review 和单元测试
  • 实战:像互联网公司那样做项目(代码托管、敏捷开发、DevOps)

点击链接 或扫描 海报二维码 即可预约

在这里插入图片描述

2017-08-15 10:22:58 White_Lee 阅读数 1192
[img]http://dl2.iteye.com/upload/attachment/0126/5348/f1e8e7cc-3602-3fef-9415-906a564d67ff.jpg[/img]
2019-03-01 12:07:38 weixin_44606268 阅读数 164

敏捷开发与DevOps的一些随想

这是笔者第一次在 CSDN上发文章,估计可能读者寥寥。无妨无妨。

最近一直在从事DevOps项目,并且公司层面也是敏捷开发的推动者之一,所以对于DevOps和敏捷有了一些自己的感受:

今早看了王晔倞在CSDN上发问《为什么都敏捷开发了项目还会延期?》,我有感而发。

敏捷开发的根本是满足的灵活性,而非效率的提升。或者换句话说:业务需求和人员投入始终是成正比的,换了啥方式都是一样的,不是说敏捷成了银弹。这是产品经理或业务人员需要明白的问题。所以对于产品需求的取舍、用户倾向的试探就显得尤为重要,或者换句话说,码农们是产品实现的工具,是手和脚,但真正要去哪、干些啥、怎么干还需要产品经理这个大脑来决策。

敏捷开发来满足快速交付,但只是软件生产全流程中的一段,即:由idea到安装介质包的阶段(可能只作为单元测试,或者单元测试都还没做过)。离产品上线产生价值还远了去了。所以接下来的加速,就需要DevOps以及云的助力,例如:云的编排模块能不能做到自动资源供给,DevOps能不能实现各个环境的自动化部署,能不能将自动化回归测试一并结合进来,等等。

所以总结下个人观点:

  1. 工具做好工具的事情,但工具只能帮助决策,不能替代决策;
  2. DevOps在传统企业落地,极有可能是Dev和Ops分期来实现,时机成熟时,才串起全流程;
  3. 敏捷、DevOps确实是天生一对,但要一起上,还得看时机才成,但无论是敏捷、DevOps都需要持续的度量、反馈、优化、改进,对流程、对工艺、也是对产品都是一样一样的。
2019-06-06 20:32:41 ATS123567 阅读数 172

技术演进从未停止,用户需求更是瞬息万变。随着企业业务的快速发展,产品迭代速度越来越成为企业发展致胜的关键因素。在业务迅速扩张之下,企业研发团队的规模也在不断壮大。如何有效管理研发团队?如何提升企业研发效能?如何加速产品发布?这些都是摆在企业面前的挑战。

       作为企业研发团队的负责人,如何在规定的时间内带领团队成员开发出“爆款”产品?是倾向于定制严格的流程来执行?还是给出目标,让团队成员自由发散与执行呢?

        5月27日,QCon 全球软件开发大会走进广州,华为云技术专家受邀出席,并在工程效率提升分会场发表主题演讲:《大到不能慢——敏捷+DevOps,大企业也能高效能》。分享基于华为30年研发经验总结的DevOps最佳实践,助力企业软件的研发转型。

        敏捷+DevOps是提升企业效能、推进企业数字化转型的核心方法论。华为云技术专家特别强调DevOps不能止步于提交到发布的环节,需要持续优化扩展到客户场景和客户价值探索的环节,持续地快速交付价值,才能够打通整个价值链条实现加速。他介绍了在中大型企业如何落地敏捷 + DevOps有效提升研发效能的经验和实践。

        DevOps使规模化的高效开发成为可能

        如今, DevOps已经得到了软件产业的广泛认同,包括敏捷开发的概念、Scrum(敏捷开发)、持续集成和持续交付等等。虽然敏捷结合DevOps可以解决很多问题,如人员问题、管理问题、技术问题、工具问题等,但效能提升并不能一蹴而就,涉及的人员越多、落地的周期越长,落地的方式就越要讲究。

        特别是对于已经形成管理层级的大企业来说,接纳一个独立自主的跨职能敏捷团队并不是那么容易。华为云技术专家以华为云DevCloud自身的转型为例,分享了华为使用敏捷开发的最佳实践,即不拘泥于具体的措施,而是充分领悟了敏捷的基本原则,尤其注重将敏捷团队融入整个企业组织当中。当谈及目前DevOps在国内的实践现状时,华为云技术专家表示,部分团队为了做 DevOps而做DevOps,并没有真正的从业务的角度出发来考虑。

        那到底应该怎么做DevOps呢?基于华为的最佳实践,华为云技术专家总结如下:

1. 选定一个方法论/流程/套路,再学习消化;

2. 选择团队/项目,敲定方案,开始试点;

3. 组织层面为后续扩大范围打造基座;

4. 在敏捷转型基础上,进一步横向整合从业务-研发-运营的团队和全流程;

5. 不只是作战阵型要调整,还有其他实践要跟上;

6. 不少企业已成功在小范围内进行敏捷模式试点,但要推广至整个企业,就必须在工作流程、组织架构和内部关系等多方面进行调整。

        企业提升研发效能 选对工具很重要

        虽然很多企业在践行DevOps的道路上走了很远,但是在工具选用和能力建设方面仍可能感到迷茫和纠结。选择合适的工具来适应企业自身交付的服务或产品,可以站在巨人的肩膀上,避免不必要的实际和教训,更好地提升质量,提高效率。

        据华为云技术专家介绍:华为云DevCloud是一站式云端DevOps平台,集华为30余年研发实践、前沿研发理念、先进研发工具为一体,面向开发者提供端到端研发工具链服务,让软件开发更加简单、高效、高质。而华为云DevCloud HE2E DevOps实施框架是集合精益、敏捷、DevOps等业界先进理念与华为30年研发实践,可操作易落地,助力企业软件研发转型。

        自正式上线来,华为云DevCloud潜心打磨,开放核心技术能力,助力企业实现软件研发效率提升,并始终与开发者同行,创造性地为此提供诸多软件开发工具、平台与应用。截止2018年底,华为云DevCloud已提供15个云服务,3个行业解决方案;已签署28个全国性软件园区协议,覆盖20个城市园区;30多万个软件项目运行在华为云DevCloud上,极大地提升了工作效率和软件质量。 

        “云+AI”时代,软硬件生态整合实现指数级增长

        华为预计,2025年所有的公司都会上云,97%的大企业都会使用AI,77%的云上应用都会用到AI。显而易见,AI将会是云上竞争的关键。但企业使用AI面临两大挑战:算力非常昂贵,学习成本高,应用开发难;开发环境搭建负责,需要特殊的工具和专业技能。

         一方面,华为从芯片做起,推出AI芯片昇腾910和昇腾310,在华为云上为用户提供充裕、经济的算力资源;另一方面,华为云针对开发难的挑战,发布了一站式AI开发平台ModelArts,与算子库CANN和华为自有的统一训练和推理的AI框架MindSpore共同构成了华为云全栈全场景AI解决方案。同时,作为整合华为算力资源与丰富服务的华为云DevCloud,也与政府、企业、高校、科研院所等产业链的各方携手,发挥各自的优势,将华为云的AI能力与算力和用户的开发流程无缝融合,让华为云DevCloud成为“云原生+AI”时代软件研发的新引擎。

        目前,华为云正在基于“云+AI”战略,逐步汇聚百万开发者,基于华为自研芯片等硬件产品,构筑更加广阔的生态,实现未来业务的指数级增长。

        一站式体验展区 技术大咖现场助阵  

        精彩纷呈的演讲之外,更让参会者兴奋的还有华为云展台,以“选择不凡,Cloud for Good”为主题,重点展示了一站式AI开发平台ModelArts、华为云一站式云端DevOps平台及华为云开发者生态,为众多前来参会者构建了一个分享最新技术、产品及解决方案、交流发展经验的平台。

1558954116412.jpg

        对于真正深入到行业的软件开发者而言,单单介绍理念和工具是不够的,在理论支撑下的动手实践才是最好的证明。在现场,华为云还设置了ModelArts和DevCloud动手实践专区,参会者争相上手体验,可谓是“大快朵颐”般的享受! 

1558954141218.jpg

(华为云布道师林旅强指导参会者动手实践)

        为了将高效践行到底,展台还特别设置了白板时间,华为云DevCloud与AI技术专家会在此与参会者进行更直观高效的互动交流。

华为云布道师陈亮与参会者交流

1558954205253.jpg

(华为云布道师陈亮与参会者交流)

        在调研机构弗若斯特沙利文发布的最新《中国IT基础设施行业白皮书》中,2018年,基于华为云在云基础设施领先的实践和创新,华为云以21.3%的市场份额位列中国云基础设施市场领导者的地位。华为云强大的基础设施和服务能力,为华为云开发者群体带来了广阔的施展空间。随着华为云开发者生态构建的进一步升级,持续得到华为云赋能的华为云开发者群体,必将成为中国企业级用户数字化转型升级的强大引擎。

购买华为云请点击立即购买

没有更多推荐了,返回首页