目录
1.企业级开发流程
- 想要交付一个软件项目,至少需要经过以下三个流程。软件代码的开发-------->软件代码的测试------->软件发布上线。只有将软件发布上线之后,用户才可以访问到我们的一个软件。
软件代码的开发:代码的规划------->进行开发------>开发完成进行编码----->进行构建
软件代码的测试:测试代码,解决bug,直至软件稳定。
发布上线&维护:发布---->部署(软件代码开发完成,进行服务器的部署)----->用户用服务器访问软件--->服务器需要维护(不能隔一段时间,服务器就奔溃了)。
总结:⼀个软件从零开始到最终交付,⼤概包括以下⼏个阶段:规划、编码、构建、测试、发布、部署和维护。
最初,程序⽐较简单,⼯作量不⼤,程序员⼀个⼈可以完成所有阶段的⼯作。但随着软件产业的⽇益发展壮⼤,软件的规模也在逐渐变得庞⼤。软件的复杂度不断攀升,⼀个⼈已经hold不住了,就开始出现了精细化分⼯。
开发团队:软件开发工程师。写代码
测试团队:软件测试工程师。测试代码
运维团队:软件运维工程师。维护代码,保持服务器的稳定性
在传统的 IT 组织下,开发团队(Dev)和运维团队(Ops)之间诉求不同:
- 开发团队(尤其是敏捷团队)追求变化
- 运维团队追求稳定
- 【解释】:开发团队和运维团队存在利益冲突:开发团队写越多的代码,出现的bug可能就越多。那么服务器不稳定的概率也极大的提高了。服务器的稳定性和软件代码的稳定性是直接挂钩的。开发团队(业务团队):代码迭代的周期是非常快的。(本周/周迭代)上线很多代码。写代码非常频繁,增加代码出现的bug的概率。
- ⽅往往存在利益的冲突。⽐如,精益和敏捷的团队把持续交付作为⽬标,⽽运维团队则为线上的稳定⽽强调变更控制。部⻔墙由此建⽴起来,这当然不利于 IT 价值的最⼤化。
- 为了弥合开发和运维之间的鸿沟,需要在⽂化、⼯具和实践⽅⾯的系列变⾰⸺DevOps正式登上舞台。
- DevOps(Development和Operations的组合词)是⼀种重视“软件开发⼈员(Dev)”和“IT运维技术⼈员(Ops)”之间沟通合作的⽂化、运动或惯例。
- 透过⾃动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
- 在DevOps的软件开发过程包含计划、编码、构建、测试、预发布、发布、运维、监控,由此可⻅DevOps的强⼤。
讲了这么多,这个故事到底和我们课程的主题 Git 有什么关系呢?
- 部署,就是部署开发团队的开发的某一个版本的代码。Git分布式管理系统。可以部署远程的master上的一个代码。所以Git很重要❗
- 举⼀个很简单的例⼦就能说明这个问题。⼀个软件的迭代,在我们开发⼈员看来,说⽩了就是对代码进⾏迭代,那么就需要对代码进⾏管理。如何管理我们的代码呢,那不就是 Git(分布式版本控制系统) !所以 Git 对于我们开发⼈员来说其重要性就不⾔⽽喻了。
2.系统环境开发
- 对于开发人员来说, 系统开发过程中,部署在服务器上的软件代码不一定是稳定的。必须要经过的几个环境。
- 对于用户来说,日常访问的一些APP/网站都是一些服务器。服务器上面部署的都是软件开发的一些稳定的代码。(不会出现闪退/图片不出现等问题)
- ❗开发人员是不能将正在开发的代码部署到这些以上服务器的。
- 给开发人员创建一批属于他们正在开发的服务器。给用户访问的服务器是另外一套服务器。二者互不影响。
- 这两套服务器是存在不同的环境下面的,是环境隔离概念。
对于一些小型的系统,上面这两套环境就是足够的。开发人员和测试人员在开发环境。用户在线上/发布环境。但是不仅仅这两种环境,如果对于较大一点的系统和环境来说就不够。
⾔归正传,对于开发⼈员来说,在系统开发过程中最常⽤的⼏个环境必须要了解⼀下:
- 开发环境:开发环境是程序猿们专⻔⽤于⽇常开发的服务器。为了开发调试⽅便,⼀般打开全部错误报告和测试⼯具,是最基础的环境。
- 测试环境:⼀个程序在测试环境⼯作不正常,那么肯定不能把它发布到⽣产机上。该环境是开发环境到⽣产环境的过渡环境。
- 预发布环境:该环境是为避免因测试环境和线上环境的差异等带来的缺陷漏测⽽设⽴的⼀套环境。其配置等基本和⽣产环境⼀致,⽬的是能让我们发正式环境时更有把握!所以预发布环境是你的产品质量最后⼀道防线,因为下⼀步你的项⽬就要上线了。要注意预发布环境服务器不在线上集成服务器范围之内,为单独的⼀些机器。
- ⽣产环境:是指正式提供对外服务的线上环境,例如我们⽬前在移动端或PC端能访问到的APP都是⽣产环境。
- 这⼏个环境也可以说是系统开发的三个重要阶段:开发->测试->上线。
- ❗生产集群(生产环境上发布)需要一个稳定的效果:代码的稳定+环境配置(不同的环境存在不同的环境配置)正确的环境配置。可能因为不同的环境配置,导致生产集群服务器的不稳定,出现了预发布集群(配置和生产集群上的环境配置是一样的)。
- 灰度/仿真环境:地域的灰度/存在人群的灰度等等。在预发布集群和生产集群之间的。小范围在某个区域,让这个区域的人员让帮我们测试一下是否没有bug。再发布到生产集群,面向全国/全球范围的人群。
- 对于规模稍微⼤点的公司来说,可不⽌这么⼏个环境,⽐如项⽬正式上线前还存在仿真/灰度环境,再⽐如还存在多套测试环境,以满⾜不同版本上线前测试的需要。
- ⼀个项⽬的开始从设计开始,⽽⼀个项⽬的成功则从测试开始。⼀套良好的测试体系可以将系统中绝⼤部分的致命Bug 解决在系统上线之前。测试系统的完善和成熟也是衡量⼀个软件企业整体⽔平的重要指标之⼀,测试往往被忽视,因为它对可以的隐性、对软件开发企业不产⽣直接的效益,但是它却是软件质量的最终保障,乃⾄项⽬能否成功的重要因素!测试环境是非常重要,当然每个企业不同,视情况而定!