当前位置: 首页 > 科技观察

微服务开发的软件流程

时间:2023-03-16 21:19:18 科技观察

支付系统基础设施搭建文章简要介绍了持续集成所需的基础软件。下面我们从软件过程的角度来详细描述这些步骤。本文介绍了支持持续集成所需的基础软件,请务必先阅读。这里我们以基于jira的流程管理为例。关于Jira软件本身的介绍以及相对于Redmine的优势,请自行查阅资料,不在本文讨论范围之内。在介绍这个过程之前,我先强调一个观点:-人管理代码,代码管理机器后来,随着系统功能的逐步完善,它被广泛应用于软件过程管理中。Jira的优点是简单易用。Jira的具体使用这里就不介绍了。要使用Jira进行软件项目管理,首先需要定义任务处理流程。下面是一个参考过程:在这个过程中,需要区分两个概念:任务和子任务。每个任务对应一个完整的业务需求,如对账、对接工行借记卡、获取个人优惠券列表接口等。这些业务需求中的每一个都是可独立测试的。子任务的设置比较简单,每个子任务对应本次任务执行中需要修改的开发项目。例如,与工行借记卡对接将涉及:支付网关项目调整;在支付路由项目中添加路由选项;对接工行借记卡渠道。三项的修改将对应本任务下的三个子任务的建立。任务用于跟踪项目进程,这是项目经理和产品经理关注的层面。子任务用于支持开发自动化,这是开发人员关注的层面。这样就会给任务和子任务设置不同的属性:1.1需求管理Jira也是一个不错的需求管理工具。产品经理可以通过Jira实现需求管理。与开发相比,需求管理过程会相对简单。一般分为三个步骤:开发需求、评审需求和收尾需求。需要注意的是:需求管理过程需要和开发过程分开,毕竟这是不同团队做的。开发任务可以与需求任务相关联。Jira通过复制任务来提供这种支持。一个需求任务可以对应多个开发任务,这在实际操作中很常见:为了满足线上需求,会将一个需求任务拆分成多个开发任务,先完成核心功能开发上线,再完成外围功能开发。这两个独立的线上工作会拆分成两个或多个开发任务;如果Android、IOS、PCweb等不同平台有不同的在线时间要求和技术要求,也需要根据目标平台按照当前要求拆分开发任务。1.2创建任务如前所述,开发任务的来源有两种:需求任务,对应产品经理提出的需求。优化任务,一般是开发团队内部提出的用于重构或性能优化的开发任务。如何把握任务的粒度?每个开发任务都是一个完整的需求,可以独立进行测试和验证。每个任务的开发周期控制在1个月以内。1.3创建子任务开发人员接到开发任务后,需要对系统实现进行设计和分解,确定哪些需要新开发,哪些需要改进。在微服务架构中,一个任务的开发涉及多个系统的变更。这样,需要为每个系统建立一个独立的子任务。以后我们会根据这个子任务的设置来驱动开发过程。每个子任务的开发周期应限制在2天以内,不超过1周。1.4启动主任务开发启动主任务开发的过程比较简单。主要任务是通过邮件通知所有相关人员任务可以开始了。1.5发起子任务开发子任务的发起和执行是整个流程的核心工作。如果这里使用git/gitlab进行版本控制,整个过程的要点是:如果需要新建一个项目进行开发,开发者填写新项目的名称和类型(Web、RPC、tools等),并在git上创建一个项目骨架,包含必要的基础文件。邮件通知开发者需要下载的项目代码库地址。开发人员将代码检出到本地,进行开发工作。开发者可以随时将代码签入服务器并发出MergeRequest;gitlab在接受签入前会进行静态代码检查,静态代码检查的工具有findbugs、PMD、Sonar等,开发者在开发过程中也必须自己进行静态检查。这里的勾选是为了防止开发者漏勾。执行单元测试;通知相关人员进行代码审查;执行代码审查;满足审核条件(比如至少2人同意),审核通过,代码自动合并到主干版。可以提出通知子任务。当然,是否测试由开发者决定。1.6子任务和任务测试子任务开发完成后,就可以进行测试了。当测试子任务时,会触发Jenkins部署测试环境。测试有两种方式:自动测试和手动测试。尽量使用自动化测试,以便开发人员及时发现问题。所有子任务完成后,就可以测试主任务了。主任务测试完成后,如果是手动测试,测试人员介入,开始测试任务;如果是自动测试,则开始运行集成测试脚本。测试通过后,就可以准备上线了。1.7预部署和全部署一般上线会分为预部署和全部署两个步骤。预部署的目的是验证系统在线上环境下是否正常运行,降低回滚成本。尤其是在部署大量服务器的情况下,先部署1-2台机器,可以在线验证这次启动是否OK。验证通过后,即可进行全量部署。请注意,预部署和完全部署都是针对子任务的。少数企业上线前会需要审批,但这不利于流程自动化。一天上网几十次,谁知道这行不行。但有一点很重要,在系统上线之前,必须通知相关用户。如果出现问题,用户可以第一时间知道。2、项目文件结构开发参考目录结构:从该目录可以看出,与项目相关的部署脚本需要项目开发人员自行维护,以保证部署工作能够自动执行。包括用于验证项目是否成功部署的脚本。验证项目是否部署成功,一种方式是堆入日志,grep到这个日志就说明系统启动成功;一种方式是调用接口验证是否成功。部署目录参考:简而言之,微服务项目管理的核心理念在于“自动化”,消除人为因素。人管理代码,代码管理机器,最终目的是实现自动化上线。淘汰人工测试,代之以自动化测试;取消人工验证,代之以自动验证;消除手动部署并用自动化部署取而代之。这样不管项目再多,都可以很好的管理。【本文为专栏作者《凤凰牌老熊》原创稿件,转载请微信联系作者公众号《凤凰牌老熊》转载】点此阅读作者更多好文