2020 年年终总结

一晃一年又过去了,今年可真是魔幻的一年,口罩带了一年没能摘下来,美国疫情感染人数 1500 万。

上面这段话要是让去年的我看到了,没准都以为今年真的生化危机了hhh…

言归正传,从去年 6 月底入职,到现在有一年半了,这一年半学到的东西真的非常多,完全重塑了我的技术栈。现在我的整个技术栈,基本都是围绕着云原生这一块发展了。

今年也参加了几个技术沙龙,有些收获,但是没去年那么新奇了,主要是很多东西自己已经懂了hhh。大概有这么几个活动:

  1. 2019 年腾讯蓝鲸第5届运维技术沙龙:在深圳腾讯大厦参加的,点心和咖啡很棒,讲的东西里,腾讯自己分享的「研发运维一体化平台」比较有收获,我收藏了那一份 PPT
  2. Rancher - 企业云原生的探索与落地:去年参加 Rancher 的沙龙觉得很高大上,因为自己很多东西都不懂。但是今年来听,明显就感觉他们讲的很基础,对我没什么价值了。也侧面说明我确实进步了非常多哈哈。
  3. 2020 PyconChina 深圳场:额,也觉得没什么干货,好几个都是在推销自家的产品(Azure AI 平台和一个 Django 写的低代码平台),有个讲 Nix 包管理的大佬但是没讲好,后面我们就直接溜了…

另外就是,今年心血来潮买了四张 Live House 的演出票,体验下来觉得钱花得很值,给我充值了不少正能量。

  1. 景德镇文艺复兴《小歌行》:这是我超级喜欢的一个乐队,演出效果超棒!听到了完整的故事,而且见到了九三姑娘本人,太高兴了!
  2. 徐海俏 - 游离片刻:这位歌手我之前其实没接触过,但是听了下她的《空》发现很不错很帅气,就买了。但是整场下来感觉俏俏状态不佳,有点唱不动的感觉。中场问歌迷们有没有带野格酒,末了又问深圳现在能游泳么哈哈,是个很随性的歌手。后面可能还真游泳去了。
  3. 夏小虎 - 逝年:这是个民谣歌手,以前上大学的时候听过,只有吉他和人声,其实是有些伤感的歌。因为我最近状态很好,我去之前还担心氛围不适合我。然后夏小虎说开心最重要,带了个乐队来伴奏,架子鼓就是灵魂,整个演出都因鼓点而欢快了起来。效果也非常棒!
  4. 时光胶囊乐队:这也是一个国风后摇乐队,在一个深圳福田一个小酒吧「红糖罐上步店」演出的, 比较简陋,人也不多,就四五十人的样子(出乎意料)。但是演出效果很棒,《旅途》《忆长安》《磐石》都非常好听。尤其是在这样的场合唱《我不知道你的名字》,挺有感触的。

今年我的工作重点有这么几个:

  1. 重构及维护 CI/CD 代码,让它能在多个产品线上复用
  2. 云上环境管理:今年熟悉了阿里云这一套东西,并且用上了自动化工具对云上环境进行管理。
    • 一开始是使用 terraform,但是 terraform 的 hcl 语法不够灵活,最近切换到了 pulumi+python,不得不说真香。目前云上的资源及配置 95% 都完全用 pulumi 管理了(还剩大概 5% 因为各种原因,需要手动配置)。
  3. kubernetes云原生: 今年我在这个领域的进步最大,熟悉了 k8s/istio/flagger/vault/prometheus/helm/traefik 等等。不过目前这里面大部分工具还停留在「会用」的状态。
  4. 服务器虚拟化系统从 vSphere 切换到 PVE
    • VMware 的 vCenter 吃的资源太多,而且还不能自动扩缩容硬盘,Python SDK 也超难用。因此我在公司尝试使用 PVE 替换 vSphere 这一套,效果很不错。
    • PVE+pulumi/terraform+cloudinit 能实现自动化部署虚拟机,自动配置网络、账号及SSH密钥、自动扩缩容硬盘,非常方便!
    • 而且 PVE 不收费,去中心化,一套用下来舒服太多了。只是 pve+cloud-init 门槛稍微高一点, 需要一定时间去熟悉。
  5. CI/CD 系统:基于 Jenkins 的 CI/CD 在我司各种水土不服,小毛病不断。Jenkins 本身就存在单点故障,不适合云原生,加上 Jenkinsfile 有学习成本,而且不方便复用,我就想把 Jenkins 换掉。我在这一年里调研了大量的开源 CI/CD 工具,都各有不足。主要还是因为我们当下的 Jenkins 承载了太多的功能,已经是一个CI/CD、自动化测试、自动化运维平台了,另一方面公司后端的流水线还存在依赖关系,需要进行复杂的编排。
    • 目前我就找到 Argo Workflows 的功能很符合我们的需求,目前正在尝试迁移一部分功能到 Argo Workflows 试用。
    • 因为 argo 的 UI 和 jenkins 差别过大,暂定仍以 jenkins 为前端,通过 python 将任务分派给 argo 运行。这样 argo 对使用者而言是隐形的,用户体验基本上没区别。
  6. 杂事:修水电、修服务器、组装办公电脑、搬机房…
  1. Podman/Skopeo/Buildah/Kaniko 等技术进一步发展,正在逐渐蚕食 Docker 的地盘.
    1. kubernetes 已经弃用 docker-shim,直接对接 containerd,下一步应该是彻底切换到 CRI-O。
  2. Istio 1.5 合并为单体架构效果很明显,各微信公众号三天两头就讲服务网格,服务网格是毋庸置疑的未来
  3. 阿里云的 OAM 进一步发展,目前阿里基于 OAM 研发的 Kubevela 致力于封装 Kubernetes 的功能,让小白也能用上 Kubernetes。而这同时还能保留 k8s 完整的能力,值得期待。
  4. 云上安全越来越引起重视了,目前 CNCF 社区上容器安全相关的项目在快速发展。包括镜像安全/安全容器(kata containers)等。
  5. 使用 Kubernetes 来管理数据库已经是大趋势,毕竟成本优势太明显了。
    • 很多公司已经在使用 docker 运行数据库,毕竟性能没啥损失,就能方便很多。但是仍然手动搭建集群,也不使用分布式存储。
    • 目前好像只有大厂如阿里京东才有这个实力,使用 kubernetes 和分布式存储来跑数据库。容器化的分布式存储系统维护(如 ceph),其中的难点我目前还不是很清楚,不过无外乎性能、稳定性、故障恢复这些。
  1. Go 语言必须学起来,今年入门了两遍语法,但是没写过啥东西,又忘差不多了。
  2. 要进一步熟悉 k8s/istio/flagger/vault/prometheus/helm/traefik/caddy 这些工具,会用还不够,要深入底层。
  3. 深入学习计算机网络 + Linux 网络 + Kubernetes 网络!这非常重要。
  4. 学习 Podman/Docker 的底层原理,学习 katacontainers 等安全容器技术。
  5. 为 kubevela/dapr/knative 等云原生项目做一些贡献,要参与到开源中去。
  6. 掌握 Argo Workflows/tekton,将 CI/CD 搬到 k8s 上去。
  7. 学习设计模式
  8. 有机会的话,熟悉下分布式存储、分布式数据库。这方面我目前还相当欠缺。
  9. 学习 KVM 虚拟化

如果学(xian)有(de)余(dan)力(teng)的话,也可以考虑搞搞下面这几个:

  1. rust 语言:rust 通过 owner+lifetime 实现内存的智能管理,性能很高,而且编译器提示非常友好,值得一学。
  2. 机器学习/深度学习: 这个领域可是当下的大热门,可以用 python/julia 玩一玩,顺便补一补微积分线代概率论。。
  3. 《编程语言实现模式》:嗯,希望能自己造轮子,写些简单的 parser。
  4. elixir: ruby 语法+ erlang 并发模型(actor), 如果有时间的话,也可以玩玩,了解下原生分布式的函数式语言的特点。

回看了下去年的总结,发现我 go/c# 都没学多少,设计模式也没动,python 还在原地踏步hhh… 去年的展望很多都没实现。

不过云原生这一块倒是进步很快,总体很满意今年的成果哈哈~

明年加油!

相关内容