设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 安全 > 正文

[YY互娱]基于 DevOps 理念的私有 PaaS 平台实践(2)

发布时间:2021-01-06 18:11 所属栏目:53 来源:网络整理
导读:互联网时代竞争激烈,特别是移动互联网时代,谁能快速推出产品,快速迭代,谁就能在市场上占得先机.快速试错是一种常见的竞争手段.PaaS 平台的业务交付运行模式,最大特点就是效率高,成本低,可以很好的满足快速试错的业

互联网时代竞争激烈,特别是移动互联网时代,谁能快速推出产品,快速迭代,谁就能在市场上占得先机.快速试错是一种常见的竞争手段.PaaS 平台的业务交付运行模式,最大特点就是效率高,成本低,可以很好的满足快速试错的业务需求.

2. 人力不足

长期以来,互联网企业在运维方面的人力投入是不够的,很多时候是扮演的救火员的角色,PaaS 在平台层面提供一站式运维服务,高可用架构质量保障,减少业务上线对运维人员的依赖,在不需要运维人员介入,开发人员自己就可以上线业务,并持续迭代.

基于 IaaS 的 PaaS 平台,将硬件环境与软件环境进行了解耦,也降低了硬件故障对线上业务的影响,释放了运维自身的压力.

3. 成本压力

业务上线需求多,如果按传统的方式提供物理资源,对资源的需求量极大,而业务的访问量,生命周期不可预测,造成硬件资源利用率低.很多时候通过混合部署业务,提高硬件资源利用率,造成后期维护成本非常高.

平台理念

基于上面的业务场景,以及云计算的大背景,YY 互娱技术团队基于 OpenStack,推出自己的 IaaS平台,主要面向游戏业务的云计算平台.基于 IaaS能力,逐步构建自己的PaaS平台.

我们的平台理念是:运维技术服务化,转化为生产力.平台提供高可用高性能高质量的基础架构服务,满足业务的快速交付.平台提供一系列的工具,组件,来支撑开发人员自助式运维.

开发人员只要使用平台,无需找到运维人员,就能应用运维的能力,如高可用,弹性伸缩,容灾备份等能力,达到 NoOps 的目的,减少开发、运维不必要的沟通成本,使开发人员专注于业务开发.

执行 DeoOps 理念,平台将开发、测试,运维流程自动化打通,将持续集成,自动化测试的能力以服务化的方式输出到平台.最终,将业务价值交付涉及的各种能力,通过平台输出到业务,达到技术服务转化为生产力的目标.

实践历程

1. 整体架构

PaaS运维平台的整体架构:


两种颜色代表两个视图,蓝色部分代表从业务维度的视图,即从PaaS平台用户的维度看到的架构.灰色部分代表从运维自身的视图,即运维全局的视图.

从业务维度的视图,大概分为4层,从下而上,面向服务,包括硬件层,IaaS,PaaS和业务层.

从运维自身的视图,包括全局资源中心,监控中心,数据源中心,报表中心,安全体系等.

接下来的篇幅,主要把面向业务的各个核心组件及实践做介绍.

2. 标准化

标准化是运维自动化的基础,PaaS 平台的标准将以系统化,自动化的方式落地.
标准化主要包括这些规范:

  • 基础应用软件规范(Nginx,Resin,Tomcat等)
  • 应用程序打包规范(Java,PHP)
  • 应用程序部署规范
  • 监控规范
  • 其他

以上规范,全部落地到PaaS 平台的各个子系统,由子系统自动化完成.比如对VM 环境的标准化,通过 VM 镜像方式交付.

3. IaaS

我们的 IaaS 层提供了以下服务,来满足我们的应用上线.

  • 计算虚拟化
    计算虚拟化部分,我们这里使用 VM,将 VM 作为我们容器计算的最小单元.当前使用 OpenStack 开源实现方案,使用 KVM 做 hypervisor.提供各类 VM 套餐满足不同业务场景.计算能力扩展我们采取的 VM 的横向扩展,即 ScalingOut,后面章节会介绍.
  • 存储虚拟化
    考虑到性能问题,我们VM使用了本地存储.没有使用 Ceph分布式存储.
    对象存储上,对接了公司提供的基础服务.
  • 网络虚拟化
    网络部分,采用了Neutron Provider Network,未实现 VPC 网络隔离.
  • 数据源
    • 数据源我们提供了3类数据源,Mysql,Redis,Memcached.这3类资源是平台上使用最频繁的组件.我们以单物理机多实例的方式运行,未主动采用 cgroup 进行资源隔离.这些插件在被创建的时候会自动添加监控,用户可以在平台查看相关监控状态信息.
    • 插件平台.上述基础组件以插件方式与平台整合,类似于 Heroku 的 Addons服务.

具体业务流程描述如下:

  • 插件注册:插件开发者将自己开发的插件接入插件平台.
  • 获取插件:PaaS 平台的项目用户请求插件平台,获取插件授权信息.
  • 返回授权:插件平台将来自 PaaS 平台的请求转发到具体的插件,获取具体插件的地址,授权等信息,并将信息存储在插件平台然后返回给PaaS 平台.比如 Mysql 实例,返回域名,端口,账号,密码.
  • 插件注入容器: 项目模块发布的时候,由CloudRouter 从 PaaS 平台上获取插件信息并将相关信息注册到业务容器环境变量.关于 CloudRouter 的功能,后续会详细描述.
  • 容器访问插件:业务容器从环境变量中获取到的插件信息,直接请求具体的插件.插件平台的引入,增强了PaaS平台的开放性和灵活性,项目所需的所有基础组件,不需要 PaaS 平台自己提供,可以由公司其他开发同事提供.插件平台面向公司内部所有开发人员,设置了一定的运营策略,如贡献率,引用量,收获赞等,并与公司的绩效积分,技术职级评定做一定关联.
  • 其他资源
    其他基础服务,我们同时提供了 CDN,消息队列等.
    CDN 是使用第三方厂商基础服务,通过 API对接,实现一键创建 CDN 服务.消息队列服务底层采用了 RabbitMQ集群.
    同样,这些资源也以插件方式整合到平台.

4. 持续交付

基于上面的 IaaS 层,我们有了构建 PaaS 的基础能力,来解决持续交付的问题.我们从以下几个方面来描述

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读