今天和朋友们(部门的运营同事)聊天谈到了我们部门(云平台)接下来要做的事情---实现容器编排以及监控报警系统的多租户。朋友就不太理解多租户是什么,和多用户有什么区别,以及我们做这件事情有什么意义?
我也没有说的很清楚,回来在网上查了一些信息,现在结合看到的内容谈谈自己的想法。
参考文章:http://88250.b3log.org/cloud-app-platform-multitenancy(可以先看这篇,说得挺不错的,不过后面内容有点不好理解,所以我结合自己的经验谈谈自己的理解)
什么是租户:
租户可以看成是客户。例如在互联网行业,一个用户就是一个租户,比如我现在是简书的租户,你又是微信的租户。一些面向企业(to b)的SaaS产品中的租户可以认为是企业,比如面向企业的tower的租户就是企业(每一个企业里又有很多该企业的员工用户,但是这些用户没法认为是租户)。
对于我们云平台来说,我们要做的事情,利用开源产品实现或者自己实现的容器编排以及监控报警的解决方案其实是可以以服务的形式对外开放,供其它业务部门使用的。而对我们来说,我们公司的各个业务部门就是我们的租户。
为什么需要多租户支持:
开发出的服务可以同时提供给多个个人或者企业共同使用。这样有2个好处,第一可以降低服务的运维成本,第二可以。比如以前的一些产品是部署到客户的服务器上的,所以需要大量的实施人员和运维人员,并且产品升级的话也需要分别升级不同的产品,这是一笔极大的开销。将产品部署到云端,以服务的方式提供,并且实现了多租户的支持,这样产品的运维团队等只需要维护和运维这一个产品就可以了,这个产品就可以提供给许多客户使用,而且产品的升级也变得方便。
对于我们云平台来说,如果我们不提供容器编排和监控报警解决方案的多租户实现,那么每个想要做这些事情的业务部门都要自己实现和维护这么一套东西,增加了业务部门的工作量的同时,从公司整体来看,也是增加了资源损耗。
多租户场景举例:
其实对于我们云平台来说,我们是已经实现了多租户功能的。我们的企业平台,有一个账号管理体系是用来管理租户的。我们的开放平台面向开发者,开发者就是租户。而通过我们的开放平台发布的服务都因此实现了多租户功能。
比如通过云平台发布的短信服务。短信服务是一个将发送短信的功能以API的形式提供给第三方开发者使用的服务,对短信服务来说,第三方开发者就是它的租户,如果它实现了多租户的功能,那么每一个调用短信服务的请求过来的时候它就可以区分这个请求是属于哪个租户的,才有办法做后续的事情(比如对第三方开发者根据短信调用量进行收费)。如果它要自己实现多租户的话,它需要自己开发一套面向第三方开发者的用户管理系统,而如果接入开放平台,因为开放平台已经实现了面向开发者的管理体系,所以短信服务自身就不需要实现多租户机制了。