河南梦之网网络科技有限公司
梦之网科技出品
扫描关注梦之网科技微信公众账号

扫小程序码联系客服

创建一家互联网公司需要几个人?一个就够了-郑州小程序开发

梦之网科技2019-10-07文章动态

参与:高璇、张倩

创建一个互联网公司需要几个人?一位来自旧金山的软件工程师告诉我们:一个就够了。这位工程师创建了一个名为「Listen Notes」的播客搜索引擎,像谷歌一样可以方便地搜索海量播客资源。在这篇文章中,这位工程师向我们介绍了他创建「Listen Notes」用到的各种「无聊」技术。

创建一家互联网公司需要几个人?一个就够了-郑州小程序开发

Listen Notes 地址:https://www.listennotes.com/

创建一家互联网公司需要几个人?一个就够了-郑州小程序开发

Listen Notes 是一个播客搜索引擎和数据库。而 Listen Notes 背后的技术实际上毫无新意。没有 AI,没有深度学习,没有区块链。「任何说我必须使用 AI 的人都没有使用真正的 AI」,文章作者这样表示。

作者在前言中说:「阅读完本文后,读者应该能够复制我为 Listen Notes 构建的内容,或者轻松地实现类似的操作。你无需聘请很多工程师。请记住,当 Instagram 融了 5750 万美元并被 Facebook 以 10 亿美元收购时,他们只有 13 名员工——而且并非所有人都是工程师。Instagram 的故事发生在 2012 年初。现在是 2019 年了,一个小型工程团队甚至一个人创造一些有意义的东西比以往任何时候都有可能。」

这篇介绍了用很多「无聊」技术创建互联网产品的文章引起了很多网友的讨论,有人表示,技术本身就是一种手段,如果能够很好地实现产品的功能,即使是「无聊」的技术也会很棒。

也有网友表示,能够一个人同时掌握前端、数据库、搜索引擎、存储、集群、开发、源控制和权限管理等很多技术是非常难得的。

在下文中,作者从前端、后端、API 等几个角度介绍了自己用到的技术细节。

概述

让我们从 Listen Notes 项目的需求和功能说起。

Listen Notes 为终端用户做了两件事:

为播客听众提供了网站 ListenNotes.com。该网站可以提供搜索引擎、播客数据库、「稍后听」播放列表、音频剪辑以及「收听提醒」(当新播客中提及指定的关键字时,它会通知你)。

开发人员的播客搜索和目录 API。我们需要跟踪 API 使用情况,从付费用户处获取资金,进行客户支持等等。

一切都在 AWS 上运行。截至 2019 年 5 月 5 日有 20 台服务器在工作:

创建一家互联网公司需要几个人?一个就够了-郑州小程序开发

运行 Listen Notes 的服务器。

读者可以通过主机名轻松猜出每个服务器的任务。

production-web 为 ListenNotes.com 提供网络流量。

production-api 提供 api 流量。我们运行两个版本的 API(截至 2019 年 5 月 4 日),即 v1api(旧版本)和 v2api(新版本)。

production-db 运行 PostgreSQL(主服务器和副服务器)

production-es 运行 Elasticsearch 集群。

production-worker 运行离线处理任务,以使播客数据库始终保持最新状态,并提供一些神奇功能(例如搜索结果排名、剧集/播客推荐......)。

production-lb 是负载均衡器。为方便起见,我还在这台服务器上运行 Redis 和 RabbitMQ。我知道这不是最理想的方案。反正我不是完美的人:)

production-pangu 是类似生产的服务器,我有时会运行一次性脚本和测试更改。那「pangu」是什么意思?请自行搜索。

这些服务器大多数都可以水平扩展。这就是为什么我将它们命名为 production-something1,production-something2 ...... 将 production-something3 和 production-something4 再加入其中就非常容易了。

后端

整个后端是用 Django/Python3 编写的。操作系统是 Ubuntu。

使用 uWSGI 来提供网络流量。NGINX 放在 uWSGI 进程前面充当负载均衡器。

主要数据存储是 PostgreSQL,我有多年开发和运营经验——经过测试的技术很完善,所以我晚上能睡得着觉。Redis 用于缓存、统计数据等多个地方。Elasticsearch 用来索引播客和剧集并提供搜索查询,就像大多数无聊的企业一样。

Celery 用于离线处理。而 Celery Beat 用于调度任务,类似于 Cron 作业,但性能更佳。如果将来 Listen Notes 越来越受欢迎并且 Celery&Beat 导致一些扩展问题,我可能会转向我为前雇主做的两个项目:ndkale 和 ndscheduler。

Supervisord 用于每台服务器上的进程管理。

那 Docker / Kubernetes / serverless 怎么样?不。随着经验积累,你就会知道什么时候不要过度设计。实际上,我在 2014 年为我的前雇主做过一些早期的 Docker 工作,这对于一家市值十亿美元的中等规模创业公司来说是件好事,但对于一个小型创业公司来说可能有点「大炮打蚊子」了。

前端

网页前端主要使用 React+Redux+Webpack+ES。这是非常标准的。在部署到生产时,JS 包将上传到 Amazon S3 并通过 CloudFront 提供服务。

文章关键词
服务器
互联网公司
搜索引擎
elasticsearc