介绍
大家好,我是 WcaleNieWolny - Capgo的首席软件工程师。
在过去的8个月里,我一直在开发" 组织系统",并且截至4月14日,我很高兴地宣布该系统已经完成了 🎉 🎊
经过8个月的努力,所有Capgo的部分都已开放给组织成员。这包括:
- 应用
- 统计
- billing
- 完整的CLI支持
- 还有很多更多的功能!
到达这里并不是一件容易的事;系统有3个重大修订。
组织v1
开始时,情况很糟糕…当时,我刚刚加入项目2周后就开始工作。 当时,我对代码库几乎一无所知,也没有更大的想法来实现这个功能。
这导致了实现最hacky的解决方案,只支持访问应用、频道和版本。 它甚至不允许被邀请的用户访问统计数据。
然后我等待了Martin的审查。 我等待了,等待了,但没有什么真正的发生。 3个月后,我决定回到这个问题并修复所有的冲突。 我也决定测试,这证明是一个很好的想法。 没什么意外,hacky的解决方案完全失败了。 在那一刻,我决定修复所有的bug并编写一个广泛的E2E测试。 我不得不与非常破碎的code和过去的我做出的很多坏决定一起工作,但经过2个艰难的周,我终于使它正常工作。
这并不意味着它是完美的。 组织的拥有者仍然有比甚至最高被邀请的用户更多的访问权限。 用户体验也相当糟糕。 被邀请的用户甚至不能看到应用统计数据、管理账单和CLI仅限上传。
尽管存在所有这些挑战,Martin已经审查了PR,并在一周后将其推入生产环境。
组织v2
组织系统在所有挑战中仍然运作良好。 用户正在使用它,并且它真正推动了整个项目的进展。 然而,我仍然必须:
- 修复 行级安全
- 支持整个CLI
- 确保管理员用户具有与拥有者相同的访问权限
之后 经过大量的讨论 与马丁一起,我们决定最好的方法是重写整个安全规则,并将所有资源所有权转移到组织中,而不是用户。 这将使与新组织系统的集成更容易,并且也将移除大量的遗留code。
编写新的RLScode非常繁琐,但经过一周半的时间,整个迁移就准备好了。
这次,我们决定不编写E2E测试,这意味着我们必须手动测试。经过3次非常详尽的电话会议,马丁和我终于决定推送到生产环境并希望它会顺利。
然而,它并没有… Turns out我破坏了用户注册,新用户无法创建账户😅。
在一场快速的恐慌电话后,我迅速推送了一些更改到生产环境,然后就睡了。然而,我的更改只会带来更多问题😰。
我醒来后,我发现用户有很多空的组织。这不是应该发生的,因为每个用户只应该有一个组织。经过一些时间的思考,我终于找到了移除所有重复的空组织的方法,除了那以外,其他更改都顺利进行了。
组织v3
即使如此,这仍然不足够。还缺少一个巨大的组件——计费。
目前只有拥有者才能管理账单。这导致了一些有趣的问题,其中用户购买了一个计划,认为他是在为组织购买。 我们快速修复了这个问题,手动解决了它,这时我们决定这个问题是不可接受的
迁移过程相对顺利。花了一个星期的时间,但与V1和V2相比,确实不是很难 🚀
组织v4 - 未来
经过了这么多的努力,我想现在是时候专注于其他事情了 😎
这不是容易的,但我学到了很多,capgo获得了一个非常棒且重要的功能 我仍然需要废弃旧的函数,改善Web应用用户体验,监控BUG, 但这个系统中应该不会有任何重大变化
感谢您的阅读 🚀