业务应用开发,通常是以业务价值为导向,重视高效迭代和正确性,对软件性能要求则相对不高。

基于 JavaScript(TS) 的全栈架构 & 单一代码库

  1. 单一代码库可以做到协作透明,复用便捷,高效迭代
  2. 全栈架构有助于负责人掌控完整的项目生命周期
  3. 可复用的技术。编程语言是开发活动中的重要因素,复用编程语言进行多端开发,代码逻辑复用率可大大提升,进而缩短开发时间
  4. 技术门槛低。架构落地后,开发者仅需专注开发业务代码,会写 JavaScript 即可上手
  5. 沟通成本低。更小的协作范围造就更明确的业务责任人,缩短开发时间的同时保障了项目管理
  6. 弹性分工。前后端分离的情况下,全栈工程师包办前后端,或前后端分工开发均可,这使得团队对项目的掌控是分布式而非分散式,可避免对单一成员的依赖

基本选型

系统架构 & 部署运维

  • Docker: Dockerfile 可由研发自行编写,控制构建流程
  • 网关: 用于转发、负载均衡与灰度发布
  • CI / CD:Jenkins 或其他,研发能够自定义流水线
  • 接口调用日志: 通过 Featbeat 上报到 ELK
  • 相关分析: Kibana
  • 监控: Grafana
  • 实时告警: 企业微信、飞书机器人

代码开发

  • Monorepo: 多个项目、前后端代码均位于此单一代码库,可最大程度地复用代码
  • 前后端分离: 前后端为两个独立的子项目,可各自独立开发
  • 编程语言: 前后端均使用 TypeScript,类型严谨兼具灵活
  • 统一代码风格: ESLint + Prettier
  • 后端其他关键技术: MySQL、Redis
  • 前端技术栈: React
  • Git 协作: GitHub

基础建设

  • 提供一个集管理端、API 端、单点登录、Swagger API 文档、访客鉴权、日志上报、健康检查、错误告警、CICD 等基础功能于一身的工具包与最佳实践示例
  • 开发者专注于业务本身即可,无需重复实现基础功能
  • 提供「单点登录」「用户系统」「权限服务」「审批服务」等可能广泛使用的功能,使业务系统做到低成本对接而无需重复自研

示例项目: https://github.com/fangqk1991/mono-demo