请问大家公司的微服务有多少种?多了的话怎么运维?
昨天看到 https://www.v2ex.com/t/711163
里面有个老哥说有一千多个微服务,惊了,不知道是一千多个服务实例还是一千多种服务。
我们公司有差不多一百种微服务,大半在 k8s 上,小半直接部署在 Tomcat 里。上线靠 jenkins 。 因为有些服务有构建先后次序的问题,所以构建要依次执行很耗时间。因为希望特定时间上线(比如中午 12 点 /夜里 12 点),所以要提前构建,到点再部署。这样每个服务有构建 /部署两个 Job,再加上顺序问题,每次上线涉及的服务一多那是鸡飞狗跳。
我搞了一个自动构建+模板渲染 yaml 的工具,算是极大降低了 k8s 服务的上线难度,预先写好要上线的服务列表,上线时一键执行。解决了两个问题:
- 极大的降低了上线时的心智消耗,几乎不给出错的可能性
- 通过模板渲染显著减少了不同服务的 yaml 差异。 虽然工具很好用,但我也有个疑惑:这种问题应该很多公司都会遇到,其他公司是怎么做的呢?总不会都是自己实现工具吧。
但是比较流行的 CICD 工具好像也不太合用。用中文搜了一下,一些国内的 K8s 管理方案主要是可视化。可视化感觉还是给新上手 k8s 的公司用的,跟 Jenkins 没本质区别。 另外有公司用推代码自动构建+手动部署的方式。这也不太适合我司:
- 我司有 N 个测试环境,但没有每个环境对应的独立分支
- 代码推送成功后不一定能构建成功(不同的服务会有构建先后次序的问题)
- 部署和构建是分开的,推代码之后不一定能立即部署