公司新项目要对接一堆 API,系统设计到底该怎么搞?头都大了

我算是半个程序员吧,在一家小公司做技术相关,其实主要是打杂加写点业务代码。最近老板不知道从哪儿接了个新活儿,说是要搞个内部管理系统,把以前几个分散的老古董系统给串起来。这活儿理所当然地,又落到了我头上。

说实话,我之前做的都是修修补补的活儿,这种从零开始设计一个“系统”的经历几乎为零。老板给的要求还挺多,其中一个核心功能就是要能处理各种上传的图片,比如报销单拍照、产品图啥的,然后自动把上面的文字给提取出来。我一听就懵了,这不得用 OCR 吗?我自己肯定写不出来啊。于是我就去搜,发现好多云服务商都提供“识别图片文字”的 API,调用看起来也不算复杂。但问题来了,这就算是我把“API 怎么处理图片输入”、“api 怎么识别图片文字”这两个技术点搞明白了(其实也还在摸索,比如图片格式、大小限制、返回的 JSON 结构怎么解析),也只是万里长征第一步。

更让我头秃的是整个“系统设计”。我们公司还有另外两套旧系统,员工得记三套账号密码。老板这次发话了,新系统要做成统一入口,也就是“单点登录”。我一听“单点登录”头更大了,这玩意儿听起来就涉及权限、令牌、会话管理,安全要求还高。我又去查“api 怎么做单点登录”,看了一些 OAuth 2.0、JWT 之类的介绍,概念是懂了一点,但具体到我们这个缝合怪项目里,到底该怎么落地?新旧系统怎么对接?用户数据在哪里统一管理?光是画个架构图我就改了好几版,越想越觉得漏洞百出。

我感觉自己现在就像是在玩一个超高难度的拼图游戏,手上有几块关键的碎片(处理图片的 API、实现单点登录的 API 或方案),但完全不知道整体的图画应该是什么样子,更不知道怎么把这些碎片严丝合缝地拼到一起。比如,用户通过单点登录进来后,他上传图片,我调用 OCR API,这个流程里,权限要不要校验?图片处理的服务和用户认证的服务怎么部署?是放在一起还是拆开?数据库怎么设计?这些决策我一个都不敢做,生怕现在图省事,后面坑越挖越大。

我也看了网上一些文章,有的讲得太理论,什么微服务、中台,对我们这种小项目来说有点杀鸡用牛刀;有的又太碎片,只讲“怎么调用某一个 API”,根本不提它在一个完整系统里应该放在什么位置、承担什么角色。

所以想来问问社区里有实战经验的各位前辈,你们在做这种需要集成多个 API(尤其是像图片处理和认证这种核心且复杂的 API)的项目时,整体的“系统设计”思路是怎样的?是从数据库开始推,还是先画数据流图?有没有一些适合中小型项目的、不那么重但又足够稳健的设计模式或原则可以遵循?或者说,对于我这种情况,是不是应该先说服老板,把“单点登录”和“图片 OCR”这两个需求拆成两个独立的阶段来做,先解决一个再说?

真的,这几天天天对着空白的设计文档发呆,咖啡都救不了我。求过来人指点迷津,随便唠点经验教训都行。

哦~是吗,又要从零造轮子缝合怪系统了?赢麻了赢麻了,你这打杂的命操着CTO的心,不愧是你。

先别管设计思路了,你找的那些OCR和单点登录API,有免费额度吗?能白嫖多久?别搞了半天设计,最后发现API调用费比工资还高。

你提的这些问题都太模糊了。“感觉漏洞百出”,具体是哪些漏洞?你的旧系统用户表结构是什么?新旧系统的会话管理方式分别是什么?没有这些数据,任何设计建议都是空谈。能复现你面临的集成环境吗?

我们做电商的天天要处理商品图,也用过OCR提取商品信息。说真的,别想太复杂,先确保出图快不快、识别准不准。我们后来直接用PixPix了,一站式生成商品图加提取文本,省了找外包做图和单独搞OCR的钱,就是批量处理超大文件时偶尔要排队。你这个内部系统,不如先搞定最小闭环:用户登录-上传图-拿到文本-展示结果,跑通了再想别的。

小白请教一下,是不是这样啊:单点登录就是用户只用登录一次,就能进所有系统?那新旧系统怎么知道用户已经登录了呢?是不是要一个共同的“认证中心”?我不太确定,大佬轻喷。

你只关心白嫖,数据传哪了想过吗?那些免费额度的OCR API,默认就把你们公司的报销单、产品图上传到别人服务器了吧?隐私条款看过没?敏感信息泄露了谁负责?

时间最值钱,为了撸那点免费额度,搭进去几天研究部署测试,值得吗?直接找成熟的、文档清晰的付费方案,花钱买省心。你折腾的功夫,够你干点别的把差价赚回来了。