企业级开发模型
点赞👍👍收藏🌟🌟关注💖💖
你的支持是对我最大的鼓励,我们一起努力吧!😃😃
1.企业级开发流程
我们知道,一个软件从零开始到最终交付,大概包括开发、测试、发布上线。细分为以下几个阶段:规划、编码、构建、测试、发布、部署和维护。
最初,程序比较简单,工作量不大,程序员一个人可以完成所有阶段的工作。但随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升,一个人已经hold不住了,就开始出现了精细化分工。如下图所示:
软件开发工程师(开发团队)职责就是写写写,软件测试工程师(测试团队)职责就是测测测,软件运维工程师(运维团队)职责就是稳稳稳。
但在传统的 IT 组织下,开发团队(Dev)和运维团队(Ops)之间诉求不同:
- 开发团队(尤其是敏捷团队)追求变化
- 运维团队追求稳定
双方往往存在利益的冲突。比如,精益和敏捷的团队把持续交付作为目标,而运维团队则为了线上的稳定而强调变更控制。部门墙由此建里起来,这当然不利于 IT 价值的最大化。
为了弥合开发和运维之间的鸿沟,需要在文化、工具和实践方面的系列变革⸺DevOps正式登上舞台。
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术⼈员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。在DevOps的软件开发过程包含计划、编码、构建、测试、预发布、发布、运维、监控,由此可见DevOps的强⼤。
讲了这么多,这个故事到底和我们的主题 Git 有什么关系呢?
举一个很简单的例子就能说明这个问题。一个软件的迭代,在我们开发人员看来,说白了就是对代码进行迭代,那么就需要对代码进行管理。如何管理我们的代码呢,那不就是 Git(分布式版本控制系统) !所以 Git 对于我们开发人员来说其重要性就不言而喻了。
2.系统开发环境
对于我们日常生活中用户来说我们想要访问手机的app其实就是一些服务器,这些服务器上面部署的都是稳定的代码,所以用户可以顺畅的体验app。对于开发人员来说我们不能将自己开发的代码直接部署到用户能访问到的服务器上,因为可能会存在bug从而导致用户体验感变差。
如何解决呢?我们可以给开发人员在去创建一批属于他们自己开发的服务器,这些服务器专门部署正在开发的代码。和用户访问到的服务器互不影响,由此我们就有了环境隔离的概念。
言归正传,对于开发人员来说,在系统开发过程中最常用的几个环境必须要了解一下:
- 开发环境:开发环境是程序猿们专门用于日常开发的服务器。为了开发调试方便,一般打开全部错误报告和测试工具,是最基础的环境。
- 测试环境:一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。该环境是开发环境到生产环境的过渡环境。
- 预发布环境:该环境是为避免因测试环境和线上环境的差异等带来的缺陷漏测而设立的⼀套环境。其配置等基本和生产环境一致