企业内 PAAS 建设的经验与教训
本人七年研发经验,当前就职于普通中型互联网公司,主要负责企业内部分 PAAS 的开发建设,经历过企业统一配置中心、统一名字服务、基于 Sentinel 的高可用流量防护系统、基于 CoreDNS 的内网 DNS、基于 K8s 的发布平台部分设计开发工作。
一、为什么要建设企业内的 PAAS
试想,当你进行一个项目的研发,你要部署代码仓库、搭建环境、搭建数据库、搭建 Redis、搭建 MQ 等系统,那你的团队沟通成本得有多大,需要协调开发、运维各种环境与权限,一切协调好了,可能一个多月过去了才能进入正常的开发节奏。当你的团队使用开源中间件时,开源中间件的一些升级、维护问题谁来解决呢。等等情况,如果你是资深开发的话,在此之上可能还有更多的场景可以我们一起交流。
有位老师曾说过,PAAS 作为企业内部研发与运维的中间层存在,它的存在对于提升研发运维效率有着非常可观的提升。对于研发 RD 来说 PAAS 平台屏蔽了基础设施与网络运营的细节,它开通即用,申请即可获得数据库、缓存、MQ 等中间件的支持。对于运维 SRE 来说,减少了和众多研发沟通的成本,只需要和一小撮 PAAS 平台的研发进行合作,默契培养起来会更容易。
二、建设企业内的 PAAS 会遇到哪些困难
1.什么时候开始启动 PAAS 建设
一般来讲,当企业出现一个较大的业务体系,并在此业务体系上发展了很多周边业务,此时依托于大的业务部门开始就应当开始启动企业内 PAAS 的建设。比如配置中心、名字服务、K8s 发布系统等 PAAS。
2.如何设计企业 PAAS,以配置中心为例
1.PAAS 内核选型
如搭建配置中心 PAAS,我们首先要对 PAAS 内核进行选型,候选内核:Nacos、Apollo、Etcd、Consul、自研等。个人认为选型的特性从最重要为例:公司内部接受性 > 开源社区活跃度 > 接入方式 > 二次开发难度 > 性能 > 功能。具体的选型过程非本文重点,假设经过对比我们选择了 Nacos 这一开源中间件。
2.PASS 的控制台(控制面板)
配置中心的控制太选型比较简单,一是复用开源控制台,如 Nacos 自带控制台;二是自研控制台。这个视团队前端资源充足性来看。
3.PASS 的功能设计
1.对于 PAAS 来讲首先要实现多租户功能,用于隔离各个业务线,以个人经验来讲,三层结构比较合理,如“事业部-部门-团队”组成业务线概念。
2.对于 PAAS 来讲,其次要实现用户管理与用户权限,用于日常开发与管理。
3.PAAS 核心功能,如配置中心与代码是强相关的 PAAS,即我们最关心的是配置分环境管理、双人审核上线、配置下发监控等等等。
4.PAAS 的接入方式与鉴权,通常来说要提供 2 种主流语言的适配,如 JavaSDK、GoSDK。以及 OpenAPI 的访问方式、和一种无侵入的接入方式,如配置中心可以依赖于 Confd 实现、名字服务可通过 CoreDNS 来做动态服务发现。
5.PAAS 服务的运行可见性,众所周知,可见性主要是日志、指标和链路。
4.PAAS 的开发实现
1.如果使用开源软件内核,开发团队需要对核心代码掌控度达到 50%-60%的程度。同时二次开发,尽量通过插件式或者利用各种代码无侵入的技术集成到开源代码中,以便之后内核升级。
2.相对来讲,内部 PAAS 的前端资源比较紧缺,此时功能实现应尽量采取直观简单的实现方式。
3.容量规划,例如基于 Nacos 配置中心着重看集群托管配置文件的数量、监听配置中心的长连接数量。超出容量必须有最快的解决方案与长期的解决方案。如配置中心短期的解决方案是提供多个集群入口,长期的解决方案是屏蔽多个集群入口,使用 Proxy 解决流量分发到各个集群的方案。
4.部署方式,物理机部署还是 K8s 部署,支持多机房部署等。
5.SLA 承诺,根据 PAAS 的类别定义相应的 SLO 与 SLI,进行压测后或者长期运行观察定期调整 SLA 承诺。谨记 PAAS 稳字当头。
5.PAAS 的运营
1.运营首先我们需要提供各环境的控制台入口、接入方式、接入文档。并从上线开始,不断优化我们的控制台体验与文档。
2.用户的个性化需求如何解决?这个其实并没有万能公式,视情况随机应对,个性化需求尽量放一放或进行问卷调查决定是否支持。
三、我心目中的 PAAS 平台是什么样的
每个研发都有独属于自己的设计与思考,当前因为各种原因无法实现,但那是心中的一片乌托邦。
1.PAAS 到底是为谁服务的
讲到这里,其实可能很多人说所有系统都是为人服务的,其实没有错,毕竟人要用。但是从我的角度出发,PAAS 是为一个个运行的“服务”去服务的,每个 PASS 平台都是,例如代码平台是服务代码托管、发布平台是服务运行时环境托管、配置中心是服务配置的托管、名字服务是服务地址的托管、MQ 是服务队列的托管。
2.基于服务为核心打造 PAAS 的好处
铁打的营盘,流水的兵。人会跨企业流动,服务基本不会跨企业流动。所以当一个开发获得一个服务的权限时候,是否应当获得该服务的具体信息、代码权限、配置中心、名字服务、告警中心、日志中心、MQ、数据库、缓存等。那一个离职的时候是否应该剥夺所有的权限。如此一来,研发效能是否能提高很多呢。
版权声明: 本文为 InfoQ 作者【Crazy】的原创文章。
原文链接:【http://xie.infoq.cn/article/978d6effbd20204ce027cec43】。文章转载请联系作者。
评论