【中项】系统集成项目管理工程师-第5章 软件工程-5.5部署交付

news2024/11/23 22:09:05

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 

       软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”,目前涵盖了计算机软件、计算机网络、计算机应用技术、信息系统、信息服务5大领域,总共27个科目,也是分为初、中、高三个级别。

       通信专业主要需要关注“计算机网络”这个专业类别,可以考的科目有初级资格的“网络管理员”、中级的“网络工程师”。

       还有5个高级资格专业,分别是“信息系统项目管理师“”系统分析师“”系统架构设计师“”网络规划设计师“”系统规划与管理师“。

       软考高级证书在通信行业比较吃香,主要原因有两个: 通信行业与计算机软件是相近专业,评职称满足相近专业的要求; 通信高级不能以考代评,但软考高级可以,很多考生通过考软考高级来评高级职称。
————————————————

                       

目录

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 

5.5部署交付

5.5.1软件部署

5.5.2软件交付

5.5.3持续交付

5.5.4持续部署

 1.持续部署方案

2.部署原则

3.部署层次

4.不可变服务器

 5.蓝绿部署和金丝雀部署

5.5.5部署和交付的新趋势


5.5部署交付

       软件开发完成后,必须部署在最终用户的正式运行环境,交付给最终用户使用,才能为用户创 造价值。传统的软件工程不包括软件部署与交付,但不断增长的软件复杂度和部署所面临的风险, 迫使人们开始关注软件部署。软件部署是一个复杂的过程,包括从开发商发放产品,到应用者在他 们的计算机上实际安装并维护应用的所有活动。这些活动包括开发商的软件打包,组织及用户对软 件的安装、配置、测试、集成和更新等。同时,需求和市场的不断变化导致软件的部署和交付不再 是一劳永逸的,而是一个持续不断的过程,伴随在整个软件的开发过程中。

5.5.1软件部署

       软件部署是软件生命周期中的一个重要环节,属于软件开发的后期活动,即通过配置、安装和 激活等活动来保障软件产品的后续运行。部署技术影响着整个软件过程的运行效率和投入成本,软 件系统部署的管理代价占到整个软件管理开销的大部分。其中软件配置过程极大地影响着软件部署 结果的正确性,应用系统的配置是整个部署过程中的主要错误来源。据Standish Group的统计,软  件的缺陷所造成的损失,相当大的部分是由于部署的失败所引起的,可见软件部署工作的重要意义。

1)软件部署存在着风险,这是由以下原因造成的:应用软件越来越复杂,包括许多构件、版 本和变种;应用发展很快,相继两个版本的间隔很短(可能只有几个月);环境的不确定性;构件 来源的多样性等。

2)软件部署过程的主要特征有:过程覆盖度、过程可变更性、过程间协调和模型抽象。已经 提出一些抽象的软件部署模型,用于有效地指导部署过程,包括应用模型、组织模型、站点模型、 产品模型、策略模型和部署模型。

3)软件部署过程中需要关注的问题有:安装和系统运行的变更管理,构件之间的相依协调, 内容发放,管理异构平台,部署过程的可变更性,与互联网的集成和安全性。

4)软件部署的目的是支持软件运行,满足用户需求,使得软件系统能够被直接使用并保障软 件系统的正常运行和功能实现,简化部署的操作过程,提高执行效率,同时还必须满足软件用户在 功能和非功能属性方面的个性化需求。

5)软件部署模式分为面向单机软件的部署模式、集中式服务器应用部署和基于微服务的分布 式部署。面向单机软件的部署模式主要适用于运行在操作系统之上的单机类型的软件,如软件的安 装、配置和卸载;集中式服务器应用部署主要适用于用户访问量小(500人以下)、硬件环境要求  不高的情况,诸如中小组织、高校在线学习、实训平台等;基于微服务的分布式部署主要适用于用 户访问量大、并发性要求高的云原生应用,通常需要借助容器和DevOps技术进行持续部署与集成。

5.5.2软件交付

       传统的软件交付过程是指在编程序改代码之后,直到将软件发布给用户使用之前的一系列活动,如提交、集成、构建、部署、测试等。传统软件交付流程通常包括4个步骤:首先,业务人员  会诞生一个软件的想法;然后,开发人员将这个想法变为一个产品或者功能;经过测试人员的测试 之后提交给用户使用并产生收益;最后,运维人员参与产品或功能的后期运维。传统软件交付流程 可能存在的问题包括以下3个方面。

1)业务人员产生的需求文档沟通效率较低,有时会产生需求文档描述不明确、需求文档变更 频繁等问题。

2)随着开发进度的推进,测试人员的工作量会逐步增加,测试工作的比重会越来越大,而且 由于测试方法和测试工具有限, 自动化测试程度低,无法很好地把控软件质量。

3)真实项目中运维的排期经常会被挤占,又因为手工运维烦琐复杂,时间和技术上的双重压 迫会导致运维质量难以保证。

       因为存在以上问题,所以传统的软件交付经常会出现开发团队花费大量成本开发出的功能或产品并不能满足客户需求的局面。 由此可以总结出传统的软件交付存在2个层面的困境。

1)从表现层来看,传统软件交付存在进度不可控、流程不可控、环境不稳定、协作不顺畅等 困境;

2)表现层的问题其实都是由底层问题引起的,从根源上来说,存在分支冗余导致合并困难, 缺陷过多导致阻塞测试,开发环境、测试环境、部署环境不统一导致的未知错误,代码提交版本混 乱无法回溯,等待上线周期过长,项目部署操作复杂经常失败,上线之后出现问题需要紧急回滚, 架构设计不合理导致发生错误之后无法准确定位等困境。

5.5.3持续交付

       经过对传统软件交付间题的分析和总结,持续交付应运而生,持续交付是一系列开发实践方 法,用来确保代码能够快速、安全地部署到生产环境中。持续交付是一个完全自动化的过程,当业 务开发完成的时候,可以做到一键部署。持续交付提供了一套更为完善的解决传统软件开发流程的 方案,主要体现在:

在需求阶段,抛弃了传统的需求文档的方式,使用便于开发人员理解的用户故事;

在开发测试阶段,做到持续集成,让测试人员尽早进入项目开始测试;

在运维阶段,打通开发和运维之间的通路,保持开发环境和运维环境的统一。持续交付具备 的优势主要包括:

持续交付能够有效缩短提交代码到正式部署上线的时间,降低部署风险;

持续交付能够自动地、快速地提供反馈,及时发现和修复缺陷;

持续交付让软件在整个生命周期内都处于可部署的状态;

持续交付能够简化部署步骤,使软件版本更加清晰;

持续交付能够让交付过程成为一种可靠的、可预期的、可视化的过程。

      在评价互联网公司的软件交付能力的时候,通常会使用两个指标:一是仅涉及一行代码的改动 需要花费多少时间才能部署上线,这是核心指标;二是开发团队是否在以一种可重复、可靠的方式 执行软件交付。

      ​​​​​​​目前,国内外的主流互联网组织部署周期都以分钟为单位,互联网巨头组织单日的部署频率都 8000次以上,部分组织达20000次以上。高频率的部署代表着能够更快更好地响应客户的需求。

5.5.4持续部署

      ​​​​​​​对于持续交付整体来说,持续部署非常重要。

 1.持续部署方案

      ​​​​​​​容器技术是目前部署中最流行的技术,常用的持续部署方案有Kubernetes+DockerMatrix系统两种。容器技术一经推出就被广泛地接受和应用,对比传统的虚拟机技术,其优点主要有:

容器技术上手简单,轻量级架构,体积很小;

容器技术的集合性更好,能更容易对环境和软件进行打包复制和发布。

容器技术的引入为软件的部署带来了前所未有的改进,不但解决了复制和部署麻烦的问题,还 更精准地将环境中的各种依赖进行完整的打包( 22

2.部署原则

      ​​​​​​​在持续部署管理的时候,需要遵循一定的原则,主要包括:

部署包全部来自统一的存储库;

所有的环境使用相同的部署方式;

所有的环境使用相同的部署脚本;

部署流程编排阶梯式晋级,即在部署过程中需要设置多个检查点,一旦发生问题可以有序地 进行回滚操作;

整体部署由运维人员执行;

仅通过流水线改变生产环境,防止配置漂移;

不可变服务器;

部署方式采用蓝绿部署或金丝雀部署。

3.部署层次

      ​​​​​​​部署层次的设置对于部署管理来说也是非常重要的。首先要明确部署的目的并不是部署一个可 工作的软件,而是部署一套可正常运行的环境。完整的镜像部署包括3个环节:Build-Ship-Run

Build:跟传统的编译类似,将软件编译形成RPM包或Jar

Ship:将所需的第三方依赖和第三方插件安装到环境中; Run:就是在不同的地方启动整套环境

制作完成部署包之后,每次需要变更软件或者第三方依赖、插件升级的时候,不需要重新打 包,直接更新部署包即可。

4.不可变服务器

      ​​​​​​​在部署原则中提到的不可变服务器原则对于部署管理来说非常重要。不可变服务器是技术逐步 演化的结果。在早期阶段,软件的部署是在物理机上进行的,每一台服务器的网络、存储、软件环 境都是不同的,物理机的不稳定让环境重构变得异常困难。后来逐渐发展为虚拟机部署,在虚拟机 上借助流程化的部署能较好地构建软件环境,但是第三方依赖库的重构不稳定为整体部署带来了困 难。现阶段使用容器部署不但继承和优化了虚拟机部署的优点,而且很好地解决了第三方依赖库的重构问题,容器部署就像一个集装箱,直接把所有需要的内容全部打包进行复制和部署

 5.蓝绿部署和金丝雀部署

     ​​​​​​​​​​​​​​在部署原则中提到的两大部署方式分别为蓝绿部署和金丝雀部署。蓝绿部署是指在部署的时候 准备新旧两个部署版本,通过域名解析切换的方式将用户使用环境切换到新版本中,当出现问题的 时候,可以快速地将用户环境切回旧版本,并对新版本进行修复和调整。金丝雀部署是指当有新版 本发布的时候,先让少量的用户使用新版本,并且观察新版本是否存在问题,如果出现问题,就及 时处理并重新发布,如果一切正常,就稳步地将新版本适配给所有的用户。( 高23下)

5.5.5部署和交付的新趋势

     ​​​​​​​​​​​​​​持续集成、持续交付和持续部署的出现及流行反映了新的软件开发模式发展趋势,表现为以下 3个方面。

1)工作职责和人员分工的转变。软件开发人员运用自动化开发工具进行持续集成,进一步将 交付和部署扩展,而原来的手工运维工作也逐渐被分派到开发人员的手里。运维人员的工作也从重 复枯燥的手工作业转化为开发自动化的部署脚本,并逐步并入开发人员的行列之中。

2)大数据和云计算基础设施的普及与进步给部署带来新的飞跃。云计算的出现使得计算机本 身也可以自动化地创建和回收,这种环境管理的范畴将进一步扩充。部署和运维工作也会脱离具体 的机器和机房,可以在远端进行,部署能力和灵活性出现质的飞跃。

3)研发运维的融合。减轻运维的压力,把运维和研发融合在一起

1 #include "stdio.h"
2 void main()
3 {
4     int time;
5     for (time=1;time<=10;time++)
6     printf("%d、喜欢的帮忙点赞收藏加关注哦!\n",time);
7 }

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

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

相关文章

界面控件Telerik UI for WPF 2024 Q2亮点 - 全新的AIPrompt组件

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序&#xff0c;同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等&#xff0c;创建的应用程序可靠且结构良好&#xff0c;非常容易维护&#xff0c;其直观的API将无缝地集成Visual Studio…

PostgreSQL成为最受欢迎的数据库; TiDB马拉松大赛开启, Serverless和Vector为比赛焦点

重要更新 1. TiDB Hackathon大赛报名开启&#xff0c;总奖金达21万&#xff0c;主题是基于 TiDB Serverless 内置的向量搜索功能&#xff08;Vector Search&#xff09;构建 AI 创新应用&#xff0c;感兴趣的可以报名参加。( [1] ) 2. Stack Overflow 2024 开发者调研结果公布…

Java面试还看传统八股文?快来看看这个场景题合集吧【附PDF】

以下就是这份面试场景文档↓ 这里有什么&#xff1f; ↓↓ 1.针对 2024 年面试行情的变化设计的面试场景题以及回答思路 2. 如何快速通过面试的详细攻略 3. 简历优化技巧 1.知己知彼才能百战百胜&#xff0c;如何做好面试前的准备工作 场景题答案以及更多场景题八股文一线大…

注意力机制(三)- 空间注意力机制

空间注意力的核心思想是让模型能够聚焦于输入数据中最重要的空间区域 关注区域&#xff1a; 空间注意力机制使模型能够识别并关注输入图像或文本中的关键区域。 权重分配&#xff1a; 通过学习一个权重分布&#xff0c;模型可以为输入数据的每个空间位置分配不同的重要性。这些…

刷题了:150. 逆波兰表达式求值 |239. 滑动窗口最大值 |347.前 K 个高频元素

150. 逆波兰表达式求值 题目链接:https://leetcode.cn/problems/evaluate-reverse-polish-notation/description/ 文章讲解:https://programmercarl.com/0150.%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.html 视频讲解:https://www.bilibili.…

食品管理系统

目录 第1章 系统概述 第2章 可行性研究 2.1 项目背景及意义 2.2 可行性研究 第3章 需求分析 3.1 功能性需求 第4章 总体设计 4.1 系统的功能模块图。 4.2各功能模块简介 4.3主要业务流程 第5章 详细设计 5.1 食品管理系统页面 5.2个人中心页面 5.3 系统管理页面 …

Linux编程:使用python或者shell获取系统信息

0. 概要 在日常的系统管理和性能监控中&#xff0c;获取系统信息是一个非常常见的需求。 本文将介绍如何使用Python和Shell脚本来获取这些系统信息。 1. 使用Python获取系统信息 使用psutil库来获取系统的CPU、内存、磁盘和网络信息。 1.1 安装psutil库 首先&#xff0c;我…

论文阅读——Wirelessly-Powered Wireless Sensor Platform

文章目录 摘要一、整流天线二、仿真结果三、系统测试总结 论文来源&#xff1a;https://ieeexplore.ieee.org/document/4403991 摘要 文章介绍了一种低功耗&#xff08;约10μW&#xff09;的2.45 GHz无线传感器平台&#xff0c;该平台包括一个三轴加速度计、温度计和皮肤电导…

开源大模型的格式转成GGUF,并量化后使用ollama推理

https://github.com/ggerganov/llama.cpphttps://github.com/ggerganov/llama.cpp使用到的工具: llama.cpp ollama 步骤 1、下载llama.cpp,并使用make编译 2、新建conda环境,安装llama.cpp里所需的库(requirements.txt) 3、下载需要量化的模型

15.C语言形式参数和实际参数的介绍及函数总结

形参和实参的介绍及函数总结 1.形式参数和实际参数2.获取两个最大的数3.关于函数的一些总结 1.形式参数和实际参数 实际参数可以是常量、变量、表达式 y get(1);//常量 y get(x);//变量 y get(x1);//表达式形参和实参数值相同&#xff0c;地址不同(传递参数是数值的传递)。 …

全能数据分析工具:Tableau Desktop 2019 for Mac 中文激活版

Tableau Desktop 2019 一款专业的全能数据分析工具&#xff0c;可以让用户将海量数据导入并记性汇总&#xff0c;并且支持多种数据类型&#xff0c;比如像是编程常用的键值对、哈希MAP、JSON类型数据等&#xff0c;因此用户可以将很多常用数据库文件直接导入Tableau Desktop&am…

python_基础编程_字典、集合

字典类型&#xff1a; 一、什么是字典 字典&#xff1a;是py内置的数据结构之一&#xff0c;与列表一样是一个可变的序列&#xff0c;以键值对的方式存储数据&#xff0c;是一个无序的序列 二、字典的原理 实现原理&#xff1a;Py根据key查找value所在的位置 三、字典的创…

Redhat 7.9上配置达梦数据库的DM 数据守护(DM Data Watch)

Redhat 7.9上配置达梦数据库的DM 数据守护&#xff08;DM Data Watch&#xff09; 一 基础环境 端口说明&#xff1a; 注&#xff1a; 主库已经安装软件&#xff0c;及创建数据库实例。并已开启归档模式。 [dmdbatest1 tool]$ disql sysdba/Dameng123 服务器[LOCALHOST:523…

Cuda入门

文章目录 下载使用NsightAPI__ldg 函数实现1. Sigmoid2. warpReduceSum 参考学习资料 下载使用Nsight https://developer.nvidia.com/nsight-systems/get-startedsudo ln -s /opt/nvidia/nsight-systems/2024.4.1/bin/nsys /bin/nsysnsys profile --statstrue addAPI __ldg …

kotlin协程-- 基础概念 ①|创建和使用

引言 首先先说一些相关概念 1.并发与并行 在操作系统中我们曾经学到过并发与并行 并发: 是同一个时刻只有一条指令在执行,其他指令没有再执行,但是由于CPU的时间片特别短,导致多个指令来回切换的时间间隔特别短,就好像是同一时间多条指令在执行。单核CPU与多核CPU都可以进…

渗透测试之漏洞 ms08-067 利用实验

实验背景 在安全服务项目中&#xff0c;需要对系统进行风险评估&#xff0c;其中风险评估的第一步:漏洞扫描即漏扫&#xff0c;在客户授权的前提下&#xff0c;对授权目标实施扫描并生成漏扫报告;在漏扫结束后&#xff0c;为了其准确性和完整性&#xff0c;还需对目标进行渗透…

FPGA FIFO IP核(3)- 仿真

仿真思路 如何在写入标志信号&#xff08;写入请求信号&#xff09;有效时将数据写入到FIFO中&#xff1f; 在调用模块代码中&#xff0c;pi_flag每四个时钟周期产生一个有效信号&#xff0c;即写请求信号。每次当pi_data检测到pi_flag信号有效时加1&#xff0c;从0~255循环变…

PDF怎么压缩?在线pdf压缩VS PDF压缩软件,谁更好用?10款工具详细多方位测评

PDF怎么压缩&#xff1f;PDF文件压缩可以使用本地文件压缩软件&#xff0c;也可以在网页上使用在线压缩工具一键压缩。 在日常工作和生活中&#xff0c;PDF文件因其跨平台性和良好的保持格式不变的能力而广受欢迎。然而&#xff0c;随着PDF文件内容的增加&#xff0c;文件大小也…

【JavaScript】详解Day.js:轻量级日期处理库的全面指南

文章目录 一、Day.js简介1. 什么是Day.js&#xff1f;2. 安装Day.js 二、Day.js的基本用法1. 创建日期对象2. 格式化日期3. 解析日期字符串4. 操作日期5. 比较日期 三、Day.js的高级功能1. 插件机制2. 国际化支持 四、实际应用案例1. 事件倒计时2. 日历应用 在JavaScript开发中…

如何免费实现网站HTTPS访问

在当今数字化的世界中&#xff0c;网络安全问题愈发凸显其重要性。对于网站而言&#xff0c;实现HTTPS访问已经成为提升用户信任度和保障数据安全的重要手段。然而&#xff0c;对于许多小型网站和个人博客来说&#xff0c;购买SSL证书可能是一笔不小的开销。下面将介绍如何免费…