@
virtuemartx 你说的很对!对于要去实现单个租户提出的需求确实是个问题,我是提出将客户的需求按标准功能来实现,通过所谓的“配置”或“开关”让客户自行选择是否使用该功能。毕竟在垂直平台中可能某些客户的需求正好也是其他客户想要的。。但就这提需求的这一点,就存在着很多弊端。。
一方面提需求的客户可能仅仅是平台的直接使用者——某个没有足够经验的行业运营小编,他们提的需求有时候质量真的很差也很天真,前两年产品经理也傻乎乎的客户提啥就安排去做啥,使得这产品质量逐步下降;
另一方面这种伪 saas 的模式是卖的平台产品!(你们见过几个 saas 是这样的?大多都是工具型的吧) 这么一来,工作量可就很大了,首先光业务需求上,不同地域地区客户的行业运营模式不一样,也就导致你这平台不能只支持一种运营模式,各种需求堆叠,都通过各种配置开关实现,所以现在整个系统内的配置开关非常多。。也就又导致了产品非常的臃肿,像 26 楼回复所说,由于目标客户群体少,后来连非社区门户类的个人自媒体客户也都接入进来,他们本身人力缺乏团队较小,这些客户看的这系统头都晕了。。
大多数客户需求都可以按标准功能做进这系统,但也有一些真的很定制化的功能,对于这些功能一开始我基本是拒绝的,毕竟考虑到后续的维护和管理成本,而领导那边、产品经理那边只顾着满足客户需求,不考虑的成本问题的。毕竟这奇葩的模式产品一旦卖了出去,后续的功能迭代、需求开发都是不收钱的,所以基本是个无底洞了,战略层面上没有任何策略的。
再再后来,还是因为这种卖平台的模式,客户需求已经不仅仅停留在了垂直行业业务层面上,客户会对技术层面提出需求,比如带宽想要多少、域名绑定与解析、域名证书的配置、CDN 线路等等问题,这类问题产品经理就懵逼了,不懂技术只会规划垂直业务,所以基本不会管这些需求,所以把这些需求扔给技术。。那么我就没办法了,做起了技术功能的规划和开发。。真是比较蛋疼的。。做成 IaaS 还是 PaaS 了。
---
说到测试,我们是没有技术测试的,单纯的人工端到端测试,做完了部署到测试环境中,产品经理用浏览器访问点点功能觉得没问题就算测试过了。在后面的几年里,我也尝试过写单元测试,但实际上业务端的开发基本是没时间写的,天天都是需求怎么会有时间,一般中小型企业很难有全面测试吧。所以目前只在一些 sdk 包中写一些单元测试,这已经是尽力了。
我们一开始是一个客户一台服务器+一套系统代码部署,需求是刚才所说的统一在代码中作为标准功能开发,受版本控制,所以不会单独给某个客户代码做修改。否则这管理起来太难了。但这种伪 saas 形式如今被我改造掉了,目标是向着一套代码包含多租户的形式进行改造,而且以前的单机部署方式在代码上线更新时非常非常的费时费力(使用的是 ansible ),所有租户做更新基本要个十几或几十分钟,甚至还会出错。现在用 k8s 对所有客户系统做一轮更新只要一两分钟。更为神奇的是,现在连运维岗的人都不需要了,由我拉着另一位还算可以的开发岗的同事兼做 k8s 运维了= =!