走进后端开发流程 | 青训营笔记

news2024/11/16 16:24:32

目录

一、走进后端开发流程

1、传统流程

2、敏捷开发

3、SAFe简介

4、字节团队的开发流程

二、开发流程详解

1、需求阶段

2、开发阶段

云原生开发

团队的分支策略

自测

3、测试阶段

4、发布阶段

简单发布

金丝雀发布

滚动发布(推荐)

蓝绿发布(推荐)

5、运维阶段

3、流程优化

DevOps解决方案


一、走进后端开发流程

1、传统流程

需求、开发、测试、发布、运维,一个阶段完全好了,再到下一个。

2、敏捷开发

更注重的是个体的互动、工作的软件、客户合作、响应变化

更现代的流程模型

  • 以小团队快速迭代
  • 团队成员之间合作更密切
  • 以人为本,和用户沟通

不停的快速迭代,每个迭代都包含之前的需求开发测试发布运维的过程。

3、SAFe简介

SAFe是一套管理框架,帮助团队间的合作开发

可见,现代的开发已经不像之前那样了,我们现在开发主打就是敏捷快速。

4、字节团队的开发流程

可见事件中的开发并不是写完测试上线就行,还是有很长的录要走的

二、开发流程详解

1、需求阶段

MVP(minimun viable product,最小化可行产品)思想

去掉一些不需要的需求,留下必要的

站在用户角度思考,收集用户反馈,快速迭代

把重要和紧急的事情先做,重要放在前面,紧急放在重要后面。

2、开发阶段

云原生开发

云原生的发展,深刻改变了后端开发的工作,从原本的单机到云上部署

微服务架构,我们把每个模块都差分开,分成一个个服务,每个人开发的都是独立的一个个服务,这样就减小很多人开发一个项目的弊端。但是不同的服务之前会有rpc通信,网络的开销会越来越大。

FaaS、Paas等技术让开发从本地ide向线上转变,我们入职到搭建环境要很久,我们可以通过云原生的web ide等技术,环境未来将会开箱即用,打开就可以用直接编码,里面已经配好的各种需要的依赖

团队的分支策略

多个团队成员之前各自用什么分支开发

修改之间有冲突怎么解决

出了问题代码如何退回之前版本

这些git的使用,什么时候合并和回退必须得搞清楚

自测

单元测试

功能环境测试

测试数据构造

3、测试阶段

为自己的代码负责,自己要提前保证代码的质量。从底层的单元测试到继承测试到系统测试都要做好,最后系统测试和ui测试出问题的维护成本远远大于一开始的小方法,所有没写完都要测试一下,尽可能早发现bug。

功能环境:测试功能,而且不影响其他功能开发和测试

继承环境:不同开发功能合并一起测试,相互之间不能影响,确保发布所有功能不产生缺陷

回归环境:确保新功能不会对老功能影响,一般借助自动化测试脚本

4、发布阶段

发布之前要查询检查一遍,观察每个服务的发布状态,及时处理异常

发布过程中监视和告警需要特别关注,如果有异常立刻判断是否由变更引起,如果是变引起或用户反馈,及时终止发布。

简单发布

直接用新版本覆盖老版本

优点:简单、成本低

缺点:发布过程中服务会中断,出了问题会影响全部用户

适用:测试环境部署,小公司或非核心业务

金丝雀发布

由于金丝雀对瓦斯非常铭感,因此以前开矿下矿洞,先放一只金丝雀进去探是否有毒气体,看到金丝雀能否活下来,金丝雀发布由此得名。先发一台服务看看是否有问题

优点:相对简单,能用少量用户验证新版本功能

缺点:发布过程中服务也会中断,发现不了随用户增大才会暴露的问题

适用:测试环境部署,小公司或非核心业务

滚动发布(推荐)

每个实例都通过金丝雀的方式逐步放大流量,对用户影响小,体验平滑

优点:发布过程中用户不会中断,可以充分验证服务功能

缺点:流程复杂,对发布系统比较高的要求,发布速度慢,新老版本不兼容的情况不能用

适用:发布系统能力较强,可以平滑切换流量,发布自动化程度高,可以自动滚动

蓝绿发布(推荐)

把服务分为蓝绿两组,先把蓝组流量摘除然后升级,只用绿组提供服务,之后切换全部流量,只用蓝组提供服务,然后升级绿组服务,最终全部升级

优点:发布速度快,流程相对简单

缺点:需要对一般机器承担所有流量的能力,出问题影响全部用户

使用:服务器资源丰富,新老版本不能兼容的情况,需要一次性升级到新版

半夜流量一般比较低,适合做发布,所有这就是大部分后端开发都工作时间比较晚的原因

5、运维阶段

服务可能因为各种原因出故障。

一般公司会有检测的平台,方便我们第一时间发现问题解决问题。

3、流程优化

之前的流程有很多繁琐的步骤和流程。当我们的流程越繁琐,我们的质量可能会越高,但是这样效率比较低。我们不可能同时兼顾质量和效率。

我们要把质量和效率都要提高。

DevOps解决方案

把开发和运维形成一个闭环。从需求、开发、测试、发布、运维,这几个步骤不断的循环运转,有了这个我们就能不断的持续继承和交付。

流程中实际产生价值的部分很短,大部分时间都在等待和传递,开发在等别的开发,开发在等运维等待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/175033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录每日LeetCode 160.相交链表 Java实现

题目描述: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&…

进程和线程

1.关于进程进程基本概念进程(process)也叫任务(task)。进程是操作系统对一个正在运行的程序的一种抽象。也就是说,可以把进程看作程序的一次运行过程。 (一个正在运行的程序——>进程。没有跑起来就不算…

CSS语法与CSS选择器

目录 CSS 语法 实例 例子解释 CSS 选择器 CSS 元素选择器 实例 CSS id 选择器 实例 CSS 类选择器 实例 实例 实例 CSS 通用选择器 实例 CSS 分组选择器 实例 所有简单的 CSS 选择器 延伸阅读 CSS 语法 CSS 规则集(rule-set)由选择器和…

java spring IOC外部Bean注入

外部Bean注入也是一种Bean操作的属性注入 但这次我们要注入的是一个类对象 我们先创建spring项目 引入基本依赖 然后在src下创建两个包 gettingStarted 和 generate 这个名字可以随便取 但和我同名 可以让你们不会出现 名称不一样导致资源找不到的问题 然后在 gettingStarte…

【寒假每日一题】AcWing 4729. 解密(补)

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴韦达定理及其逆定理一、题目 1、原题链接 4729. 解密 2、题目描述 给定一个正整数 k,有 k次询问,每次给定三个正整数 ni,ei,di,求两个正…

腾讯云GPU服务器环境部署与连接配置

先前博主购买了腾讯云的GPU服务器后,发现上面预装的环境存在一些问题,因此便来重新部署一下。 为了操作方便,博主这里使用了一个远程控制端软件:Xshell 博主在初始化时已经安装过pytorch了,我们首先看看安装的路径 测…

python winio的驱动级按键模拟

一,环境准备 电脑进入BIOS中关闭安全启动项菜单 电脑需要配备PS2接口的鼠标和键盘 二,安装rabird.winio环境 1、终端下执行pip install rabird.winio 然后重启电脑进入高级启动(禁止驱动程序强制签名),这个方法网上…

探索SpringMVC-DispatcherServlet

前言 在《探索SpringMVC-web上下文》中,我们介绍了DispatcherServlet的上下文的初始化。然后为了让大家对DispatcherServlet的各个组件有所了解,我们花了很多的时间来介绍各大组件。现在我们来看看DispatcherServlet是如何使用这些组件完成功能的。 Di…

【前端杂货铺】一个普通人在CSDN创作的一周年

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

Python---列表和元组

专栏:python 个人主页:HaiFan. 专栏简介:本专栏主要更新一些python的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。 列表和元组前言列表的的概念列表的创建访问下标…

【微服务】Eureka注册中心

本系列介绍的是Spring Cloud中涉及的知识点,如有错误欢迎指出~ 一.引子 假如我们的服务提供者user-service部署了多个实例,如图: 大家思考几个问题: 问题一:order-service在发起远程调用的时候,该如何得知…

Linux——一文彻底了解进程id和线程id的关系(什么是pid、tgid、lwp、pthread_t)

目录 一.内核层面:pid & tgid 二.函数调用层面:getpid & gettid & pthread_self 三.用户层面:PID & LWP(TID) 四.总结 一.内核层面:pid & tgid 首先,我们要清楚&#…

【运筹优化】凸多面体重叠判断算法:GJK 算法详解 C++代码实现二维情形的凸多边形重叠判断

文章目录一、GJK 算法简介二、前置知识2.1 二维向量的点乘和叉乘2.2 三维向量叉乘2.3 凸多边形2.4 闵可夫斯基差2.5 单纯形2.6 Support 函数三、GJK 算法讲解3.1 熟悉 GJK 算法流程3.1.1 多边形重叠的情形3.1.2 多边形不重叠的情形3.2 总结 GJK 算法步骤3.3 讲解 GJK 算法细节3…

HTML5(下)

目录 表格标签 表格的主要作用 表头单元格标签 表格结构标签 合并单元格 列表标签 无序列表 有序列表 自定义列表 表单 表单域 表单控件(表单元素) 表单元素 label标签 select下拉列表 textarea文本域元素 案例-注册页面 表格标签 表格的主…

面试官: 你们生产环境的JVM怎么设置的?

前言 这篇文章,给大家聊一个生产环境的实践经验:线上系统部署的时候,JVM堆内存大小是越大越好吗? 先说明白一个前提,本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况,不是普通的Java应…

【附代码】十大经典排序算法

常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:名词解释:n:数据规模。k:“桶”的个数。In-place:占用常数内存,不占用…

TryHackMe-Docker_Rodeo

The Docker Rodeo 在此引导式展示中了解各种 Docker 漏洞。 以下内容均来自TryHackMe 前提设置 /etc/docker/daemon.json {"insecure-registries" : ["docker-rodeo.thm:5000","docker-rodeo.thm:7000"] }Docker注册表 在我们开始利用 Docke…

【Java开发】Spring Cloud 05 :远程服务调用Openfeign 替代 WebClient

在前边章节中,我们借助 Nacos 的服务发现能力,使用 WebClient 实现了服务间调用。从功能层面上来讲,我们已经完美地实现了微服务架构下的远程服务调用,但是从易用性的角度来看,这种实现方式似乎对开发人员并不怎么友好…

软件测试复习10:测试文档

专栏:《软件测试》 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 测试大纲:招标用,总体策略,对软件的了解,测试人员,资质等。 测试计划&#…

将Bean创建到Spring容器,从Spring容器拿出Bean

目录一、XML文件中,将Bean创建到Spring容器1. 基本类型注册2. 类装配3. 有参构造方法装配4. 扩展注入5. Bean的作用域6. Bean的其他配置二、配置类中,将Bean创建到Spring容器1. 在mapper、service、controller中创建,等着被componentScan扫描…