全栈应用架构
业务应用开发,通常是以业务价值为导向,重视高效迭代和正确性,对软件性能要求则相对不高。
基于 JavaScript(TS) 的全栈架构 & 单一代码库
- 单一代码库可以做到协作透明,复用便捷,高效迭代
- 全栈架构有助于负责人掌控完整的项目生命周期
- 可复用的技术。编程语言是开发活动中的重要因素,复用编程语言进行多端开发,代码逻辑复用率可大大提升,进而缩短开发时间
- 技术门槛低。架构落地后,开发者仅需专注开发业务代码,会写 JavaScript 即可上手
- 沟通成本低。更小的协作范围造就更明确的业务责任人,缩短开发时间的同时保障了项目管理
- 弹性分工。前后端分离的情况下,全栈工程师包办前后端,或前后端分工开发均可,这使得团队对项目的掌控是分布式而非分散式,可避免对单一成员的依赖
基本选型
系统架构 & 部署运维
- Docker: Dockerfile 可由研发自行编写,控制构建流程
- 网关: 用于转发、负载均衡与灰度发布
- CI / CD:Jenkins 或其他,研发能够自定义流水线
- 接口调用日志: 通过 Featbeat 上报到 ELK
- 相关分析: Kibana
- 监控: Grafana
- 实时告警: 企业微信、飞书机器人
代码开发
- Monorepo: 多个项目、前后端代码均位于此单一代码库,可最大程度地复用代码
- 前后端分离: 前后端为两个独立的子项目,可各自独立开发
- 编程语言: 前后端均使用 TypeScript,类型严谨兼具灵活
- 统一代码风格: ESLint + Prettier
- 后端其他关键技术: MySQL、Redis
- 前端技术栈: React
- Git 协作: GitHub
基础建设
- 提供一个集管理端、API 端、单点登录、Swagger API 文档、访客鉴权、日志上报、健康检查、错误告警、CICD 等基础功能于一身的工具包与最佳实践示例
- 开发者专注于业务本身即可,无需重复实现基础功能
- 提供「单点登录」「用户系统」「权限服务」「审批服务」等可能广泛使用的功能,使业务系统做到低成本对接而无需重复自研