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

回顾2018年,作者参与了moca服务迁移,简化服务架构,节省成本;研发萌股项目,构建Yii2基础框架,实现工程化封装;尝试容器编排,虽未成功,但为后续业务奠定基础。展望2019,计划提升个人技能,完善日志监控,构建稳定容器环境。

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

总结2018

关于工作

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

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

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 等等。基础框架的研发是我认为整年中最为重要的一个阶段,为 萌股 项目及之后的 慧珍 的开发奠定了基础。

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

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

没有持续多久在一次压力测试之后,导致了多台服务节点宕机,相关组件停止服务,并未能尽快恢复,让我意识到,目前阶段对于 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 与我的技术之路 征文活动正在进行中......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值