分享人:任浩杰,北纬科技信息安全工程师,北纬科技云效迁移DevOps的技术负责人。
背景
北纬科技成立于1997年,是一家致力于提供移动互联网先进产品和服务的移动互联网服务集成商。早期自主研发了私有PaaS平台(北纬应用引擎BWAE),后来由于公司转型及组织架构调整,逐步用云效+ACR+ACK替代自研应用引擎,实现持续部署、交付、减轻管理、维护及运维的压力。
问题及痛点
为什么放弃自研,转而拥抱Saas服务?
早期公司自研PaaS平台,历时较长。因PaaS平台自身的复杂性、技术发展的多变性、系统要求的稳定性的各类复合型要求,使平台无法及时迭代更新满足各类场景需求,更好地为业务发展服务。同时公司组织战略调整,人力资源重新分配,公司的自研平台面临比较大的维护压力和运维压力。因此公司技术战略也随之调整,将自建机房及服务全部迁移到阿里云上,同时调研腾讯、阿里、华为等商业化的DevOps平台,最终选择阿里云云效作为DevOps持续部署的平台。
相比于自研,云效平台缺少了企业的定制化、个性化,只能做到普适性,但是增加了平台的稳定性、健壮性、多样性,同时大大减少了人力、物力,减轻了运维的压力。
解决效果
使用云效后效果如下:
对比项目 | 原平台 | 云效平台 |
---|---|---|
性价比 | 低 | 高 |
维护难度 | 复杂 | 简单 |
构建时间 | 3分钟 | 3分钟 |
代码扫描 | 自主集成FindSecBugs | 添加安全扫描任务 |
人力 | 10 | 3 |
编写dockerfile | 基本不需要 | 默认模版,基本不需要修改 |
kubernetes部署文件 | 系统集成 | 需要编写deployemnt等文件 |
通知 | 无 | 钉钉 |
质量把控 | 固定人员固定节点 | 通过人工卡点自定义人员及节点 |
支持部署 | War、Jar、Node、Html,其他需要自定义镜像 | Java、Python、Go、Node、Html、C#、C、PHP |
迁移之路如何走?
经历过近3个月的云效使用调研之后,公司启动云效迁移项目,同时制定了以下三步走的迁移策略。
第一步:内部试点、发现问题、解决问题。
第二步:沉淀模版、梳理文档、规范流程。
第三步:全面迁移、分配新资源、回收旧资源。
在迁移中,对技术、成本、安全各方面进行不断优化。
1、技术优化
基础镜像优化:由于每次构建Java镜像会导致镜像体积过大,OpenJDK官方的镜像大小为488MB,如果每次构建的镜像都这么大的话,对网络、存储等的影响及费用都会比较大,因此我们采用分开构建的形式,基础镜像如JDK、PHP、GO、Nginx等镜像由运维人员维护,提供基础环境及k8s的主镜像。开发人员构建的镜像采用busybox镜像,该镜像仅有基础的linux功能,因此只有1.23MB,该镜像只添加程序构建的产物如可执行文件、jar包或者html文件等,作为InitContainer容器,在启动时将构建产物复制到基础镜像中。该方案大大缩小了docker镜像的大小和docker拉取镜像的网络开销。
流水线优化:基于一次构建,多次部署的思想,我们将构建和部署流水线做了分离,这样构建一次,开发、测试、生产可以多次部署,且部署的版本可以不同。
定制化不同的流水线模板,根据不同事业部,不同业务需求形式、技术开发特定的要求,制定符合各业务线的流水线模板。
不同的流水线模板
2、成本优化
经过了对企业应用部署的研究,我们在ACK集群上借助kubernetes提供的LimitRange的能力,对每一个命名空间做了一个基础容量的大小限制(CPU 0.5m,Memory 512Mi),而在应用的部署配置文件上为开发人员提供了设置cpu及memory的配置项,且提供了默认值。如果开发人员经过评估和开发环境、测试环境的验证,需要增加容量的,可以申请对该命名空间提高限制。一方面将一部分ops能力下放给developer,两一个方面,通过对资源的主动和被动调节,大大节省了成本,降低了原来自研平台上任意配置资源的问题。
同时通过云效的maven服务、代码管理服务,替代了原有平台搭建的代码管理服务器、maven服务器。不仅降低硬件成本资源,同时也降低维护此类服务器的人力成本。
3、安全优化
代码质量优化:得益于云效的代码扫描流水线中的代码扫描及安全扫描的任务插件,我们对于质量和安全的接入管理方便。
我们在流水线模版中引入了代码扫描及安全扫描,同时在生产环境加入了人工卡点的流程,作为审核,保证扫描结果符合要求。
代码扫描结果
代码扫描结果详细报告
代码安全:借助于云效的代码管理,将公司所有代码进行统一管理,根据不同事业部,不同业务线对代码进行分层、分组管理,并对代码组权限进行严格控制,减少代码作为公司重要资源泄露的风险。
同时通过云效提供的敏感信息扫描,及时发现硬编码等问题,提高代码安全质量。
代码库敏感信息检测
权限控制:我司对权限及流程有着严格的要求及制度。云效对于不同的产品提供了不同维度的权限,满足了“最少权限”的原则。以流水线为例,根据不同不同场景设置管理员、技术负责人、运维人员、开发人员不同的角色,更细粒度低管控流水线的权限。
流水线部分权限 | 管理员 | 各业务线技术负责人 | 运维人员 | 开发人员 |
---|---|---|---|---|
权限设置 | ● | |||
流水线管理(创建) | ● | ● | ● | |
流水线管理(管理) | ● | ● | ||
流水线管理(查看所有) | ● | ● | ● | |
服务授权管理(创建) | ● | ● | ● | |
主机组管理 | ● | ● | ||
流水线模板管理 | ● | ● | ||
变量值管理 | ● | ● | ● |
结语
北纬科技的DevOps转型之路,经历了从PaaS到SaaS的发展历程,也正应了软件发展的进程。SaaS也正成为现如今软件发展的趋势,当然任何事物都有自己的优势及不足,我们应该辩证的去看待问题,同时也要探索适合自身的解决方案。
以上内容是北纬科技在实施使用云效后的效果,希望能给各位同行带来一点帮助。感谢北纬科技团队对云效的信任和肯定,希望云效可以陪伴他们不断进步。
如果你也有故事要分享,请在评论区留言联系我们,一起打造10倍效能提升案例集。
欢迎大家使用云效,云原生时代新DevOps平台,通过云原生新技术和研发新模式,大幅提升研发效率。现云效公共云基础版不限人数0元使用。
点击下方链接体验云效DevOps全家桶!