以下内容为个人工作总结,如果不当,谢谢指出错误。

假设最简单的情况,一个开发人员,开发所有的代码,一个测试人员。一个测试的服务器,一个生产的服务器。

开发人员需要为公司开发一个项目,开发人员首先分析产品经理的需求,建立相应的模型,然后进行如下步骤:

  1. 编写代码
  2. 项目打包部署到测试服务器
  3. 测试人员测试,将Bug提交给开发人员
  4. 如果测试通过则进行第5步。如果仍然有Bug,开发人员解决Bug,并重复第2步,第3步。
  5. 项目测试通过后,打包部署到生产环境

这样就完成了一次迭代。

但是随后,任务变多,开发人员增多,共同维护一套代码,采用Git进行版本管理,不同的开发人员将代码提交到同一个仓库。先建三个分支,默认分支master,和即将发布的分支release,和初始化分支initialize。master是主分支,是最新的代码。release分支就是即将要发布到生产环境的代码。开发人员在一个迭代周期的初期,拉取最新的master代码,并在此基础上进行开发。假如项目发布后出现了一个紧急的Bug,需要立刻修复,而这时新的迭代已经开始,此时项目负责人需要将release上的代码合并到initialize分支上,那么负责修改那个紧急Bug的开发人员就需要从initialize分支上拉取最新的代码,并在此基础上进行开发,Bug解决后,将initialize分支上的代码打包部署到测试服务器上,测试无误后,将initalize分支上的代码合并到release分支上,然后将release分支上的代码发布到生产环境。

随后,庞大而臃肿的单体项目已经不能满足需求了,后面一次大的版本迭代开始对项目开始采用的分布式。一个整体的系统,进行分解,分解成最小程度依赖关系的单元,各个单元之间通过轻量级的数据交换和调用,这样做可以降低系统耦合度,且方便扩展,也可以合理分配资源。然而被拆解后,系统的容错率就会降低,假如单元A被单元B C所依赖,一旦A发生故障,可能会影响B C,不过现在也有很多框架可以解决这样的问题,提高容错率。

然后是打包方面的问题,目前都是将项目打成可以执行的文件包,或者是可以在容器中运行的文件包。然后部署在服务器并运行项目。这样手动操作未免较为繁琐,可以采用Jenkins持续集成工具。Jenkins本身也是一个服务,打个比方来说,开发到发布的各个环节就像一个个独立的机器,开发人员需要将每次生产出来的产品放到下一个机器中继续加工,这样很繁琐。而Jenkins就像连接各个设备的传送带,只需要在Jenkins一键操作,就可以完成一些工作。Jenkins配置流程大致如下:

  1. 首先将Jenkins服务运行在一台服务器上,假设这台服务器叫做Assembly
  2. 在Jenkins上配置好项目所在仓库的地址,这样Jenkins就可以调用版本管理工具拉取代码到Assembly
  3. 有在Jenkins上配置好打包工具,这样Jenkins就可以调用打包工具将源码打包成可以执行的包(或是在容器内运行的包),假设这个包叫做Component
  4. 假设有一台生产用的服务器叫做Produce,在Assembly和Produce之间建立通信,Jenkins调用传输工具将Assembly上的Component传输到Produce
  5. 现在Component已经在Produce上了,Jenkins调用通信工具将一些命令告知Produce去启动Component的,这样Component就在Produce上运行起来了

之后,Jenkins的工作流程就是:拉取代码 打包项目 部署项目 运行项目。这样开发人员只需要将代码提交到仓库,测试环境和生产环境就能保持同步更新了。需要说明的上述只是一个抽象的总结,实际情况,很有可能Assembly和Produce是同一台服务器。

关于Web应用开发流程的总结的更多相关文章

  1. flask实战-留言板-Web程序开发流程

    Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个 ...

  2. 【转】Yeoman:Web 应用开发流程与工具

    原文转自:http://blog.jobbole.com/62098/ 随着 Web 2.0 和 HTML 5 的流行,现在的 Web 应用所能提供的功能和交互能力比之前传统的 Web 应用要强大很多 ...

  3. WEB前端开发流程总结

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正 WEB前端开发项目流程总结 1.新建项目 ...

  4. web项目开发流程

    对于一个web项目,在实际编码之前,有一些通用的步骤来planning a website: 0.Defining the project (predr0->dr0) 对于外部项目,客户一般会发 ...

  5. 2022年Web前端开发流程和学习路线(详尽版)

    前言 前端侧重于人机交互和用户体验,后端侧重于业务逻辑和大规模数据处理.理论上,面向用户的产品里,所有问题(包括产品.设计.后端.甚至看不见的问题)的表现形式,都会暴露在前端,而只有部分问题(数据问题 ...

  6. 单页web应用开发流程

    用循环的视角审视Web应用开发 框定一个一致的SPA图形用户界面(GUI)和模型 将SPA的原则带回服务器端 聚集于对合适的应用进行早期SPA开发[3]  SPA协调的起点是认识到SPA与脚本和网页编 ...

  7. PC端Web项目开发流程

    从前一直再做前端,突然想到如果有一天领导让自己独立承担一个web 项目的话是否有足够的能力去接这个任务,要学会自己去搭建一些基础的工具信息.所有的这一切在心里都要有个大致的流程,不然真正做的时候难免会 ...

  8. Web平台开发流程以及规范

    1.js和css的放的位置顺序与加载速度分析 为了让客户先看到效果,必须要先加CSS 如果在先head加载CSS,如果CSS大,会先下载CSS,再渲染HTML标签 如果CSS放在head中,当显示出H ...

  9. Web项目开发流程 PC端

      一.了解.明确需求. 这个应该是第一步了,不了解需求你就不知道为什么要做,要怎么去做这个项目的工作. (1)明确需求是相当重要的,很有必要去和产品经理.设计人员去沟通,需要明白每一个按钮,每一个开 ...

随机推荐

  1. Avalon Framework

    Apache Avalon has closed. Apache Avalon began in 1999 as the Java Apache Server Framework and in lat ...

  2. Oracle 入门

    一.安装Oracle 11g 服务端 服务端安装教程:https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html 二.安装客户端 客 ...

  3. c/c++ 中的重要函数

    1,strtod: 函数原型: #include <cstdlib> double strtod(const char *nptr, char **endptr); strtod 原型 名 ...

  4. ES6之Promise对象

    创建Promise对象 function getHtml(url) { return new Promise((resolve, reject) => { let xhr = new XMLHt ...

  5. matlab基础绘图知识

    axis([xmin xmax ymin ymax])   %设置坐标轴的最小最大值 xlabel('string')                             %标记横坐标 ylabe ...

  6. polymorphism多态

    [概念] 方法名相同,具体操作根据类不同. eg 有open()方法的ebook, kindle 都会被打开 eg 动物叫声不同 inheritance:只有superclass subclass都有 ...

  7. iOS - 抖音效果

    抖音的转场动画—iOS https://www.jianshu.com/p/29b0165de712 抖音的上下滑实现—iOS https://www.jianshu.com/p/e8799510c7 ...

  8. HttpClient--使用HttpClient进行Get Post请求访问

    在java后台开发中,我们有时候需要调用其他网站的接口进行数据的获取操作,我们一般会采用 1.java net 包中的URL 类,进行网络的数据获取 2.使用apache提供的HttpClient进行 ...

  9. day 16 包,random,shutil

    包: 函数过多,可以分模块文件去管理函数,模块文件过多,将模块文件分类放在一个个的文件夹中,这个文件夹就叫做包,组织结构更加清晰,合理! 模式就是被别人使用,包既然是一些模块的集合,也是被调用. 文件 ...

  10. 利用Java创建Windows服务

    1.Java测试代码 import org.apache.log4j.Logger; public class Test { private static Logger logger = Logger ...