大家好,我是人月聊IT。
今天我准备再结合一张图,详细的跟大家聊一下对于微服务应用如何上云这件事情。因为很多人觉得微服务上云这个事情很简单,不就是我提前已经有了一个云原生的容器云平台,我基于微服架构开发完一个微服务应用,然后把应用部署并交付到云原生平台上去不就完事了吗?
但是微服务应用上云是一个系统工程,它整体是覆盖了微服务应用从启动计划到总体设计到开发测试,到部署发布的全生命周期过程。同时又覆盖了云原生的三大最佳实践,其中就包括底层的容器云平台,开发阶段的微服务的架构设计和开发框架选择,也包括了过程阶段的基于DevOps的持续集成和持续交付过程。同时又需要通过项目管理和敏捷研发管理,实现端到端的过程管理和过程支撑能力。
也就是说微服务应用上云这件事情,我是如何把各个最佳实践之间相互衔接和打通,形成一个完整的端到端流程和自动化的持续集成和交付过程?这个才是我们微服务应用上云的关键。
而且对于微服务上云不是传统的上IaaS基础设施云平台,而且需要持续集成和交付到云原生PaaS容器云平台。所以在这个地方有一个关键的转变,就是一定要实现从资源层到服务层的抽象,我们不再是去申请独立的资源,具体去安装相应的数据库或各种技术中间件,而是应该更多的是申请云原生平台直接提供的各种中间件技术服务能力。
如果做不到这一点,事实上不能够叫严格意义上的一个云原生应用。
好了,结合这个端到端流程,我们详细再展开来看一下微服务应用上云。对于一个全新的应用上云涉及到的阶段和流程究竟是怎么样的?
首先最前面仍然是有了项目目标和范围以后,我们要去做项目的整体计划和总体的方案设计。在总体方案设计完成以后,接着就会拆分为两个关键的动作。
在总体计划和方案设计完成以后,你要去做相应的资源预申请,资源的预申请需要提交到云原生平台,他需要去做资源池的相应的规划。如果当时的资源池的资源不够可能还需要提前去走相应的资源采购的流程。
1.前期方案和资源服务测算
在总体方案设计完了以后,我们就会过渡到很重要的事情叫微服务架构设计。微服务的架构设计里面又有一个重要的动作叫技术组件的选型,比如你微服务开发框架的选型,你用到的消息安全缓存数据库,各种技术组件的选型,这个在前期我们一定要准备有微服务架构设计标准的开发框架,或者是标准的各种技术组件选型的指导书,以方便开发团队去做这个事情。
在微服务架构设计和组件选型完了以后,这个时候我们就能够输出完整的部署架构设计文档。从逻辑架构到物理部署架构都可以完整输出。基于这个部署架构设计,我们会去做详细的业务量和业务模型测算。
这个测算完了以后,我就很清楚我需要申请多少资源,我需要使用云平台提供的哪一些技术组件和技术服务能力,所以这个资源和服务的申请流程又会走到云原生平台,云原生平台要提前去开通相应的租户,同时为这个租户去做相应的资源分配和相应的技术服务的开通。
所以我们看到每一个过程点,上层的应用开发和底层的云原生平台都有相应的协同和交互环节。在资源申请和分配完成以后,云原生平台也做了相关的开发测试,我们才会涉及到去搭建相应的开发环境和开发框架,同时做我们整个持续集成环境的初始化。
这样的话就是我们一个微服务应用开发的前期工作基本上就做得差不多了,然后就会是进入到我们核心的敏捷研发过程管理。
2.敏捷研发过程管理和需求分析
敏捷研发过程管理里面一个核心的输入就是我们的需求,所以这个时候你一定要去做详细的基于业务场景的需求梳理,去进行相应的需求分析和需求开发,乃至拆解到详细的敏捷研发里面的一个个user story的故事点。
基于这一些用户故事点,我们就要去规划相应的迭代版本,然后通过迭代版本进入到详细的敏捷研发任务管理和任务跟踪过程管控中。
那么在整个的开发过程中如何和我底层的容器云平台去进行协同和交付?里面就有一个很关键的基于DevOps实现的CI/CD持续集成和持续部署,包括里面的编译打包部署,包括自动化测试,安全检查等各种过程质量管控。
所以通过DevOps过程实践,我们就能够很好去实现整个微服务应用的持续集成和持续交付能力。在最终测试完成和测试通过了以后,我们又会走到相应的部署发布阶段,我会去走相应的发版申请。
在生产环境的发布流程走完后,我们需要将微服务应用的部署和底层的容器云平台资源和服务能力提供进行集成。实现自动化的部署和交付能力。也就是说我会从持续部署发布到持续发布这么一个过程,能够实现在测试环境测试通过的版本,通过环境迁移自动的发布到的我的生产环境。
当然容器云平台一样的会去做生产环境相应的服务的开通和资源的分配,整个过程完了以后才会进入到持续化的后期微服务应用的运维监控阶段,微服务的治理阶段。
所以通过这个图大家就可以看得到,微服务应用上云它一定会涉及到项目管理、敏捷研发、容器云、微服务,DevOps四大技术实践之间高度的融合和集成。而且这个集成不是到了运行态再去集成,很可能是你整个项目从启动计划阶段开始,你就要随时和相关的底层平台去做协同去做交付。
只有这样,你最终开发完成的微服务应用才是完全满足云原生平台应用要求的。才是真正意义上的微服务应用上云过程。
好了,今天的简单分享就到这里,希望对大家有启发。