构建安全的 Demo Banking App(第1部分)
Source: Dev.to
介绍
在构建软件项目或应用时,需要意识到技术的快速迭代。开发工具和编程语言大约每六个月就会发布一次更新,因此保持对新版本的跟进至关重要,以免落后。
然而,无论技术变化多快,软件开发的核心概念基本保持不变。随着 AI 的兴起,普通且简单的软件项目——比如基础的 CRUD 应用——已经无法为软件工程师在知识和批判性思维方面提供实质性的价值。要构建强大且可靠的系统,项目必须在开发周期的每个阶段遵循最佳的编码和安全实践。
为什么选择 Demo Banking App 项目?
我决定构建一个金融科技相关的演示应用,原因有以下几点:
- 加深我在金融科技中最常用的全栈技术上的技能。
- 为我的作品集提供一个可公开展示的实质性软件应用。我把整个规划、开发和部署过程称为 “黄金项目”(The Golden Project),因为它几乎涵盖了规划、代码结构、安全、架构与设计模式以及 CI/CD 的所有方面。
该应用将命名为 “Demo Banking App”。我计划记录每个重要功能和组件,以巩固我的理解,并在构建过程中遇到障碍时调整方案。
项目目标与范围
Demo Banking App 的首个版本将包括以下功能:
- 用户注册与认证
- 用户资料
- 账户仪表盘
- 交易历史
- 支付
- 通知
- 欺诈筛查
技术栈
在选择技术栈时,我考虑了其在真实金融科技应用中的相关性和使用情况、我对这些技术的已有经验,以及当今的软件最佳实践。
- 前端: React、TypeScript、Tailwind CSS
- 后端: Spring Boot
- 数据库: PostgreSQL
- 认证: OAuth2 / OpenID Connect
- 可观测性: Prometheus、Grafana、OpenTelemetry、Elasticsearch
架构
采用的架构模式基于 微服务 和 Saga 模式。此选择能够应对项目的复杂性,确保可扩展性并顺畅处理所有交易——模拟真实的银行业务场景。
从一开始就注重安全
即使这是一个演示银行应用,遵循最佳安全实践仍然至关重要。针对第 1 版,已包括以下措施:
- 使用环境变量而非明文值
- CORS 限制
- 登录路由的速率限制
- 输入验证
- 密码加密
标志与配色
我以极简风格设计了 Demo Banking App 的标志,强调简洁的同时保持真实的企业感。配色方案将在整个应用中使用,灵感来源于一家德国的 neobank。