首先确定了需求以后,为了快速实现,选择了Python+Django作为前期的技术栈,尽管Python有一些缺点。通过快速的开发和测试进行最原始的部署方式,进行前后端的联调。存储方面刚开始也是先用SQLite3。由于服务涉及到定时任务,因此选择使用Celery作为工具,配合使用Docker部署Redis。
在准备上线的前夕,就需要将域名配置好,这里推荐使用Cloudflare进行Proxy,一方面隐藏后端ip,另一方面可以直接自动HTTPS,无需在后端进行搭建证书。这期间还需要解决一系列CORS问题。
随着开发的热火朝天,传统的通过提交代码后在云服务器上拉取代码并进行nohup部署的方式就非常的痛苦,这也是前期开发为了快速迭代,并没有多考虑的点。我认为在MVP的上线期间,可以多思考这块的架构,刚开始会有很多不确定性,因此可以少考虑结构问题,但一旦准备launch,就需要规划出上线流程。
初期的MVP其实挺适合用heroku进行构建的,从Staging和Production两套环境,以及CI自动触发构建,以及Redis/PostgresAdd-ons这些都是减少了很多搭建环境以及迭代成本。但由于不再免费了,这里就不得不提它的开源版本——Dokku
dokku类似docker-compose,就是将docker和git结合,算是最轻量的PaaS工具,主要三个功能:create,deploy,scale.dokku的部署也很简单,任何装有Docker的云服务主机上都可以快速部署。想比于heroku,只是没有WebUI,当然买dokkuPro就可以有。
在之后就顺其自然的利用prometheus搭建对应的metrics平台以及用opentelemetry构建日志tracing系统。引入metrics和日志系统是为了后续建立监控告警做准备。一旦一个小的产品上线有了真实的用户,那么服务的稳定性就渐渐重要起来,这些基础实施的搭建也是为了后续更好的排查问题。
之前用Grafana搭建了Metrics和日志系统一直忘记介绍。Metrics是由Prometheus提供对应的服务,配置起来相对简单,利用上报的指标搭建各种看板就可以。
日志系统则相对复杂一些,Loki负责日志存储和查询处理,Promtail负责日志采集并发给Loki,主要NginxAccessLog,这里还使用了比较火的@vectordotdev,由其采集docker日志同样上报给Loki。在Grafana上通过写相关规则,可以很容易的进行日志查询。另外通过在Nginx上开启request_id更快排查问题。
责编:Lynn
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。