写点什么

腾讯云海量社交网络业务下的 DevOps 架构应用实践

  • 2017-08-30
  • 本文字数:4125 字

    阅读完需:约 14 分钟

在 DevOps 的理念中,企业的 IT 价值链流转的速度越快,意味着企业的互联网产品的交付能力越强,这也意味着在同行业的竞争中,企业凭借 IT 能力的优势,能够收获更大的竞争优势。也因此,DevOps 框架的落地与实践,成为时下非常热门的话题。

以海量用户规模和社交网络业务著称腾讯公司,在多年前便开始着手的部署 DevOps。在前不久腾讯云 + 未来开发者专场,腾讯的资深工程师和架构师,通过 DevOps 敏捷开发工具集、DevOps 流水线应用实践、云端架构与部署、无服务器架构等主题内容介绍,详细讲解了腾讯海量业务下的 DevOps 架构探索与实践,InfoQ 将其中精彩内容做了整理,希望给更多人提供参考和借鉴。

腾讯云 DevOps 敏捷开发工具集

一般的软件产品开发,包含用户需求分析、架构设计、设计模型、编码、测试几个过程。而 DevOps,就是这些过程实现的纽带,通过开发运营的一体化,可以将软件开发流程无缝的衔接在一起。

为了顺利完成项目的实施,腾讯云开放了 TAPD(腾讯敏捷研发平台)、TGit(腾讯 Git 源代码管理)、CCI(持续集成服务)、SODA(游戏持续集成)、织云(云端运维)等 DevOps 系列工具集,通过这些平台,开发者可快速完成产品的交付与运维。

  • TAPD 是长期服务于腾讯自有业务的敏捷开发平台。自 2006 年腾讯推行敏捷开发开始,TAPD 在十年时间内服务了腾讯内部上千团队的敏捷研发,并梳理出迭代模型、大象模型、极速模型等三种典型研发模型。
  • TGit 是一款基于 Git 的代码管理工具。支撑了腾讯各个业务的代码的编写和代码的存储、积存、部署流程。TGit 支持多客户端支持,并能提供类 Github 的操作体验,支持在线代码检测与评论等。
  • CCI 持续集成服务是一款针对 Web 部的前端后台的数据集成的产品。目前,CCI 可以支持 JAVA,C++、PHP 等语言的构建,并能和 TGit、织云原生兼容。开发者可以将代码写在 TGit,又能非常方便的把代码拉到 CCI 上面去做构建,同时,CCI 还支持定时构建,以及代码提交时间触发构建功能。
  • 织云是源自于腾讯的企业级运维管理平台。亦被称为一站式新态企业运维平台,它支持公有云、私有云、混合云管理,能一键式运维操作,灵活高效。通过智能构建,织云已能实现无人工值守、多触发器支持和代码自动扫描等持续集成功能,整合开发与运维过程。

以上这些产品将陆续开放,感兴趣的读者可以登录腾讯云官网注册试用。同时,腾讯云 Devops 产品总监秦俊现场透露,腾讯云将在近期与微信团队合作推出一个新的功能,该功能依托腾讯云 DevOps 的体系建设,可帮助小程序开发者实现腾讯云帐号的开通、代码部署、代码的上传部署全流程。这项功能将于近期跟随新版小程序开发工具对开发者免费开放。

腾讯云 DevOps 流水线平台应用实践

前面说到了腾讯的 DevOps 工具集,那么,这些工具集在具体的开发流程上都起着怎样的作用呢?腾讯织云负责人梁定安从腾讯 DevOpsy 应用实践、应用架构的可运维性以及织云产品的部署实践三个角度做了详细的阐述。

腾讯云 DevOps 应用实践

如图以下为腾讯的 DevOps 流水线,开发人员录入需求,经过 TAPD 项目评审,分解成一个个的直接开发实现的特殊功能,存放在腾讯内部,进入到持续集成的阶段,做自动化的编译、集成、自动化测试、代码的近态扫描,如果有一些不合规范的代码,主干测试无法通过。这时候需要 CIS 解决问题,问题解决以后会形成一个制品库,和织云系统进行对接,织云系统拿到制品库,按照腾讯标准的发布、管理的方案,把制品、软件发布到生产环境,进而去做灰度测试,再上线的一个过程。腾讯的海量业务使用这套流水线系统可以轻松完成从需求设计、代码管理、开发测试、发布 & 运维的各阶段工作。

这其中,TAPD 支持敏捷项目管理,实现产品需求与开发分支关联;TGit 支持代码管理,通过 webhook 钩子触发持续集成系统的能力;CIS 负责自动化完成编译、测试等任务,以输出制品库:软件包或 docker 镜像;织云对接 CIS 获取制品,以自动化的方式完成业务的发布 / 变更任务。

应用架构的可运维性

对于互联网产品而言,发布仅仅只是开始,在持续为用户输出价值的运营过程,由运维团队和系统来保障服务的稳定可靠。梁定安认为要实现可运维性的过程可分为 4 个阶段:统一架构、运维规范、标准操作、运维自动化。

  • 统一框架:将互联网的业务架构抽象成为三层:接入层、逻辑层、数据层,框架化的引入,可以有效的降低开发的工作量,通过有限的编码即可实现快速业务功能需求。
  • 运维规范:组件可以将共性的服务统一化,如腾讯内部大量应用的软件路由服务,可以帮助实现负载均衡、名字服务、容错、过载保护、流量调度的功能特性。除了为业务解决了路由的难题,也使日常的运维管理变得更加简单高效。
  • 标准操作:将工作人员的操作标准化,避免因为岗位人员的流动而导致产品重构,造成重复造车现象的发生。
  • 运维自动化:自动化运维的方案,就是统一规划、标准化、配置化、自动化、监控,这里不能漏了监控。

通过虽以上可运维内容的统一规划与标准化,可以保障了业务架构有序的发展,架构的演变从千人千面进化成千人一面。然后结合框架与组件的非功能规范,使运维保障业务质量与效率的规划落实。

腾讯云织云的持续部署实践

随后,梁定安着重介绍了腾讯织云平台的部署实践。下图为腾讯织云功能的一览图,在织云平台中,将标准化的运维对象配置化,每个微服务集群在织云 CMDB 中被定义成不同的模块名。从统一规划、标准化、配置化、自动化到联动监控,用持续部署的流水线工具串行起来,用户将得到一个体系化的运维能力模型,基于此模型,运维团队能够全局规划持续部署的能力与工具系统。

以织云的自动化扩容流程为例,将原子运维工具或系统接口以运维的最优操作流程组织起来,自动化的完成扩容操作,并且保证每个步骤都会被严格执行到位,不会受个人的经验深浅或文档的新旧影响。从而解决运维团队“文档即过期,离职即消失”的难题。

云端架构规划与应用案例

如果说 Devops 是保障产品开发顺畅的通行证,那么,云端架构的规划就是产品顺利进行的指南针。一个好的架构规划,往往能够使产品在开发的过程中少踩很多“坑”。腾讯云架构师张兴华认为,企业在云端架构设计时一般面临以下几大架构痛点,并且根据这些痛点提出解决方案:

  • 第一,高可用挑战。如果产品在架构设计上或者在容灾方面考虑不周,将面临高可用的挑战。解决方案上可以利用云的资源做多地域的容灾,在架构层面可以进行不同层级的拆分,比如讲将核心服务和非核心服务进行分级,同时还可以一些做灰度或者迭代的改进。
  • 第二,性能瓶颈。在数据库的调用过程中,高并发的交互可能会导致数据库完全无法及时响应。解决方案可以根据需要推出不同的数据库版本或者针对不同的场景或业务类型,选择不同的云服务进行不同的优化。
  • 第三,数据库设计。自建或者自己维护自有的数据库是比较难的,企业需要提前做好业务上长期规划,提前做好业务分库、分表的设计。
  • 第四,安全。目前 DDos 攻击流量最新数据超过了 600G,抗 DDos 需要借助云服务未雨绸缪;同时在操作、容灾、数据、权限等安全层面都需要在架构上提前规划。

腾讯云架构规划案例实践

现场,张兴华以摩拜单车为例,详细解读了腾讯是如何帮助用户做架构规划的。摩拜今年年初从其他云迁到腾讯云,开始摩拜的架构包括流量相对比较小,架构也相对简单。但是这里有一个问题是在逻辑层没有做拆分,只做了单一 Region 的部署。随着业务的发展,这样的架构已经无法满足需求。

腾讯云对摩拜单车进行了整体架构优化,将整体安全接入摩拜架构体系,并在路由层及业务逻辑层进行了核心功能业务拆分,做到微服务化;在数据层面,实现了 Mongo 定制化优化,Mysql 性能定制优化,同时深度整合了腾讯云的云 API,构建了摩拜的 Devops 系统,快速稳步发展。在运营管理上,腾讯云给摩拜推出黑石 + 大数据的方案,黑石 +Docker 的解决方案,能够快速的去构建、部署和扩展,形成了一个比较通用的高可用架构设计。张兴华表示,对于快速成长企业来说,随着技术架构的演进,企业需要提前做业务的拆分与规划,支持高可用、可扩展,做到多地域双活与多活部署。

让云端开发更简单的无服务架构

在微服务还方兴未艾的时候,无服务架构就以其弹性伸缩、按需付费以及无维护等特点得到了很多开发者的青睐。腾讯架构平台部技术专家陈杰表示,无服务架构的核心理念就是给整个服务提供一种公共的架构,针对性解决服务的接入、安全、扩容、容灾、分布等一系列问题。

腾讯的无服务器架构包含两个部分组成,第一个是 FAAS(函数即服务),提供可计算的云服务,这是无服务器的核心部分。第二个是 BAAS(后端即服务),包括云对象存储、云数据库、云消息队列等。企业可以在云函数里面执行还可以访问各类的云服务,这样的话,云函数不仅是一种定制的计算,还可以作为整个云平台的融合器,大家可以把云函数加上后台服务当成一个有机的整体。

云函数价值主要体现在四个方面。1)简化架构,云函数是以函数粒度来组织的服务,是一种天生的微服务架构;2)简化开发,无需关注底层硬件配置、OS 等,只需撰写最核心业务逻辑,实现代码及服务;3)简化运维,对于云函数而言,无须关心服务器的运维和服务本身的配置,它又是一种天然的 Devops;4)是减少支出,云函数可以解决云主机 80% 以上的成本闲置的问题,因为它只有了请求才分配资源。

无服务架构 VS 传统开发模式

那么,无服务架构和传统开发模式项目,有哪些优劣呢?下图从架构设计、代码开发、代码调试等六个角度分析了这二者的收益或不足。

从以上对比不难看出,云函数的特点包括按需实时分配函数实例、函数实例扩缩容速度很快、按实际使用计费等,比较适合用于构建无状态微服务,对于有明显波峰波谷效应的服务,有明显的成本优势。但不太适合延时非常敏感(<20ms)或持续计算时间非常长(>5 分钟)的场景。目前,腾讯推出了 SCF 无服务器云函数,云函数会为大家准备一个免费额度包,如果是低频调用的服务,很大可能无须支付任何费用,感兴趣的开发者可以前往体验。

写在最后

DevOps 虽然火热,但它的落地却也并非是一蹴而就的,需要通过全局思考、统一规划,在反复实践中逐步改进和完善,最终才能根据不同的业务特性,提供一套完整体系化的运维解决方案。在腾讯多年的运营经验中,DevOps 虽是贯穿整个应用软件生命周期的,现在的发布完成依然并非终点。

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2017-08-30 19:002935
用户头像

发布了 24 篇内容, 共 99269 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

分布式任务批处理技术选型与实践

苏格拉格拉

分布式 批处理 分布式任务 数据分片 任务调度

细说Js中的this

hellocoder2029

JavaScript

六大招式,修炼极狐GitLab CI/CD “快” 字诀

极狐GitLab

DevOps CI/CD 持续交付 runner 极狐GitLab

什么是代理服务器?它有哪些分类?

wljslmz

服务器 网络技术 11月月更 代理服务器

Web3开发者指南,比较好用的 NFT API 服务推荐!

NFT Research

区块链 数据分析 NFT

从oracle到mysql模型转换的自动化实现

鲸品堂

语言 & 开发

分层架构最容易范的最昂贵错误

风铃架构日知录

分层架构 #java 服务层 封装业务逻辑

重磅|九科信息企业级超级自动化平台通过“信息系统安全等级保护三级认证”

九科Ninetech

Spring Boot「25」外部配置元数据

Samson

Java spring 学习笔记 spring-boot 11月月更

一年经验年初被裁面试1月有余无果,还遭前阿里面试官狂问八股,人麻了

程序员小毕

Java spring 程序员 面试 程序人生

理解Nodejs中的进程间通信

coder2028

node.js

知识经济时代,企业应该如何进行知识管理?

Baklib

知识管理

Java For Data Science

Mahipal_Nehra

java; data-science java client Java core Java static

用 nodejs 搭建脚手架

coder2028

node.js

Koordinator 1.0 正式发布:业界首个生产可用、面向规模场景的开源混部系统

阿里巴巴云原生

阿里云 云原生 Koordinator

手写vue-router核心原理

hellocoder2029

JavaScript

一步步带你设计MySQL索引数据结构

程序知音

Java MySQL 数据库 后端技术

python如何处理程序异常

芥末拌个饭吧

Python 11月月更

涛思数据杨攀:如何寻求产品、商业与技术的平衡

GGV

产品 技术 开发者 商业 SaaS

IDC MarketScape :百度安全位居NESaaS市场领导者位置

百度安全

安全 云安全

U-App移动统计算力升级!支持跨应用、多事件的打包计算

ABCNet:端到端的可训练框架的原理应用及优势对比

合合技术团队

人工智能 模型 端口 图片识别 文本识别

AntDB数据库与DSG强强联手,助力通信行业核心系统国产化

亚信AntDB数据库

aisware antdb AntDB数据库

K8s 有损发布问题探究

阿里巴巴云原生

阿里云 Kubernetes 云原生

技术新风口:超级App

FinFish

数字化转型 数字化 技术趋势 Gartner预测

SPL比SQL更难了还是更容易了?

石臻臻的杂货铺

sql SPL 11月月更

低代码平台适用于大中型企业吗?

力软低代码开发平台

数据驱动科研,清华大学中国新型城镇化研究院使用 ModelWhale 云端协同创新平台

ModelWhale

人工智能 新基建 云平台 数据科学 学科交叉

细说JavaScript闭包

hellocoder2029

JavaScript

一步步带你设计MySQL索引数据结构

程序知音

Java MySQL 数据库 编程 后端技术

阿里云丁宇:云原生激活应用构建新范式,Serverless奇点已来

阿里巴巴云原生

阿里云 Serverless 容器 RocketMQ 云原生

腾讯云海量社交网络业务下的DevOps架构应用实践_DevOps & 平台工程_江柳_InfoQ精选文章