2018年终总结与展望 | 掘金年度征文

今天是2019年1月29号,立刻就回家过年了,趁春节放假前回顾一下2018,展望一下2019。php

总结2018

关于工做

18年团队转到 '空间中心' 这边的头一个月主要参与了 moca 服务迁移 的工做,moca 服务是一个运行了三四年之久的项目,由于历史缘由,致使服务器成本开销巨大,经过此次迁移咱们简化了以前冗杂的服务架构,减小了服务器及相应磁盘的使用量,为公司大程度的节省了服务器方面的开销。git

第二个月份投入到了 萌股 项目后端业务的研发工做。我在这个项目的研发中,大体分为两大块,基础框架 scaffold 的构建和发现模块及股票模块的开发。github

scaffold 主要基于 Yii2高级项目模版 进行的一系列工程化的封装,是团队以前许屡次基于 Yii2 框架开发中积累的沉淀,主要目的是为了更加高效、规范和工程化的知足项目开发的需求。在基础框架的构建中,首先是与目前大热的 docker 进行整合,实现了让本地、测试和正式所有都运行在相同的容器化环境中,并将 Dockerfile 落到基础框架中,打通Dev与Ops的 ‘隔阂’,让整个开发交付环节更加敏捷,并为以后的持续集成打下基础。而后就是对业务层这一方面进行的诸多工程化封装。好比在Request阶段,经过 JWTtimestamp 实现数据传输的安全性;实现具备识别前段缓存的数据提供器(FdbVersion Displaying Data);规范了 PHP-FIG 的代码规范,并增长代码规范检查和代码质量检查,等等。还有一个重要的就是对 Yii2 组件的封装,有些是直接集成到了基础框架中的,好比:集成 Adminlte 及 RBAC 的 Yii2 后台框架 yii2-desktop、kvstore存储的方式来对数据量大的状况下进行优化的 yii2-kvstore 、提供了灵活可编辑的 app hosts 数据的 yii2-app-devhosts 等等。基础框架的研发是我认为全年中最为重要的一个阶段,为 萌股 项目及以后的 慧珍 的开发奠基了基础。web

基础框架构建以后,就是进行 萌股 项目相关模块的开发了。首先发现模块,主要是对二次元资源(好比 番剧、二次元人物)的一些整合、展现。而后是股票模块,它和发现模块中二次元人物紧密相关,实现了股票投资、众筹上市、股价排行榜等一系列功能。算法

在这以后,我转投到了容器编排的相关工做中来。单纯的容器化在面对部署在多个主机时就显得无所适从了,为了超越单个容器管理,咱们必须转向编排工具。此次的容器编排对于我来讲是一个试错的实践,虽然最终往业务实施阶段失败了,可是此次实践也带来技术方面和思惟方面的成长,为以后业务飞速发展奠基了良好的开端。先说一下失败的缘由,主要是由于项目初期阶段不具有支撑 Kubernetes 容器编排方案的维护成本。一开始的部署方案,是直接在云服务器上本身搭建 Kubernetes 集群,而后就面临了部署方式复杂、不安全、不利于维护,对于新节点的部署也很浪费时间的问题,就想到了经过 ansible 来实现对部署方案的管理和应用,当时正好在一个《kubernetes技术群》里看到了 kubeasz 的项目,它经过Ansible脚本安装K8S集群,并不受国内网络环境影响,通过调研并测试没问题后,便肯定了这个部署方案,很快便部署完成,进入到了业务应用阶段,业务应用阶段面临的最大问题就是在 Kubernetes 下的持续集成了,最终实现了围绕Jenkins的一个持续集成方案(以下图)docker

没有持续多久在一次压力测试以后,致使了多台服务节点宕机,相关组件中止服务,并未能尽快恢复,让我意识到,目前阶段对于 Kubernetes 集群的维护难度与成本,固然也有解决方案,也是目前更推荐的一种方案,就是彻底使用相关云平台的 Kubernetes 服务,包括相关存储方案、网络方案等等。当时我也转移到了公司服务所在的云平台提供的 Kubernetes 服务,可是最终发现仍是不太稳定,当前业务还处在初期阶段,并不适用,最终放弃。后端

意识到目前阶段并不适合容器编排以后,就须要在目前的容器化架构(docker-compose编排)下实现持续集成了,在以前使用 Jenkins 进行持续集成中,发现了一些弊端,了解到目前公司使用的私有自建代码托管仓库 GitLab 也支持相关持续集成,进行调研以后发现可以解决以前的那些弊端,并能最大程度帮助目前容器化架构在多个主机下部署的问题。在实现 GitLab 下的持续集成过程当中,也遇到了解决了不少问题,好比经过在服务端维护版本库实现代码回滚、根据git的 short commit 实现容器镜像版本化、经过研发 phpclb 工具在腾讯云CLB下实现滚动部署的发布模式等等。最终推出了一个稳定的、契合目前阶段的持续集成方案。目前在该方案下(从10月份至今),已经进行了8400+次的持续集成(见下图)缓存

极大的加快了研发效率。安全

除去这些,还有一些根据业务的须要实现的 Yii2 组件和php扩展,好比提供了灵活可编辑的 app hosts 数据的 yii2-app-devhosts、websocket 扩展 yii2-websocket以及生成腾讯云游戏多媒体引擎提供鉴权密钥的php扩展 autherbuffer服务器

关于技术

先回顾一下去年的目标:

  • 读完《PHP 7内核剖析》 | 100%

  • 读完《C Primer Plus》 | 37%

  • 掌握编写 PHP 扩展的能力 | 40%

虽然读完了《PHP 7内核剖析》这本书,却没有学到太多的东西,主要缘由是由于对C语言掌握的不足致使,这也限制了编写 PHP 扩展的能力。而后就是工做当中带来的技术成长,在工做发现了不少不足,好比在容器编排过程当中发现对网络知识的不足、对服务器问题处理的不足等等,虽然经过 极客时间 进行了补足,但还须要继续学习。

展望2019

新的一年,新的开始。先在这里大体列一下对本身对工做新的指望。

对本身:

  • 读完《C Primer Plus》,增长编写 PHP 扩展的能力

  • 继续补足本身在网络和数据算法方面的薄弱面,学完 极客时间 的 《数据结构与算法之美》

  • 学习 go 语言

对工做:

  • 输出平台化技术产品

  • 完善日志收集和监控报警

  • 构建稳定的容器编排环境

掘金年度征文 | 2018 与个人技术之路 征文活动正在进行中......

相关文章
相关标签/搜索