InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

360 的开源软件使用以及开源文化构建经验

  • 2015-06-17
  • 本文字数:2184 字

    阅读完需:约 7 分钟

奇虎 360 企业安全从 2011 年到 2015 年,经历了几次服务端架构的变迁。从一开始的软件自研到最后的全部使用开源软件,360 企业安全部真切体会到了开源软件带来的好处。另外,360 也通过各种各样的方式来构建自己开放、透明、平等的企业文化。InfoQ 编辑采访了奇虎企业安全高级工程师温铭,听他分享了 360 内部的开源软件实践经验以及开源文化构建经验。同时,温铭还将在 ArchSummit 全球架构师峰会上分享题为《开源文化对360 天擎架构演进的影响》的演讲,敬请关注。

InfoQ:能分阶段介绍下 360 企业安全的服务端架构的演进情况吗?

温铭:360 企业安全服务端的架构演进主要分为三个阶段。
第一个阶段是以自己开发的组件为主。我们用 C++ 自己写了一个简易的 Web Server,并在此基础上面衍生的一系列工具。页面的开发,我们没有使用成熟的 PHP 框架,而是自己写了个路由。这一阶段产生的问题就是基础组件不稳定,跟不上产品功能的快速迭代,而不稳定的产品,企业用户也不能接受。开发付出了很多努力,但一直没有找到适当的节奏。

后面有几个开发的同事觉得要跳出这个糟糕的循环,于是就在新模块的开发中引入了 OpenResty 和 Yii,并和自研的组件并存。这样带来的明显好处是效率的提升,开发有精力来完成了前后端分离,QA 也从完全的黑盒测试中脱身,搭建了服务端的自动化测试和性能测试。这些改变为后面重构打下了坚实的基础。

在第三个阶段,我们重构了产品,并统一了服务端的技术架构,同时相关的功能组件全部换用成熟的开源软件搭建。比如我们使用 OpenResty 来搭建整个服务端,周边工具用 Python 和 Go 来完成,报表和数据分析采用 ElasticSearch。这样开发就可以更专注于产品功能实现和开源软件的深入学习,而不用担心基础组件的稳定性。

InfoQ:你提到,一开始的时候你们的开发人员都在自己『造轮子』,那这样的方式有什么问题?在自研和开源软件之间,你认为应该如何选择?

温铭:很多时候,『造轮子』的原因是开发人员没有找到合适的开源软件,或者在技术方面自视过高。盲目的自己从头开发组件,时间成本、稳定性以及后续的维护都是问题。我认为『造轮子』的前提是,现有的成熟开源软件不满足你的需求。比如 360 云查杀对性能要求非常高,而当时没有开源软件符合需求,所以我们就在 LevelDB 的基础上面开发自己的 Key-Value 数据库。而对于大部分的服务端开发来说,开源软件足以应付相关需求。

InfoQ:开源软件的选型上,你有什么好的经验吗?

温铭:现在开源软件发展非常快,新技术层出不穷,在技术选型的时候,你会面对很多的选择。不管使用什么开源软件,在服务端的架构层面,你都需要做到各个组件像乐高积木一样,没有耦合并且可以方便的进行更换。在你产品的第一个的版本里面,最好选择成熟稳定、自己团队熟悉的开源软件,而不是性能最好的,因为这时候你需要快速的出产品和快速迭代,性能并不是最重要的;在随后的版本中,你可以通过性能测试的各项数据,来决定使用哪个开源软件。
除了性能的考虑之外,开源软件自身的发展也需要考虑:对开发者是否友好、修复 bug 的速度、版本迭代的周期等。

InfoQ:开源软件的使用过程中,经常会涉及到需要修改开源软件的代码。那在内部版本和社区版本之间,你们是如何同步的,有什么好的经验吗?

温铭:360 企业安全服务端有一个特殊的产品需求,是其它产品的服务端开发不会遇到的,就是需要支持 Windows 平台。因为很多企业还是希望软件运行在 Windows 上面。所以我们会对一些开源软件进行修改,以增加对 Windows 平台的支持。我们刚开始的做法是下载源代码,然后修改,但造成的问题是没法快速跟进开源软件版本的更新,也没法把修改的代码回馈到社区。现在我们会 fork,然后把改动 pull request 向社区来回馈代码,同时要有完善的测试案例和文档,代码要符合软件本身的编码风格。

InfoQ:你怎么看开源文化?360 是如何构建开源文化的?

温铭:360 在 GitHub 上面开源了多个自己开发的软件,公司内部有技术评级以及定期的技术嘉年华,鼓励工程师主动分享技术并参与到开源软件中去。在技术团队中,透明和平等的文化,最适合各种技术的成长。我们团队有一个不成文的规定:AKA(all know all)。比如在技术选型上,我们会出一个大概的架构,然后发给所有开发讨论,由于我们是一个大杂烩的技术团队,有人说“PHP 是最好的语言”,有人是 Python 的粉丝,还有人推崇 Go,还有人坚守 Windows 平台,所以各种讨(chao)论(jia)后才确定最后的选型。

InfoQ:要使用开源软件,是不是需要团队成员对这些开源软件有足够的了解?

温铭:即使不去修改开源软件的代码,团队成员也需要对这些软件的内部实现有深入的了解,才能用到适合的场合以及做参数的调整。我们每周会有定期的技术分享和 code review,来保证团队每个人都知道团队使用了哪些技术,如何更好使用这些技术。

InfoQ:团队在参与开源软件方面,你有什么好的经验可以分享?

温铭:最重要的是要团队成员有主动性和热情参与其中。并不是贡献了 patch 才算参与到开源软件中,在实际的开发中解决了问题,总结分享出来,也是一种方式。我们团队正在 GitBook 上面写关于 OpenResty 和 ElasticSearch 的书,分享我们的一些实践。这也是一种参与开源的方式。

受访嘉宾介绍

温铭,一直在互联网安全公司从事高性能服务端的开发和架构,用各种技术手段打击木马传播和互联网欺诈。目前在奇虎用互联网技术帮助企业提高安全防护。

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2015-06-17 11:064120
用户头像

发布了 219 篇内容, 共 131.5 次阅读, 收获喜欢 188 次。

关注

评论

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

5G应用的实时决策

VoltDB

5G 物联网 工业互联网 技术分享

Go 与异步 IO - io_uring 的思考

IceberGu

Linux 异步IO io_uring Go 语言

Scrapy 源码剖析(四)Scrapy如何完成抓取任务?

Kaito

Python 爬虫 Scrapy 源码剖析

java安全编码指南之:文件和共享目录的安全性

程序那些事

代码规范 java安全 java安全编码指南 java编码 程序那些事

为什么 React Hooks 优于 HOCs(译)

西贝

Java 翻译 React Hooks HOC

老板下了死命令,要把日志系统切换到Logback

沉默王二

Java logback 日志系统

Redis还可以做哪些事?

Java旅途

redis

轻量型GPU应用首选 京东智联云推出NVIDIA vGPU实例

京东科技开发者

人工智能 gpu

从零实现一个动态表单设计(编辑)器

徐小夕

Java 编辑器 H5 Node React

Java-技术专题-时间工具类的使用方案

洛神灬殇

训练营第二周课程总结

爱码士

训练营

TCP/IP 基础知识总结

cxuan

后端 计算机网络 计算机

阿里二面惨败,痛定思痛狂刷1000+面试题,成功五面上岸滴滴(面经+面试题分享)

Java架构追梦

Java 架构 腾讯 面试 蚂蚁金服

元模型驱动(一)构建元模型ーGME入门

KaYa

DDD Kaya MDA GME MDD

训练营第二周作业

爱码士

【架构师训练营 1 期】第六周学习总结

诺乐

JAVA魅力之神奇的数组带给你不一样的乐趣

小Q

Java 学习 架构 面试 数组

元模型驱动(二)构建元模型ーGME构建分层模型

KaYa

DDD Kaya MDA GME MDD

面试官:讲一下缓存穿透、缓存雪崩和缓存击穿?

bigsai

redis 缓存穿透 缓存击穿 缓存雪崩

架构师训练营第 1 期第 7 周作业

业哥

【架构师训练营 1 期】第六周作业

诺乐

队列实现栈的3种方法,全都击败了100%的用户!

王磊

Java 算法和数据结构

1分钟教你如何整理 React 知识体系

Leo

学习 大前端 React

基于服务设计的线上展览

京东科技开发者

云安全

Flink State 误用之痛,你中招了吗?

Apache Flink

flink

丑陋的程序员

程序员陆通

程序员 职场 认知

酷睿i5-10600KF对标锐龙7 3700X,游戏表现领先且售价更香

E科讯

进“大厂”的故事

北风

职业规划 职业成长 大厂

给打工人熬一锅「毒」鸡汤

Java_若依框架教程

程序员 打工人 毒鸡汤

接口测试(apipost、jmeter和python脚本)

测试人生路

Python 接口测试 测试工具

网络直播打赏背后的套路:刺激用户不理智消费

石头IT视角

  • 扫码添加小助手
    领取最新资料包
360的开源软件使用以及开源文化构建经验_语言 & 开发_小盖_InfoQ精选文章