info
我是来自拓维信息基石研究院 PAAS 团队的 Golang 工程师丁鹏,同时我也是 Rainbond 社区 TOC 成员之一。
我们团队主要负责云原生应用平台的选型,搭建与开发,以此做到对下屏蔽底层的基础设施,对上托管我们的微服务应用,便捷高效的帮助企业内服务的云原生落地。
企业简介
拓维信息是中国领先的软硬一体化产品及解决方案提供商。
1996年成立,2008年上市(002261.SZ),以湖南为总部,在北京、上海、深圳等地设有分支机构,员工4000余名。业务涵盖政企数字化、智能计算、鸿蒙生态,覆盖全国31个省级行政区、海外10+国家,聚焦数字政府、运营商、考试、交通、制造、教育等重点领域和行业,服务超过1500家政企客户,为其提供全栈国产数字化解决方案和一站式全生命周期的综合服务。
拓维信息立志成为一家不断创新的科技企业,从运营商到数字政府、考试、制造、交通、教育等行业和领域,持续深耕IT软件领域。
PAAS 之前
在使用一款易用的 PAAS 产品之前,我们各个团队的服务部署方式并不统一:
- A 团队申请云服务器,自搭建
jenkins
将应用直接部署到服务器; - B 团队申请云服务器,使用
kubeadm
搭建 K8s 集群,开发成员编译镜像,运维成员编写应用声明文件进行部署与维护; - C 团队...
可以看出,当前的应用运维管理方式存在着很多问题:
- 云资源管理的混乱:费用统计麻烦,资源利用率低;
- 团队应用管理的混乱:多制品库,多种配套管理软件;无法对应用生命周期的可视化管理,监控问题,日志问题;
- 运维重心:以资源为运维重心,耗费人力创造力,重心应该转移到应用本身,更关注业务的创新;
PAAS 需求
为了解决眼前资源以及应用管理乱象,我们需要一个 PAAS 平台。这个 PAAS 平台我们期待它具有的能力:
- 易用:不需要开发人员,运维人员耗费大量的时间精力学习应用管理,云部署等知识,做到应用的快速交付,持续交付;
- 自动化:对应用全生命周期可管理,从源码到可访问的服务,到日志,监控等都可以在平台呈现;
- 可视化:应用全生命周期可管理,从基本的应用部署,滚动更新,停止等,上升到日志,监控,可伸缩等能力,可以在平台可视且轻松管理;
选型 Rainbond
为了加快 PAAS 平台建设的步伐,我们决定站在巨人的肩膀上,从社区中对 几款 PAAS 产品进行筛选。对比其优劣势,选择更符合我们团队需求的那款——最终 Rainbond
脱颖而出了。
Rainbond
的优势:
- 以应用为中心的设计理念,做到了真正的易用,屏蔽基础设施概念,让开发团队得以专注业务本身;
- 较完整的自动化能力,完整的可视化管理能力,基本符合需求的日志监控功能;
- 直观的微服务拓扑展示,利用服务网格治理实现本地访问,减少服务上 PAAS 的配置改动(这是一个意外惊喜~);
- 应用商店提供了常用软件,帮助一键部署。
除此之外,Rainbond 还具有让我们额外惊喜的能力:
应用跨集群,跨团队的快速复制能力,使多环境高效部署成为可能;
完备的集群端组件,网关,日志,甚至制品库(可替换),使得 Rainbond 本身可以完整提供应用管理的能力;
自定义初始化容器以及SideCar容器能力,可插拔的方式为组件提供额外能力;
Rainbond 实践
我们使用 Rainbond 构建组件呈现:
- 可视化的组件拓扑以及组件依赖,以及由此带来的相互依赖组件之间本地化的访问方式
- 组件的全生命周期管理,组件所需基础设置资源轻易配置
- 高效的网关配置中心,不再需要频繁登录云平台控制台配置负载均衡
Rainbond 足够易用到不需要我们去介绍怎么使用它来构建与管理组件。
我们在其他领域的一些使用经验。
单域名多路由服务
默认组件开通 http 端口时得到这样的访问 url:
而下面才是你期待的 url:
那么你可以使用 Rainbond 网管的 PathRewrite 功能:
自定义插件
基于 Rainbond 的插件可插拔设计,我们可以自定义插件服务。
文件管理插件
你可能会有上传文件到组件容器的需求,得益于 Rainbond 自定义开发插件的功能,你可以通过开发插件来为组件实现文件管理插件,你只需要为你的组件安装具有文件管理能力的插件,然后再为组件创建一个目标目录的共享存储,再通过开通组件端口,即可实现组件容器的文件管理。类似下图
创建插件
配置插件环境变量
开通插件
创建共享存储
开通http网关
数据中间件管理插件
部署了如 MySQL,Redis 的数据中间件,苦于没有现成的管理软件,或者当前无法对外开通 tcp 端口,那么你可以基于 dbgate
这款开源软件来开发一款数据中间件的管理插件。
我相信大家已经会举一反三了,不再示例。
最后
Rainbond 目前已经迭代到了 V5 大版本了,作为一款易用的 PAAS 云原生应用平台,功能也趋于完备,我们也期待 Rainbond 能发展的越来越好。
得益于 Rainbond 的社区支持,我们在使用 Rainbond 时都比较顺利,Rainbond 确实帮助我们团队内顺利的过渡到了云原生的应用管理阶段,降低了耗费在云资源管理上的精力,转而关注应用本身。
而在使用过程中遇到功能 bug 或有更佳实践时,我们也倡导团队积极向社区提交 issue,或排查解决,这是开源的健康循环的一点。