Choerodon平台中的开发和部署都是围绕应用来进行的,那Choerodon平台中的应用有什么样的特性?又是怎样来进行管理的呢?本文旨在深刻地介绍Choerodon平台中应用的功能特性及其生命周期的管理。前端
在谈起Choerodon平台中的应用时,就不得不提微服务。正是由于微服务的出现,以前的单体应用架构带来的问题才得以解决,具体问题以下:git
(1)耦合程度随时间推移而逐渐提升。github
(2)扩展性差,冗余能力差后端
(3)模块划分不清晰,没法细化对系统资源的需求微信
(4)维护成本随着系统的日益臃肿而不断增长架构
而下图也更为直观地指出了单体应用架构与微服务架构的区别。框架
因而可知,微服务架构中的应用会被分解为更小、彻底独立的组件,这使得它们拥有更高的敏捷性、可伸缩性和可用性。换句话说,微服务架构的基本思想就是“围绕业务领域组件来建立应用,让应用能够独立地开发、管理和加速。微服务
因为Choerodon平台采用的是微服务架构,所以系统内每一个功能模块均被解耦为多个应用,其中每一个应用都支持独立地开发和独立地部署。而Choerodon平台中一个应用的生命周期通常从建立或导入应用开始;接着在开发流水线中按照需求对应用进行开发,待提交代码跑完CI以后,会生成一个应用版本,而以后的部署与发布操做均是围绕应用版原本进行的;首先用户能够将生成的应用版本部署至对应的环境中;此外,用户在测试环境中测试无误后,能够将此应用版本发布至应用市场与全平台或全组织共享。工具
以上即是Choerodon平台中应用的生命周期与相关功能的大体流程,下面就按照这个流程进行展开,带你们了解Choerodon对于DevOps的实践。gitlab
在平台中建立或导入应用时,系统会默认在对应的 gitlab group 中建立一个 project 做为此应用的初始代码库,然后再经过相应的页面功能实现对此应用的管理。从gitlab或github中导入应用库时,目前步骤和建立应用步骤相似,在导入的过程当中,依然能够选择对应的模板库,以便于在平台上进行后续的开发与部署。
在建立或导入应用的过程当中,选择应用模板与配置应用权限是其中不可或缺的步骤,同时也是应用的重要特性,如下为这两个模块的详细介绍:
▌应用模板
为了让开发者能将更多的精力用于应用的开发之中,在建立应用时,Choerodon平台提供了全面的预置应用模板供各个项目团队选择。其中的应用模板是由同类型应用的代码库整理而成的,引用了相应的应用模板后,便可在gitlab中快速地建立初始代码库。
目前猪齿鱼平台预置了微服务前端、微服务后端、Javalib(jar库)、Go语言、SpringBoot等多个开发经常使用的应用模板,此外,还有Mocha与TestNg的测试应用模板。这些应用模板均统一预置于github里面。而在这些模板中,至少都包含了 Dockerfile 文件、CI 文件以及 Chart 目录文件。
其中Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终建立一个新的镜像,主要用于控制应用容器化的进程。其次是CI文件,模板中的CI文件主要用于设置在提交代码后,自动集成时要经历的全部阶段。而其中的Chart目录文件则用于将平台中的容器打包,统一置于K8S平台进行管理。
除了可使用平台提供的预置模板,用户还能够根据实际状况自定义符合本身需求的应用模板。而用户自定义的模板将会统一置于gitlab中的应用模板库中,便于用户进行统一的管理。
▌应用权限
众所周知,全部的项目团队均是由不一样的角色构成的。而在Choerodon平台的项目层中,先是简单地将角色分为项目全部者与项目成员。顾名思义,这里的项目全部者对应的是项目中项目经理的角色,而项目成员即为团队中的其余角色。项目全部者默认拥有此项目下全部应用的开发权限和部署权限,并能够对项目成员们进行应用权限的配置(目前平台内的的应用权限仅限于为项目成员配置应用的开发权限)。
在使用微服务的团队中,因为须要涉及到对多个单元应用的管理、开发与部署,并且不一样的应用可能还须要不一样的开发人员,在这种状况下,对每一个应用进行权限的配置就变得更为必要了。在平台内的项目层建立应用或者导入应用时,Choerodon都提供了灵活的权限设置功能,以便项目全部者为相应的应用配置特定的开发人员。
当应用建立成功后,开发人员便可在Choerodon平台的开发流水线中按照需求进行应用的开发。开发流水线是根据开发人员的平常操做整理而来的,主要经过对gitlab的封装来实现持续集成与持续交付。
平台中的开发流程从基于目标应用建立对应的分支开始,而以后的开发操做就在此分支上进行。待开发完成,提交代码以后,会触发CI,并依次执行CI文件中定义的各个阶段。CI经过后,会依据版本生成规则(详见应用版本管理部分)生成一个应用版本。此时,就须要在开发流水线中建立合并请求,而指定人员审核代码经过后,会将此分支合并至目标分支。在开发的最后过程,用户可使用标记功能为这个版本建立一个标记,以便更好地进行版本管理。
下图为开发流水线模块主要流程:
灵活的版本控制与规范的版本管理是Choerodon平台的一大特点,由于采用了语义化版本的命名规则,因此Choerodon平台内经过CI生成的版本,通常格式为:C7N_COMMIT_TIME-C7N_BRANCH;好比:若分支名为feature-demo,提交时间为2019年3月7日20:14:54,那么获得的C7N_VERSION值为:2019.3.7-201454-feature-demo。若经过标记功能建立的标记为0.15.0,那么获得的版本号就是0.15.0。此处的标记功能一般用于对外发布新版本时使用,而此时的版本格式一般为:主版本号.次版本号.修订号,版本号递增规则以下:
主版本号:当你作了不兼容的 API 修改,
次版本号:当你作了向下兼容的功能性新增,
修订号:当你作了向下兼容的问题修正。
此外,Choerodon还支持将先行版本号及版本编译信息加到“主版本号.次版本号.修订号”的后面,使得版本号更加灵活易懂,例如:0.15.0-alpha.1。而具体的规则能够至语义化规则进行详细了解。
不少时候,在开发完某个应用后,可能刚好另外一个项目或者另外一个组织也正好须要这个应用。在Choerodon平台内,只需将此应用对应的应用版本发布至全组织或全平台,便能实现组织内或者平台内的应用共享,同时,还可对应用的具体版本进行控制,可选的将目标应用版本发布到应用市场,而将应用的流水版本保留下来。
而应用市场则集合了本项目下可访问的已发布应用,并能将所需应用的对应版本部署至此项目下的环境中使用。此外,应用市场还提供了应用的导入与导出功能(目前支持zip格式的导入与导出)。
应用部署是部署流水线中的主要功能,应用部署的过程就是实现应用容器化的过程。
在生成应用版本以后,咱们能够将其部署到对应的环境中去进行测试验收或投入使用(此处的环境能够理解为咱们平时使用的Staging环境、UAT环境和生产环境)。而部署应用成功后,会生成一个实例,咱们经过管理这个实例及其相关的资源来管理容器中的应用(具体的原理和步骤将在后续的部署流水线模块相关的文章中进行详细介绍)。
如下为部署流水线模块的流程示意图:
管理大师彼得德鲁克:若是你不能度量它,你就没法改进它。
正如彼得德鲁克所说,若是想改进某个东西,首先得有一个明确的指标。Choerodon平台内的DevOps指标均能以应用为维度进行查看,即可知道每一个应用的开发与部署的状况。
(1)首先能够经过代码提交图了解到某个应用的代码提交状况,以此实时反应出该应用的开发状况。
(2)在Choerodon平台中,还能够从应用的维度了解到某个应用的全部构建状况,包括了构建的时长与构建的次数。
(3)最后能够经过平台从应用的维度了解到某个应用在某个或是全部环境中的部署状况,包括部署时长图与部署次数图。
在微服务架构的基础上,Choerodon平台内的功能模块被解耦为多个独立的应用。所以管理好这些应用及其对应的代码库颇有必要,而Choerodon平台中提供了完善的功能来帮助用户更好的实现多应用的管理与共享。以应用为中心进行开发和部署是Choerodon平台实践DevOps的重要步骤,因此应用管理做为实践DevOps的基础,也应该受到重视。
Choerodon猪齿鱼做为开源多云应用平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链、微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理,同时提供IoT、支付、数据、智能洞察、企业应用市场等业务组件,致力帮助企业聚焦于业务,加速数字化转型。
你们也能够经过如下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:
欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。