LeanCloud,晚安

Posted on Jan 12, 2026

https://docs.leancloud.app/sdk/announcements/sunset-announcement/

LeanCloud 死了。它是一个 PaaS 平台,提供如云数据库、云 FaaS、邮件等功能。我和 LeanCloud 的渊源已有 10 年之久。

LeanCloud 是我用的第一个 PaaS 平台。当时是 2016 年,我正在开发 Android app。不知道是从哪里听说了 LeanCloud 这个平台。彼时我完全不会后端开发,更不懂什么服务器什么域名,遂立即被它好看的网页以及低廉的价格吸引。因此所有后端需求都是使用 LeanCloud 完成的。

从一开始我使用的是它的在线数据库服务。当时我正在开发一个名为《向上兼容》的 Xposed 模块,需要添加一个自动检测更新的功能。其具体代码已不可考,但我清晰记得那是一个 2016 的晚上,我在北京的家里,跟着文档中的示例,独自摸索那些 AVObject 的 SDK API,然后用云数据库(只有一行记录)做了一个更新检测。当时 12 岁的我正在兴致勃勃地给父母演示:在电脑上修改后端数据,手机即可检测到更新。

还记得,当时因为是从文档中抄的代码,我很长一段时间都只会用那个 Callback 的调用形式。那是 2016 年一个白天,我独自坐在客厅,对着自己写出的回调地狱感到无比绝望。当时完全不知道如何优雅地多次调用 API。直到一次偶然发现了可以直接同步调用,并自己 catch exception,才豁然开朗。

那个时候,我也不知道怎么正确地取消请求。还记得 2016 某一天晚上在楼下散步,一边走一边看着用户(或是自动)反馈上来的 Crash report,里面有很多在用户点击返回,关闭 Activity 后,后台请求执行完毕调用 Callback,然后因为状态不对造成的 Null pointer exception 或 Context 相关 exception。从此,我学会了后台请求不能置之不理。

在随后的几年里,LeanCloud 陪伴了我很久。不管是开发《罗马地图》,还是《Dir》,都使用 LeanCloud 作为后端。

还记得 2017 年有一天,我正在摸索自学 Java servlet。使用它的发邮件功能,结合网上复制的 Java 发邮件代码,成功调用 API 给自己发送了一封验证邮件。代码运行成功后我便出门了。在出租车上对着自己的邮件兴奋不已。

我还尝试了很久它的 FaaS 功能。具体来说,我可以用 Java 开发一个 WAR 包,然后上传上去,它便可以提供 API。然而这并不是一个很好用的功能。除了资费较贵,Java 在它云端环境的启动时间也异常地长,导致很容易破产。不过那是我首次知道 stdout 和 stderr 的概念,因为其 FaaS 后端可以选择查看 stdout 或 stderr 输出。

离开 LeanCloud 是 2018 到 2019 年。当时我已经学会私用 Vert.x 自行开发后端服务,同时也已经运维 Linux 服务器两三年了。我逐渐发现在客户端中耦合大量的云 SQL SDK 并不是一件好事,应当使用自己的 API。于是,我在 2018 年中旬便开始策划把《Dir》中用户上传的垃圾清理规则(存储在 LeanCloud SQL 中)导出到自己的服务里。最终,这件事在 2018 年底到 2019 年初的某个时间完成。我终于不再依赖第三方 PaaS 了。

LeanCloud 这个名字,在这些年早已被我埋入了记忆的尘埃中。若不是听闻其关服,或许我都不会想起来。也的确,这些年随着云服务的发展,或许已经没有人会去用它了吧。

那么,晚安。谢谢你勾起了我那段久远而美好的回忆。