[T.3] 团队项目:团队基础设施及 DevOps 准备
| 这个作业属于哪个课程 | 北航2026年春季软件工程 |
|---|---|
| 这个作业的要求在哪里 | [T.3] 团队项目:团队基础设施及 DevOps 准备 |
| 我在这个课程的目标是 | 提升团队协作与项目管理能力 |
| 这个作业在哪个具体方面帮助我实现目标 | 完成团队基础设施及 DevOps 准备 |
一、服务器选择
-
厂商:阿里云
-
地域:华北2(北京)F
离北京最近,网络延迟较低。
- 计费方式:按量付费
使用了学生的300元免费权益,购买了固定额度的算例包,有效期6个月。若后续需要长期维护服务器,可择机转为包年包月。
- CPU & 内存:2核4G
项目SciWeaver整体作为一个“Web 应用 + PDF 解析 + 调用外部大模型 API + 异步任务处理”的轻中度负载项目。核心算力消耗集中在 PDF 全文解析与大模型提取论文关键点(Paper Key Points),但这两项均通过异步任务队列在后台执行,且大模型推理本身交由 DeepSeek / Qwen 等外部 API 完成,服务器不承担本地训练或模型推理。综合考虑并发任务数与响应要求,2核4G配置可满足当前阶段需求。
- 带宽:按流量计费,峰值5Mbps
流量消耗主要来自用户上传 PDF 论文文件;其他功能(如前端页面加载、API 调用响应)带宽占用较小。由于单次上传可能涉及多篇 PDF,流量波动较大,因此采用按使用流量计费模式以控制成本。为保障上传体验并防止突发流量占用过多带宽,设置峰值 5Mbps。
- 系统盘:ESSD Entry 云盘 40 GiB (2120 IOPS)
阿里云服务器的默认配置,IO 速度较快,可满足 PDF 文件临时存储与解析过程中的读写需求。
- 数据盘:无
数据主要用于存储用户上传的 PDF 论文、解析结果日志以及知识图谱导出文件。通常一篇论文 PDF 大小在 5MB 左右,结合前期用户规模,预计数据总量不超过 20GB,暂不需要额外挂载数据盘。后续若用户量增长或需长期归档 PDF 原文,可灵活添加 20–50GB 的 SSD 数据盘。
二、团队沟通,协作与代码管理
- 沟通平台:微信小组群
- 工具链
- 项目管理:飞书
- 代码管理:GitHub
飞书记录需求分解、任务分配并管理项目完成情况,代码上传到GitHub管理
三、CI/CD
配置脚本:
name: CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
backend-test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('backend/requirements.txt') }}
- name: Install dependencies
run: |
cd backend
pip install -r requirements.txt
pip install pytest pytest-cov
- name: Run tests
env:
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/test_db
run: |
cd backend
pytest --cov=. --cov-report=xml
frontend-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Cache npm
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('frontend/package-lock.json') }}
- name: Install dependencies
run: |
cd frontend
npm ci
- name: Run tests
run: |
cd frontend
npm run test --if-present
- name: ci/cd test
run: |
echo "Hello, ${{ github.actor }}! 你的 CI 触发成功了。1 Ciallo~(∠・ω< )⌒☆ test"


浙公网安备 33010602011771号