timzaak / blog

8 stars 1 forks source link

IT公司软件基础设施 #49

Closed timzaak closed 4 years ago

timzaak commented 5 years ago

互联网公司创建初期,IT 的软件基础设施要有一个从0到1的过程,中间会涉及很多种类软件的选型。最近我调研了一番,将调研的结果汇集到本篇。方便参考。

人员管理

推荐 keycloak, 其优势如下:

  1. 数据存储 支持 postgres / mysql 等
  2. UI 友好,支持主题定制,操作简单
  3. 支持 OpenId Connect, OAuth 2.0, SAML 2.0 等协议,拥有多个Adapter,java 编写,开源,扩展性强
  4. 可对接 LDAP, Active Directory, KerberOS 等。
  5. 主流服务可通过插件等对接
  6. 文档十分丰富

公司内部DNS

推荐 CoreDNS, 其优势如下:

  1. 插件化,配置简单
  2. 可将相关配置无缝移植到 K8S 上

代码仓库

这里有两个方向,一个是第三方托管,另一个是自己部署一套。自己部署的有 phabricator, gitlab 可选,国内第三方托管的有 码云/CODING 之流,如何选择要看具体情况。 另外,以上代码仓库都各自捆绑了自己的工具生态,每个工具生态的侧重点也不一样。例如 phabricator 会有 wiki, code review, dashboards 等协作工具,gitlab 则对应着 auto devops 的集成。

如果开支资源真是十分稀缺,建议使用 phabricator, 协作工具都省了。

容器编排

虽然我目前使用的是 Rancher 1.6 + Cattle,但强烈推荐 Rancher 2.x + k8s, 现在部署 k8s 现在变得十分简单,各大云厂商也提供了一键部署 k8s 功能,10 分钟部署一套 10 台机子 k8s 集群不是梦,云厂商也开发了各种 k8s 定制化插件,性能已经不是问题,而为什么要搭配上 Rancher 呢,是因为可以在 UI 上完成大部分 k8s 操作, 还提供了 监控/ CICD 等解决方案。减少使用 k8s 的痛苦指数。使用教程 2019-04-03至2019-05-29 视频 讲的十分清晰,方便入门。

在决定使用容器编排之前,需要考量一下成本问题,一个最基础的线上 k8s 环境,不算业务服务部署, master节点 3 2核4G内存40G硬盘, CICD/监控/日志收集 worker节点 3 2核6G内存100G硬盘, 一年至少 1.2w 的支出。再加上测试、开发环境,往少了说,怎么也得2.5W 吧。

多补充一句,现在的大厂有直接部署 docker 镜像的方案,不需要 k8s 来编排, 成本上会低一些,具体的选择需要自己判定。

CI/CD

这方面可选择的太多,除去付费方案不说,gitlab/jenkins 足够解决大部分问题,都支持和 keycloak 集成、Pipeline 等。

OA

钉钉,打卡、审批等都做的很精细,扩展性也Ok,但问题是,权限授权走的不是 openID、SAML 等标准协议(中国特色),所以还是需要 keyCloak 来处理一下。

邮箱

钉钉有个 50 个名额的企业免费邮箱,其它厂也有各自的免费名额,实际价格一定要电话联系其销售,会比写在官网上的便宜不少。但是一旦超了,那价格... 我们直接切换到了付费的邮箱,2年买四年,再打对折。

自己搭建免费邮箱,可使用 tomav/docker-mailserver

协作工具

这个太多了,每一个上的了台面的工具都有对公司内部如何协作的理解。然后在此基础上各自演绎,无法给出推荐。

公有云的选择

国内头部厂商现在已经从基本的计算存储带宽资源提供商,变成了服务提供商,产品矩阵强大,二三线被甩的远远的。相应的,价格也贵。

二三线的厂商有很多做私有云, 公有云基本服务还行,性能说得过去,高级一点的产品就有可能存在很多和预期不一致的东西,在使用之前,一定要做好测试,看看能不能达标。相对的,二三线厂商价格便宜,人工服务跟得上,即使你是小公司,也有可能配个一对一的服务人员。

另外,每个厂商的实际价格,要多找销售沟通沟通,九折的折扣是极有可能拿到手的。

timzaak commented 4 years ago

实际情况

公司真开了。我们这边的实际情况是:

人员管理/代码仓库/协作工具/OA/邮箱

我们用的 码云, 第一年 999 元,如果是自建的话,光服务器成本 也差不多是这个数,更不用说维护和升级了。 由于 码云 、 云平台等 不支持 keycloak。实际上就没用了。

用钉钉作为IM协作工具,钉钉上有不少财务人员能用到的软件;飞书,在公司开张的时候,ISV 还比较缺乏,所以放弃掉了。邮箱就是钉钉提供的免费51账号版本。

容器编排

UK8S(ucloud 提供的k8s)+ Rancher, Rancher 提供的UI界面极大降低了门槛,k8s 的权限管理省了我不少时间。日常使用上,需要花费一些时间去搭建 免费 https provider,内外网 ingress 等,和其他方案相比,多花 3台 master 2C4G + 1台2C6G 的钱,还是十分值的。

CI/CD

用了 Jenkins,不过由于代码仓库是外网,没有做到自动触发cicd,需要手工触发。

公有云

UCloud,打折,够用。

网络打通

由于我们办公室的IP是动态的,所以使用了 UCloud 提供的 accessgw,以旁路由的方式来解决。公司外面链接 UCloud 的话,用的是IPSec,一般情况,IPSec 是关闭的。

timzaak commented 4 years ago

网络打通

由于远程办公,使用OpenVPN为主。 想尝试 wireguard, 估计是以后了,内核要求高。

协作工具

还是Gitee,但其实我更爱 Notion(Notion 需要翻墙), Appflow是 Notions 开源版本

timzaak commented 3 years ago

63