首页 > 其他分享 >架构实战

架构实战

时间:2024-08-29 12:48:58浏览次数:4  
标签:实战 架构 S3 Telegram 甲方 site 管理员

所谓架构,意即系统架构,广义上它涵盖业务架构、运维架构、组织架构等所有系统构建场景,本文特指一般开发人员主要关注的开发架构

关于架构的理论有很多,每个人也都有各自的理解,笔者相信很多人在实际运用中也会遇到各种各样的问题和困惑,本文抛开教条,从一个实际项目的演化看何为架构。

项目背景

开始之前,先了解下项目背景。该项目原本是为某东南亚公司开发的图库,提供图片使用授权服务,正规项目。无奈当地营商环境鱼龙混杂,黑白手段层出不穷,有好几个其它项目要么被 DDOS,要么流量被劫持,要么莫名出现违规内容,搞得该公司苦不堪言,这回干脆重金悬赏,遍求挑梁贤能。这不,被笔者一个在国内灵活就业的朋友揭了榜,几年之后才回国,这中间发生的种种又是另外的故事了。

不管怎么说,虽然项目看着不大,但除业务本身内容外,服务器和数据安全也须重点考虑。

基础版

显然,用户浏览网站需要一个site,如果采用前后端分离还得有api-server

为了防止恶意用户上传违规内容,所有图片都由管理员上传至图床比如AWS-S3(公共读私有写模式)

S3 同步版

基础版虽然在业务端保证了数据安全,但由于两处服务器(S3、site/api,即红色节点)直接对外暴露,黑客能轻而易举地实现定位进而展开攻击。S3 是可靠的云服务,倒也不用太担心,然而惊弓之鸟的甲方要求管理员不能直接访问 S3,防止黑客嗅探到管理端。

于是,在管理端和 S3 中间新加一个中转节点minio,图片先上传到 minio,再同步给 S3,如此,管理端暴露的风险大大降低。

注意此时还没有解决 site/api 暴露的问题,后面会讲。

会员版

马上新的需求出来了,甲方要求加入收费会员模式,但是不能出现任何关于公司的账户信息(看来甲方真的是怕了,要彻底地隐藏自己)。

要有会员体系,得先有账号模块,为防止恶意注册,加上邮箱验证即可。

收费不能体现公司账号比较麻烦,常规走银行流水肯定不行,第三方甚至套壳支付总是会被追踪到,剩下的选择只有加密货币了,所幸加密货币在当地是被广泛使用的。

加密货币交易一般都是异步的,所以要设计一个定时器,定时从链上获取最新的交易记录,同步给账号中心处理。

图中虚线表示连接的是内部服务。

CMS 版

管理员除管理图片外,还需对网站本身进行管理,比如广告投放、布局调整、会员策略等。于是新增了CMS-Service

当然以后还会需要其它非 CMS 的站点管理功能比如会员管理、系统监控等,统一以admin-site对管理端提供服务。

CQRS 版

现在,把图片管理一同并入站点管理,并对各服务应用CQRS模式,清晰了业务边界,为后续业务扩展打下良好基础。

注意,其中 admin-site 兼具 site-command、album-command 职责。

IM 版

为了提升服务质量,甲方老板要求加上在线客服,客户诉求第一时间反馈,同时其它一些消息(比如客户下单、图片合约到期等),管理员也能第一时间收到。

这就不单单是一个即时聊天系统了,还得有消息推送的功能。

再考虑到当地朝九晚五懒散的工作状态,想要管理员一直呆在电脑前也不现实,那么客户消息和系统消息就容易错过。

还好,这里有一个人人都离不开的聊天 App ——Telegram,这玩意儿类似国内的微信,但是开放了很多接口和协议,使第三方系统能方便地接入它。比如我们可以使用它的Telegram-Bot,当客户发送消息时,IM 服务除向管理端实时推送外,还会推送给 Telegram-Bot,Telegram-Bot 再将消息推至 Telegram,如此,沉浸在美女频道的管理员就能及时知道有待反馈消息了。

Cloudflare 版

系统的主要功能基本都实现了,但甲方心心念念的安全问题反倒随着功能的扩展显得更加严峻。如之前所述,直接暴露给用户的节点风险等级最高,其次为管理员使用节点,进而会影响到整个系统内部。

自己搭建一套安全体系成本太高,实力也不允许,幸好市面上有免费的午餐,比如Cloudflare

Cloudflare 是全球知名的网络服务商,提供保护、优化、加速网站等相关服务。本项目中至少可以考虑如下服务:

  • 源站 IP 隐藏
  • Bots - 自动屏蔽恶意爬虫
  • Turnstile - 人机验证
  • S3 域名重写为本站域名(做了 cname 解析)

同时要求管理员在所使用的设备上安装VPN,将风险降到最低。

可以看到,图中的红黄线块都没了,整个系统只要内部不出问题,从外部攻破的可能性不大。

CI/CD 版

还有一个漏洞,甲方意味深长地说。他指的是从本地开发/测试机部署至生产环境这道工序,同样会出现本地设备直连线上节点的情况。虽然现在服务器已经藏得够深,直接登录被发现的几率不大,但安全起见,甲方还是要求每次都采用跳板机中转一下。

对于经常发版的任务,跳板中转属实也有点麻烦,可以采用CI/CD方案,自动化部署,既轻松又安全。

至此,开发架构与运维架构产生了交集,前者也总算可以告一段落了。


总结

架构,既是名词,亦是动词,既是实体,亦是变化,它是一种理念,也是一种实施。但它肯定不是一套模板 —— 如果所有的房屋都千篇一律,那也不存在架构师了。

整个项目,甲方对安全的要求简直到了偏执的程度,很多要求看似无理,聪明的你也许能看出些端倪:)

标签:实战,架构,S3,Telegram,甲方,site,管理员
From: https://www.cnblogs.com/newton/p/18385754

相关文章

  • 错误处理、cuda模型、GPU架构杂谈
    错误处理、cuda模型、GPU架构杂谈错误处理所有编程都需要对错误进行处理,早起的编码错误,编译器会帮搞定,内存错误也能观察出来,但是有些逻辑错误很难发现,甚至到了上线运行时才会被发现,而且有些厉害的bug复现会很难,不总出现,但是很致命,而且CUDA基本都是异步执行的,当错误出现的时候,不......
  • GPU的Fermi 架构与Kepler架构杂谈
    Fermi架构Fermi架构是第一个完整的GPU架构,如图10-15所示。图10-15Fermi架构是第一个完整的GPU架构Fermi架构逻辑图,如图10-15所示,具体数据如下:1)512个加速核心,CUDA核2)每个CUDA核心都有一个全流水线的整数算数逻辑单元ALU,和一个浮点数运算单元FPU3)CUDA核被组织到16个SM上4......
  • 【云原生之kubernetes实战】k8s环境中部署Nginx服务
    【云原生之kubernetes实战】k8s环境中部署Nginx服务一、Nginx介绍1.1Nginx简介1.2Nginx特点1.3Nginx使用场景二、本次实践介绍2.1本次实践简介2.2本次环境规划三、检查k8s环境3.1检查工作节点状态3.2检查系统pod状态四、部署storageclass(......
  • 领域驱动设计(DDD)的几种典型架构介绍
    领域驱动设计(DDD)的几种典型架构介绍 平常工作中都听说了DDD,也对DDD做定程度的了解,那么怎么将一个新项目从头开始按照DDD的过程进行划分与架构设计呢?一、专业术语各种服务IAAS:基础设施服务,Infrastructure-as-a-servicePAAS:平台服务,Platform-as-a-serviceSAAS:软件服务,Softwa......
  • 计算机架构设计的8个伟大思想
    “Theseareeightgreatideasthatcomputerarchitectshaveinventedinthelast60yearsofcomputerdesign.Theyaresopowerfultheyhavelastedlongafterthefirstcomputerthatusedthem,withnewerarchitectsdemonstratingtheiradmirationbyimitat......
  • 我的新书《Android系统多媒体进阶实战》正式发售
    我的新书要正式发售了,把链接贴在下面,感兴趣的朋友可以支持下。❶发售平台:当当,京东,抖音北航社平台,小红书,b站❷目前当当和京东已开启预售❸当当网https://u.dangdang.com/KIDHJ❹京东商城https://item.m.jd.com/product/10109083199634.html?gx=RnAoqRAjajbdh8lR5Q&gxd......
  • 如何驱动企业数字化转型的敏捷企业的创新实践指南:敏捷企业架构的制胜之道
    敏捷企业架构如何引领企业转型变革在全球化与数字化交织的新时代,企业正处于前所未有的变革浪潮中。传统的企业架构方式已经难以应对瞬息万变的市场需求和技术革新。作为一种突破性解决方案,敏捷企业架构提供了一个灵活且强大的框架,帮助企业在动态环境中保持竞争优势,迅速响应市......
  • 从战略到执行:解密敏捷企业架构的变革之道,助力企业未来增长
    敏捷企业架构的新时代与变革契机在数字化转型浪潮中,企业正面临前所未有的市场挑战与技术机遇。传统企业架构(EnterpriseArchitecture,EA)虽然能够为企业提供稳定的战略支持,但其应对市场快速变化的能力不足。而敏捷方法(Agile)以其高效迭代和灵活性,正在迅速改变企业的运营方式。......
  • 全面解读敏捷企业架构的落地策略,助力企业实现数字化转型
    敏捷企业架构如何推动企业转型成功在当今迅速变化的商业环境中,企业面对的最大挑战之一是如何快速适应市场变化并保持竞争力。传统的企业架构虽然在稳定性和可控性方面具备优势,但在面对数字化转型的浪潮时,显得僵化且反应迟缓。敏捷企业架构通过引入敏捷方法的灵活性和迭代性,为......
  • 架构师面试题 - Spring Boot 面试专题(33题含答案)
    目录前言1、什么是springboot2、什么是JavaConfig?3、SpringBoot有哪些优点?答:4、SpringBoot提供了哪些核⼼功能?5、如何重新加载SpringBoot上的更改,⽽⽆需重新启动服务器?6、创建⼀个SpringBootProject的最简单的⽅法是什么?7、运⾏SpringBoot有哪......