几乎所有现代平台提供商的一个核心目标在于构建一个“包容性生态系统”,这一生态系统能够让用户在同一平台上执行各类活动。
然而,不容忽视的现实是,并没有一个完美的平台能够应付所有需求!一项成功的架构设计必须始终考虑入站和出站的连接,并且要允许用户利用其他工具来实现其需求。
数年前,我曾参与过一个卓越的大数据平台项目,该平台采用了一种尖端的仓库工具。然而,令人遗憾的是,该平台并未全面支持API调用(尤其是最新的RESTful和开放API),这意味着无法流畅地将数据引入平台。同时,用户必须安装ODBC驱动程序并通过管理员权限配置DSN才能提取数据,这一操作过程异常繁琐。
这就好比是一个思维敏捷的天才,却无法阅读或表达自己一样!
需要考虑的事项:
虽然人们普遍声称“安全高于一切”,但很少有人从项目的一开始就充分考虑安全架构。安全框架的后期介入有时会导致两种截然不同的情况:
我曾经见过一些处理生产数据的极端案例,其中的安全措施使得环境受到高度隔离,最终用户只能通过一种渠道来查询数据。
毫无疑问,安全确实至关重要,但如果结果是“在安全之下几乎没有(或没有)可用的资源” — 那我认为这已经违背了初衷。
需要考虑的事项:
几乎所有数据平台项目最初都怀揣着宏大的愿景,比如“改变世界”,但实际上,绝大多数项目都在实施过程中做出了一些妥协。
当我们无法淘汰旧系统、必须依赖现有解决方案时,兼容性问题会成为一道难以逾越的障碍!
多年前有一个项目,旨在引入最新的SSIS/SSAS报告和分析工具。最初的计划是将后端的Oracle数据库替换为MS SQL,但由于各种因素,这一计划在半途中被搁置。结果,解决方案最终变得“处于待定状态”,因为SSIS/SSAS并不原生支持Oracle数据库,必须安装Oracle“驱动程序”。前后端之间的兼容性问题带来了大量功能的缩减和性能问题。
需要考虑的事项:
许多最终用户抱怨他们拥有多个数据源,却不知道哪一个是最佳选择。虽然很多架构提案最初的目标是实现“一个真实的版本”,但无可避免的是,数据复制问题仍然屡见不鲜。
典型的数据复制情况包括:
也许你会反问:“那又有何不妥?”虽然多次数据复制存在着一长串潜在风险,包括数据溯源、变更管理、性能和存储成本效益等问题;我在这里举一个简单的例子:
想象一下,本可以通过维护一个单一的日记来管理日常活动;然而,你的妻子创建了一个“家庭”日历,你的秘书从你的单一日记中又创建了一个“工作”日历。或许在多花一些时间进行额外的管理后,这种方式仍然可以运行;但如果你的妻子决定在你的家庭日历中在上班时间购物,而这与你的工作日历发生了冲突呢?
需要考虑的事项:
现代架构通常采用严格的环境分段,典型地包括开发(DEV)、用户验收测试(UAT)和生产(PROD)环境。尽管很多公司正在积极采用最新的技术,如公有云(AWS、Azure、GCP)和基础架构即代码(IaC,例如Terraform),但它们仍然将生产环境托管在公司的防火墙之后,即本地环境。
我不会在这里详细讨论持续集成/持续交付(CI/CD)方面的挑战,因为已经有许多专家深入探讨了部署流程的问题。我要强调的是,确保在所有平台之间实现“工具、配置和库”的同步是至关重要的。
想象一下,你在Azure上开发了一款出色的模型,利用GPU进行计算,使用TensorFlow框架和Databricks;然而,当你尝试将相同的模型部署到生产环境时,你发现只有CPU虚拟机,没有TensorFlow,也没有Databricks... 这不是笑话,而是来自真实项目的经验。
需要考虑的事项:
基础架构即代码(IaC)软件,如Terraform,为自动设置和配置虚拟化基础设施带来了极大的灵活性。然而,它也带来了一个未受控的虚拟化基础设施的风险,可能导致出现“隐藏”的或“空闲”的节点。
需要考虑的事项:
上述问题可能自然引发有关遥测的讨论。与安全框架中的问题一样,遥测方面通常在整个架构设计的较晚阶段才被引入。
一个强大/预配置的遥测组件可以支持架构师在设计过程中,并且最重要的是,它可以提高终端用户对平台的可见性,最终成为平台治理的重要组成部分。
需要考虑的事项:
多年来,数据混淆一直是一个备受关注的话题,我确信几乎所有的数据平台都将面临这一挑战,尤其是在从公有云查询本地数据或实施用户权限隔离时。
虽然有许多聪明的机制可以用于数据混淆,但并非所有这些机制都能够实现双通道——也就是以安全的方式启用/逆转掩码算法。
一些解决方案甚至会对物理数据造成永久性的损害,但随后它们必须构建更复杂的机制来与受损数据匹配,这将引入不必要的流程和成本。
需要考虑的事项:
我相信上述常见错误并不能构成一个排他性的列表,希望大家在未来的架构设计项目中避免重复掉入这些陷阱。
本文链接:http://www.28at.com/showinfo-26-12148-0.html架构设计的技术陷阱:如何避免八个致命的错误
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
下一篇: Node.js 是如何处理请求的