我的 2024 年度技术总结
“初冬的阳光穿过泠泠淙淙的树叶, 深浅不一的绿映着金黄的脉络, 一阵风吹过, 晃的让窝在暖气屋里打盹的人也高兴起来”这是我年前写的小诗,如今已是腊月,虽然在我记忆中的大部分日子里,窗外的阳光依旧耀眼,但慕然抬头望去,灰色的枝桠上如今只零散挂着几片棕叶,便知道年关将近,这一年又过去了。
这一年完成了一些放在之前我认为不可能完成的事情,比如基于廉价小机构建跨云 Kubernetes 集群,通过完善的 GitOps 和 Observability 投入生产,比如接入 VW 车联网数据并整合到自己的系统,比如在多个自己的 Flutter 应用中实现了超级终端系统,比如在 LLM 辅助的情况下快速开发、部署和上线了一套基于 mobx 和 MUI 的 TypeScript,基于 SQLite 的 Spring Boot Kotlin 工程项目。
此外,我距离让自己的软件和服务运行在自己每一块智能屏幕上的目标更近了一步,这一年征服了 Android 智能音箱,Apple Watch 手表和 CarPlay 车载屏幕,此外为承载个人系统平台的 Flutter 应用提供了完整的 Windows 和 macOS 桌面端支持。
具体而言,对于 Web 前端,完善了对 JavaScript 和其 Browser API 的理解,扩充了开发工具库:Vite 构建工具, MUI UI 框架, Astro 开发框架和 mobx 响应式系统,现在可以熟练的使用 TypeScript 开发现代 React.js 工程,包括 SPA、SSG 和 SSR、小程序应用和 Bun.js 脚本。
对于客户端,为个人服务平台的 Flutter 应用添加了数个模块,包括车载、虚机管理、备忘录管理、Docker 镜像和服务管理、备份管理、故事系统、追踪系统等;新增加了 Android 音箱和 CarPlay 支持;此外,为多个维护期的 Flutter 项目增加了 riverpod、go_router 和 flutter_animate 响应式系统、现代路由和动画支持;此外,基于 clj-boot、Swing 和 seesaw 实现了一键分发、动态下载和解释执行的 Java GUI 应用。最后,探索了 WatchKit 并上线自己的 Watch OS 应用。
对于服务端,深入研究了 Clojure Runtime 和 Luminus Framework,并将 Clojure/Script 项目迁移到 VS Code 和 clj-kondo;深入研究了 Spring Data JDBC 和 Mybatis,基于 SQLite、Kotlin 和 Gradle 完成了首个完整的现代 Spring Boot 项目。此外由于整体微服务平台向 Kubernetes 迁移的完成,探索和学习了 Spring Cloud 以及 Spring Cloud Alibaba 的熔断、限流、网关、同步和异步通信等组件;此外对 Kubernetes 云原生可观测平台进行了深入研究,包括 Prometheus,Grafana,Rancher,Loki,meiliSearch 等,并将其应用于生产。此外,对 Istio 微服务治理也进行了研究和学习,但没有投入生产。最后,对于 Rust 和 Actix 进行了研究,并基于 Actix 构建了数个微服务组件投入生产。
总的来说,今年的技术探索和实施以深化现有编程语言生态、框架和工具为主,在自下而上开发模式的基础上增添了很多自上而下的思想,逐步接轨到社区现代方案,享受社区工具生态,同时保留和验证了自下而上开发的敏捷性价值。
最后谈谈今年自己读的几本书。社会心理学方面,我从《思考:快与慢》上收益颇多,经过长期的思考和内省,这本书极大的改变了我的认知习惯,以至于我的 “MBTI”发生了翻天覆地的变化 —— 取得了几乎所有维度完全居中的“无特性”人格。宏观社会学方面,《国家为什么会失败》这本书给了我很大的震撼。技术方面,云原生领域的《云原生模式》我也爱不释手,很多从业人员觉得这本书干货不多,过于肤浅,但我想只有真正经历过那些场景、需求的变更和问题,才可能对 Spring 首席架构师的文字产生共鸣吧。最后,马伯庸的几本小说,《太白金星有点难》、《食南之徒》、《长安的荔枝》我也都爱不释手。