随着互联⽹企业为了应对⽤户规模的快速扩张以及⽤户体验的不断提升,系统架构由单体式应⽤逐步转向了微服务架构,并往往会基于DevOps中设计的工具和思想,搭建⼀整套覆盖持续集成、资源管理、应⽤监控等核⼼功能的运维平台,从⽽在技术上有效地⽀撑了互联⽹思维中的快速迭代等特征。
回顾
本次学术沙龙座无虚席,在王晔老师简单的开场白之后,来自数据学院的工程师张琰彬老师、硕士研究生范泽秋、陈子鑫、山璐旻同学,分别就水杉在线DevOps的管理实践、微服务架构及其应用、DevOps在数据管理平台开发中的实践、化工材料行业数据平台的设计与实现四个方面进行了精彩的分享报告。
报告内容
张琰彬老师的分享内容分为认识篇和实践篇。在认识篇的部分,张琰彬老师首先从什么是一个好的工程项目的问题入手,引发了同学的讨论,随之引出了文档管理和代码管理这两个关键词。张老师接着介绍了 DevOps 的基本概念,同时提出了一个 PDCA 的循环链条,即计划、执行、检查和处理这四个概念,接着详细说明了 DevOps 对于这个循环链条的执行过程和运行机制。到了实践篇的部分,张老师首先提出了一个 DevOps 能力自检的说明,将 DevOps 的执行分为了五个级别,从初始级到最高的卓越级,清晰易懂的解释了不同等级的 DevOps 所表示的含义。张琰彬老师接着还对 DevOps 工具选型与实践做了更加详细的说明,让同学们对正确合理的使用相关工具来做 DevOps 实践有了深入的了解。最后,张琰彬老师还对水杉 DevOps 计划实践路线图做了一些阐述。
范泽秋同学首先对微服务架构的出现及历史做了简单介绍,并表示主要经历了单体应用架构、第一代面向服务架构、微服务架构这样三个过程。然后范泽秋同学用简单的项目例子对单体式架构做了较为详细的介绍,并提出单体式架构存在持续部署困难、团队协作开发成本高、系统高可用性差、线上发布慢等问题。随后,范泽秋同学引出服务化的概念,并简略介绍了第一代面向服务架构,之后引出了微服务架构,并通过研究生系统的架构示例做了详细介绍。紧接着,范泽秋同学通过对比第一代面向服务架构和微服务架构,提出微服务架构存在服务拆分更细、服务独立部署、服务器独立维护、服务治理要求高的主要特点。最后,范泽秋同学简要介绍了常用的微服务框架,主要有Dubbo、Spring Cloud与实验室项目正在使用的k8s。
陈子鑫同学首先对 DevOps 的相关概念进行了介绍,随后对 DevOps 在工业上的实践进行了阐述,详细介绍了持续集成和持续交付在工业上的应用。陈子鑫同学接着对 DevOps 中需要用到的相关开源工具进行了介绍,特别是 Gitlab、Jenkins以及 Docker 这三个工具,将源码管理、持续集成和持续部署串联了起来。然后,陈子鑫同学结合自己所在实验室的应用场景,对 DevOps 的实际应用做了详细具体的介绍。在源码管理部分,陈子鑫同学详细说明了代码管理的整个流程;在持续集成部分,又对 Jenkins 的具体配置作了说明;在讲到持续部署部分时,通过流程图的方式介绍了实验室里 DevOps 的全流程实践。最后,陈子鑫同学还对自动化代码检测工具的使用做了简单的介绍。
山璐旻同学先就化工材料行业数据平台的一些研究背景和难点做出了介绍,随后介绍了数据平台中所包含的一些主要的功能并且详细介绍了自己所负责的三个主要功能模块。第一个是数据体系架构,分为了动态模式下的数据存储方案,数据保障体系以及数据审批流程,详细介绍了所面临的问题、设计初衷以及如何设计,其次介绍了在访问控制模型中的一些国内外的研究现状以及两个主要方向,并由此引出数据平台中具体的访问控制模型,并对其进行了详细介绍。最后山璐旻同学详细介绍了ELK框架的组成,并对于FileBeats以及Logstash优缺点做了明确的介绍,并展示了具体应用的截图。
讨论
本次沙龙气氛活跃,同学们在认真学习报告内容之后,还结合自己的思考提出了一些高质量的问题,并进行了严谨的讨论。比如对于大家很感兴趣的水杉计划,大家讨论了如何进行需求的抽象与细化,如何预估对应的工作量与时间,如何形成小的issue等问题。之后,同学们又对使用k8s来管理微服务系统的必要性,以及关于维护一个微服务系统时如何搭建自己的云平台等细节问题进行了一定探讨。
总结
在这场报告中,同学们了解了DevOps以及微服务的概念,并通过实际的案例深入理解到微服务、持续集成和持续交付在工业上的应用,同时也初步了解到Jenkins以及k8s的一些使用以及具体配置。虽然这些技术只是现有开发技术中的一个缩影,但为我们提供了很多的思路,也期待同学们可以在此基础上更多的关注其后续发展,并对其进行更深入的了解和使用。
文案:范泽秋、陈子鑫、山璐旻
摄影:顾建树、陈惠敏
排版:邓靖蕾