专栏首页Rainbond开源「容器云平台」云帮解析系列(一):设计思想

云帮解析系列(一):设计思想

云帮社区版开放免费下载半个月了,已经有不少小伙伴开始体验了我们的云帮产品,但真正了解云帮运行机制以及产品设计思想的朋友并不太多,本系列文档从云帮的产品#设计思路#开始,逐步介绍云帮的技术架构以及各个特性的技术实现,中间还会穿插各种应用实战的内容,希望能够帮助大家深刻的理解云帮,并借助云帮为您的工作提供便利。

概述

云帮可以创建符合 12要素的云原生应用。平台使用Docker作为基本的计算单元来封装应用,利用Kubernetes对应用进行编排和容器调度。好雨将Kubernetes 与 Docker 进行了深度整合,并针对企业级服务特性自主研发了应用引擎、运维平台、持续交付引擎、自动化运维、云应用市场等功能模块,底层的分布式存储、SDN、日志收集、实时统计则采用了扩展性极强的插件式设计,增强了平台的灵活性和扩展性。

十二要素

符合12要素原则(实践方法)构建的应用可以在分布式系统中灵活的伸缩与迁移。

12要素 的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台见证了数十万应用程序的开发,运作以及扩展的过程。

云帮的设计完全兼容了12要素原则,可以实现云原生应用的高可用、弹性伸缩,灵活迁移等特性。

平台集成环境自动构建功能,不但支持Dockerfile构建应用,还提供了源代码级别的应用构建,您无需了解Docker,也不需要写Dockerfile,平台可以将您的源代码自动构建成应用并运行起来。

应用

云帮平台提到最多的名词就是 应用 ,云帮中可操作的对象也是应用,这里的应用指的是可独立提供服务的单元,请不要与手机应用,APP混淆。

应用 可以通过下列三种形式来创建/获取:

  1. Git仓库中的源代码
  2. Git仓库中Dockerfile文件以及相关的源代码
  3. 应用市场 或 云市中通过 "一键部署" 安装

应用 可以有不同的类型,不同应用有各自的属性和行为,如:Web应用的属性包含 应用名称,默认域名,开放端口,行为包含 绑定域名、扩容节点、启动、关闭等。 MySQL应用的属性和行为都是针对MySQL服务所特有的,如备份恢复,数据库管理等等。

构建,发布与运行

构建阶段

构建组件处理来自git push的请求,或者用户触发构建(一键部署)操作。

如果您提交的是源代码,构建组件会进行源代码的构建操作,检查代码语言,利用语言的包管理工具安装相关环境依赖和代码库依赖。源代码构建程序还会将本次源码语言的类型、包依赖关系存入应用属性中。

如果构建模块发现您的代码中包含一个 Dockerfile 文件,会按照Docker标准的镜像构建的方式解析Dockerfile,生成Docker 镜像并推送的内部私有的镜像仓库中。

发布阶段

发布阶段由应用引擎来完成,它负责将本次构建的应用注册为一个新的版本,并将源码、Dockerfile在构建阶段识别出来的属性存储下来。为应用存储版本信息是为了上线后方便回滚,存储构建信息是为了下次构建时缓存状态。

运行阶段

运行阶段主要由 应用引擎 和 Kubernetes 来完成,首先由应用引擎初始化租户网络(如果租户网络已经存在,该步骤跳过),然后应用引擎调用Kubernetes的控制器服务部署租户应用,应用的属性信息由应用引擎设定。容器创建成功后,会将信息写入到etcd服务中,应用层负载均衡的自动发现机制感应变化后更新负载均衡节点信息。

后端服务

云帮将所有持久化存储服务如:数据库、缓存、存储、消息系统等均看成是应用的附加资源,这些服务与应用是分开的,我们不建议将应用和后端服务放到一个应用中,这样做违背了12要素的设计原则。

应用程序通过环境变量的形式与后端服务进行关联。这样做是为了将应用与后端服务解耦,无论是应用还是后端服务都可以实现独立的灵活伸缩。

下篇预告:云帮的技术架构

本文分享自微信公众号 - 好雨云(goodrain-cloud),作者:云帮核心开发

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 云帮解析系列(一):设计思想

    Rainbond开源
  • 开发者的“U盘化生存”

    Rainbond开源
  • 通过Rainbond实现企业应用远程安装和升级

    在企业选定Rainbond作为生产交付平台后,如何将开发好的应用交付到最终用户的生产环境中去,就变成了一个非常重要的课题。本文通过实际的测试流程,讲解了如何通过...

    Rainbond开源
  • 云帮解析系列(一):设计思想

    Rainbond开源
  • AWCMP实现云应用全生命周期管理

    云应用生命周期管理是整个云平台的核心业务,以“应用商店”为核心,实现快速的应用开发和应用分发,实现整个云应用生命周期的管理和运营。通过对虚拟机、容器和物理机以预...

    海云捷迅
  • QQ 中的 “轻应用”

    基于新框架带来的能力,我们可以将服务以页卡的形式嵌入到消息流中,使用户在多个平台下获得一致的产品体验。QQ 中因此诞生了新形态的“轻应用”。

    serena
  • 全网首发:逐一解读云原生应用开发“12-Factors”

    作者自序: 12原则的提出已有五年之久,可惜业界一直缺乏一篇对其进行简明解读的指导性文章,所以我决定写这样一篇文章。在微服务模式的大背景下,力求对12原则的来龙...

    yuanyi928
  • 金融科技&大数据产品推荐:BeyondContainer——基于Docker的企业级应用智能化管理系统

    BeyondContainer是BoCloud博云基于Docker技术的容器云解决方案,利用微服务思想和DevOps理念,满足对应用的构建、测试、部署、更新、运...

    数据猿
  • 运营app,第一步要做什么?【从0开始运营APP之①】

    无论是大公司还是小企业,从0开始推广一个APP,都要经历一个创业过程——时刻面临人少、缺资源,“无推广预算”的窘境。腾讯云分析从这个月开始,将推出【从0开始运...

    腾讯大数据
  • 可能是你见过的最完善的微前端解决方案

    技术栈无关:主框架不限制接入应用的技术栈,子应用具备完全自主权 独立开发、独立部署:子应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新 独立运行...

    用户4962466

扫码关注云+社区

领取腾讯云代金券