创建一家互联网公司需要几个人?一个就够了
选自listennotes.com
创建一个互联网公司需要几个人?一位来自旧金山的软件工程师告诉我们:一个就够了。这位工程师创建了一个名为「Listen Notes」的播客搜索引擎,像谷歌一样可以方便地搜索海量播客资源。在这篇文章中,这位工程师向我们介绍了他创建「Listen Notes」用到的各种「无聊」技术。
Listen Notes 地址:https://www.listennotes.com/
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」是什么意思?请自行搜索。
后端
./deploy.sh production HEAD web
环境:生产或分段;
listennotes repo 版本:HEAD 表示「仅部署最新版本」。如果指定了 git commit 的 SHA,那么它将部署特定版本的代码——当我需要从错误的部署撤回时,这特别有用;
服务器类型:web、worker、api 或所有服务器。我不必一次部署到所有服务器。有时我会对 Javascript 代码进行修改,然后我只需要部署到 Web,而无需涉及 api 或 worker。
在 Macbook Pro 上,如果要部署到 Web 服务器,则构建 Javascript 包并上传到 S3;
在目标服务器上,git 将 listennotes repo 克隆到一个以时间戳命名的文件夹,检查特定版本,然后安装新的 Python 依赖项(如果有的话);
在目标服务器上,将符号链接切换到上述时间戳命名文件夹,并通过 supervisorctl 重新启动服务器。
iTerm2 和 tmux 用于获取终端内容。
Notion 用于 TODO 列表、维基、记笔记和设计文档......
G Suite 用于 @listennotes.com 电子邮件帐户、日历和其他 Google 服务。
MailChimp 发送每月电子邮件简报。
Amazon SES 用于发送交易邮件和营销邮件。
Gusto 用于支付自己和非 Upwork 承包人的工资。
Upwork 用于寻找承包人。
Google Ads Manager 管理直销广告并跟踪绩效。
Carbon Ads 和 BuySellAds 用于备用广告。
Cloudflare 用于 DNS 管理、CDN 和防火墙。
Zapier 和 Trello 简化了播客工作流程。
Medium 是公司博客的媒介。
Godaddy 和 Namecheap 用于域名。
Stripe 用于从用户处获取资金(主要用于 API)。
Google speech-to-text API 用于语音转换。
Kaiser Permanente 用于健康保险。
Stripe Atlas 用于合并 Listen Notes Inc。
Clerky 为融资(SAFE)和雇佣非 Upwork 承包人生成法律文件。
Quickbooks 用于记账。
1password 用于管理大量服务的登录凭证。
Brex 用于信用卡,还可以获得额外$ 5,000 AWS 积分,可以在 WeWork 或 Stripe Atlas 的 AWS 积分上应用。
Bonvoy Business Amex 卡——可以获得豪华酒店和航班的 Marriott Bonvoy 积分。这是旅行的最佳信用卡积分:)
Capital One Spark 用于支票账户。
胆大心细,马上行动