共计 1999 个字符,预计需要花费 5 分钟才能阅读完成。
对于软件研发团队而言,服务的稳定性是十分重要,它与生产经营、用户留存都密切相关。而 CODING 作为面向软件研发团队的研发合作治理平台,与客户的业务生产更是密不可分。如何为客户提供高可用、不间断的服务体验,如何多层面、多渠道来保障 CODING 自身的服务稳定性,成为了 CODING 倒退路线上不懈的谋求。
背靠腾讯云,充分利用云上能力
CODING 作为一站式云端开发平台,从诞生之初就成长在云端,充分利用腾讯云的能力为客户提供弹性牢靠的服务。比方,CODING 继续集成的编译池基于 CVM 进行架构,保障用户极速构建无需期待;制品库充分利用对象存储 COS 及 CDN 极速能力,为广大客户提供了寰球统一的拉取及响应。CODING 通过对云能力的充分利用,保障客户软件开发过程的牢靠。
谨严的公布流程,践行最佳实际
CODING 团队均匀每周进行上百次更新公布,以疾速响应客户需要。在频繁变更的场景下,为了防止变更引起的业务故障,CODING 团队从变更流程上进行了诸多保障措施。
CODING 提供 Testing 和 Staging 两个测试环境,Testing 环境由开发团队自行保护,Staging 环境由公司对立保护,与线上环境最为靠近。开发实现本地测试后,会进行 Testing 和 Staging 两轮验证,充分利用 CODING 继续集成提供的自动化测试能力,确保变更不会影响线上 P0 及 P1 级别的性能及流程。
验收通过后,该变更将灰度公布到生产环境,在灰度企业进行测试验收,验收通过后才会公布到线上环境。除生产环境之外,CODING 还进行了备用环境的部署,如果产生公布事变,可迅速切换至备用环境,保障服务可用,在生产环境变更验收通过后,才会更新备用环境。
持续性架构降级,要害服务保障
除了通过云的能力和流程标准确保 CODING 整体的可靠性之外,依据不同产品线的不同场景,也在架构设计上进行了高可用保障。
代码仓库
代码是软件研发企业的外围资产,客户的代码存储平安是 CODING 工作的重点。CODING 代码仓库通过在存储机器上为储存库创立多个正本,实现了存储冗余。同时在存储库正本之间建设了实时高效的同步机制,保障了存储库正本之间的一致性。在存储库感知机制上,CODING 代码仓库构建了一套存储库故障感知机制,一旦故障产生,则可能迅速进行故障转移从而能持续为存储库提供服务。
继续集成
稳固的构建环境是保障用户继续集成牢靠的重要一环。而实现稳固高效构建,不仅须要思考构建资源的无效利用和状态治理,还要保障其它依赖服务的稳定性。比方 CVM 在某个地区无奈创立构建机器时,会导致应用该地资源节点的用户无奈顺利构建,为了防备这个问题,CODING 继续集成采纳灵便的容灾策略,对构建节点池进行地区切换,对故障进行转移,确保构建的稳定性,实现服务的高可用。
继续部署
相较于传统的内网场景,SaaS 场景对继续部署提出了更高的要求。比方 SaaS 场景下,对大量集群资源进行动静更新,在集群资源数据宏大的根底上确保服务性能。
面对这样的挑战,在服务的交互上,CODING 继续部署重点保障公布服务的稳定性、可靠性,采纳断路器,申请重试算法,服务优雅敞开等技术,确保在高并发场景中服务更新用户无感知,进步服务的容错能力。在服务的扩大上,CODING 继续部署反对 HA 高可用拆分,同一服务可依据业务需要以及访问量,按性能拆分部署提供服务。另外,CODING 继续部署编排引擎反对分布式任务调度解决,解决了 SaaS 场景下高并发公布部署的性能瓶颈,为客户提供了疾速安全可靠的部署形式。
监控预警齐备,先一步发现问题
有防就有治,在运维上,CODING 建设了一套欠缺的故障预警与治理机制。为及时应答故障,CODING 基于 Prometheus 构建了服务监控预警系统,用户可根据不同的业务场景,通过运维方自定义监控数据的可视化和报警规定。一旦发现服务异样产生告警,告警信息可依据报警规定,第一工夫通过企业微信准确地推送至相干的组或集体,及时发现生产问题。
为晋升整体零碎稳定性以及各类异样故障的容错能力,CODING 还制订了故障演习规范定期演习,对于影响全站拜访的外围业务须保障每月进行至多一次故障演习,其它业务最长演习距离不得超过两个月,呈现演习后果不合乎预期时,应尽快输入改良打算并进行改良,随后进行新的演习以确认改良措施落地状况。在容错机制上 CODING 也进行了明确要求,如零碎外部单点故障,上游故障零碎都需具备主动发现和屏蔽谬误的能力;不能存在超时或者有限重试导致系统雪崩的状况;在服务异样时,业务须要有主动降级的计划。
在实现服务稳定性的路线上,CODING 进行了全方位的摸索。无论是云能力的构建、产品的打磨、运维机制的制订都充分体现了 CODING 对于晋升服务稳定性,切实晋升用户体验的思考与能力。将来,CODING 将一直寻求技术上的降级,场景上的冲破,致力将全栈、极致的开发体验带给每一位开发者。