前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >研发,把一个项目上线,要折腾多少细节!

研发,把一个项目上线,要折腾多少细节!

作者头像
小傅哥
发布2023-09-06 11:48:06
1810
发布2023-09-06 11:48:06
举报
文章被收录于专栏:CodeGuide | 程序员编码指南

作者:小傅哥 博客:https://bugstack.cn

❝沉淀、分享、成长,让自己和他人都能有所收获!😜 ❞

于5.1启动,耗时3个多月开发的 OpenAI 项目,终于到了上线对外的时候。可能很多伙伴会想到,Github 不是有不少的开源项目吗,为啥还自己做?

为啥🤔。嗯,好问题!因为我是一个程序员👨🏻‍💻,我需要对各项技术的实现方案有深度的理解,我不能在工作或者面试中被提问的时候,说你去看开源项目吧。

此外大部分 Github 的开源项目主要以前端为主,并没有一个前后端结合的开发。而实际上,当我们真的需要在业务场景来使用时,就不只是前端页面,还需要在后端做各项的控制和管理。而这样的架构设计,就势必会涉及到;前后端分离前端工程架构后端工程架构(DDD)登录授权鉴权大模型SDK实现(okhttp)流式异步响应开发对接库表字段索引精细设计API多渠道路由内网穿透服务测试前后端镜像打包docker-compose 服务部署和回滚策略公众号验签配置,等等技术知识的运用。

所以,你跟开源项目学的是简单的应用,跟小傅哥学习;学的是架构设计的魅力学的是技术实现的巧妙。学的是,让你在晋升、述职、面试,时交流的底气。那么现在小傅哥把这样一个上线项目,拆分成一个个章节学习,让你也能具备这样的能力。

一、先看效果

体验地址:openai.itedus.cn


二、再说流程

当一个项目引入后端能力以后,就可以扩展非常多的能力。而所有的控制都是在做用户的行为处理,而这些行为就是业务需求。当不同的码农面对相同的业务,写出的代码可就不一样了。所以小傅哥也是希望让你能学习到怎么架构和编码出高质量的代码。

📢 我告诉你,当前的需求就是;公众号扫码获取验证码登录,登录后访问 OpenAI 服务,访问后需要根据是用户绑定的APIKey还是系统APIKey分别调用,如果是系统APIKey则需要限制调用次数,而用户自己绑定的则不需要。此外调用的 OpenAI 模型和渠道不同,需要进行判断和处理。那么这样的代码你想怎么写?🤔 会不会写出 if···else 的面条代码?

如果你不想写出面条代码,那么就看看小傅哥给你设计的流程图结构。如下;

  • 首先,在这套流程中,小傅哥将核心业务和支撑核心业务的分支流程进行拆解。一切的分支都是为了支撑主干流程运行,而分支的存在和去除,都应以模块插件的方式进行使用。这样会更好的维护和使用。
  • 之后,我想说。写代码就像擦屁屁的纸,80%的面积都是保护手的。所以这除了那20%的核心点以外,要让那支撑系统运行的 80% 分支逻辑,采用设计模式进行进行分治和抽象的设计实现。
  • 所以,这里有了路由模块和规则引擎的使用。因为他们可以更好的被添加和移除。而每次变动的时候,也都是固定范围的变动,不会让整体流程都陷入测试风险中。

所以,你还觉得写代码就只是if···else吗,这哪是写代码,这TM是老子在用代码构建一个世界!

三、之后上线

一个系统的上线对外,会有太多太多的细节要考虑。而这样的内容,只有实践了才能真的吸收这些知识。尤其是出一些事故时,都是留下一个个技术成长的故事。

那么我们现在以 OpenAI 个人上线对外一个项目的背景进行思考 🤔,看看会有哪些点需要处理;

  1. 技术栈的使用,不宜过多。要尽量减少运维成本。比如你可以使用 Guava 替代 Redis 使用。
  2. 数据库可以考虑单独购买,避免数据丢失。但同时也需要考虑,如果数据丢失,用户可以根据自己的加密卡Key进行重新绑卡。
  3. 因为本身服务器的成本就比较高,所以尽量控制被白piao。比如任何一个Key都可以在你部署的服务上使用,其实意义不大。可以通过只授权加密 Key 的方式进行使用。
  4. 此外要考虑,多种的调用渠道,如果某个挂了。要能替换对应渠道的访问地址,所以还需要把渠道对应的地址做成可配置的,之后用户写入库里,写入的只是渠道码这样就可以方便替换。
  5. 打包部署上线,一定要先在本地测试验证,验证完全没问题在上线。否则你就单台服务器没有负载能力的情况下,基本就要挂了。
  6. 如果你在本地测试仍不放心,可以修改一个端口和一个 docker-compose-pre-v1.0.yml 进行部署测试。可千万别修改原来正式对外的 compose 直接部署,这会出问题的。
  7. 要有一个可以回滚的处理,可以配置 docker-compose-prod-v1.0.yml 版本的添加。如果1.1版本出问题,可以快速使用 1.0 版本重新部署。
  8. 数据库表的使用,要注意字段的设计,索引的设计,否则就你那一卡拉米资源的数据库配置,真的可能因为你没有索引被打挂。此外可得把用户名和密码设计的强悍一些,别被比特币勒索。
  9. 定期导出 MySQL 数据库表数据,或者有自动备份功能的数据库服务器也是可以的。
  10. 因为你的代码,确实是你的代码。这可不是公司的,也不是有别人参与的。所以为了能在迭代或者处理问题的时候,快速解决。一定是要非常好的架构,非常清晰的编码。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bugstack虫洞栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、先看效果
  • 二、再说流程
  • 三、之后上线
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档