对于初创公司来说,“完美的架构”是能让你明天推出产品的架构。 许多技术创始人陷入了“过度工程”的陷阱。他们甚至在拥有第一个客户之前就尝试构建像 Netflix 一样的[微服务4]架构。
结果:产品还没准备好,钱就用完了。
本指南重点关注初创公司的现实可扩展架构。如何快速构建而不产生无价的技术债务?
模块化整体架构
第一天就忘掉微服务吧。编排 20 个服务(Docker、[Kubernetes5、Service Mesh)的复杂性会降低你的生产力。
- 实践:构建模块化整体。
- 这是一个单一项目(一个 Git 存储库,一个部署)。
- 但是,在内部,代码被分成明确定义的文件夹(0、1、2)。
- 这些文件夹不能以随意的方式相互“导入”文件。
优点:开发和测试速度快。如果初创公司发展壮大,很容易“分离”3文件夹并将其变成单独的微服务,因为代码已经被隔离。
“无聊”的技术选择
初创公司喜欢新的和“炒作”的技术。不要对您的关键基础设施执行此操作。
- 使用“无聊”技术(Boring Technology):Postgres、Python、Node、Java。
- 为什么?:如果你在 Postgres 中遇到问题,Google 上有答案(2010 年就有人遇到过这个问题)。如果您对上个月发布的[数据库6“XptoDB”有问题,那就得靠你自己了。
- 招聘:聘请 PHP/Java 开发人员比聘请深奥语言的专家更容易、更便宜。
托管云 (PaaS)
不要浪费时间配置 Linux 服务器 (EC2)。
- 使用 Heroku、Vercel 或 Render 等服务。
- 您连接到 GitHub,他们会部署、配置 HTTPS 并扩展服务器。
- 它的成本比“纯”AWS 略高,但节省了 DevOps 工程师的工资。
“比例立方体”
考虑 3 个维度的尺度:
- X 轴(克隆):在负载均衡器后面旋转 monolith 的多个副本。 (简单,解决 90% 的问题)。
- Y轴(功能分离):打入[微服务8(仅当团队> 20人时才这样做)。
- Z 轴(分片):按客户划分[数据库9](例如:专用银行中的高级客户)。
结论
对于初创公司来说,可扩展架构是一种可以让您快速改变想法的架构。您的商业模式将会改变(枢轴)。如果你的架构太僵化,你就会破坏它。保持简单,使用现成的工具并专注于赚钱的代码(业务规则),而不是基础设施。
另请阅读
- [可扩展的软件架构 - 扩展的最佳实践10
- [可扩展的软件架构-小型团队的最佳实践11
- [可扩展的软件架构:如何构建可增长的系统12
- [应用中的微服务:移动分布式架构13
- [单体 vs 微服务:选择哪种架构14
- 【应用架构-企业最佳实践15
