우당탕탕 개발 일지 입니다.python, 앱 , 연구실 프로젝트만 하다가 처음으로 웹 프로젝트를 제대로 하게 되었습니다.
이번에 카부캠 면접을 준비하고 보면서 평소에 프로젝트 할 때 고민들을 많이 정리해둬야한다고 느꼈습니다... 막상 개발하며 내가 뭐가 힘들었는지 쉽게 잊어버리더라구요..그래서 매번 개발할 떄 생긴 에러사항들을 정리하려고 합니다!! 웹 개발이 처음이라 제 주관 투성이 입니다. 개발 경험이 있으신 분이 있으면 댓글 많이 남겨주시면 그쪽 방향으로 많이 알아보겠습니다.
Q. HTTP 304 : not modified 는 뭘까?
브라우저가 한번 받은 리소스(js,css,이미지)를 캐시에 저장해두면
다음 요청때 서버에 내가 가진 버전이 아직 유효하냐고 물어봄. → 서버가 유효해. 변경된거 없어.그대로 내가 가진 캐시를 꺼내 사용함.
200인 경우 요청 성공하면 파일 내용을 전송하고 그 내용을 사용함.
304의 경우 요청 성공하면 내가 가진 캐시에서 꺼내서 사용함.
응답 메세지로 이해해보자.
↓
HTTP Response Message
| 상태 줄 | HTTP/1.1 200 OK |
| 헤더 | Key: Value |
| (빈줄) | 구분선 |
| 본문 | 실제 데이터 |
(200인 경우 파일 내용이 있고, 304인 경우 비어 있습니다)
Q 그럼 응답 메세지에서 헤더는 뭐지 어떤 값으로 이뤄져 있지? (자주 보는 헤더 top5)
- Content-Type: 본문이 뭔지 (JSON? HTML? 이미지?)
- Content-Length: 본문 크기
- Cache-Control: 캐시 정책
- ETag / Last-Modified: 캐시 검증용
- Authorization: 인증 토큰
Q 응답이 이상할 때 체크 순서
- 상태 코드 확인 (200인가? 304인가? 4xx인가?)
- Content-Type 확인 (JSON 기대했는데 HTML 오는 경우 많음)
- 본문 확인 (비어있는지, 이상한 값인지)
- 요청 헤더 확인 (인증 토큰, Origin 등이 제대로 갔는지)

시드 데이터 초기화 작업의 2가지 방법
개발 시작전
- git pull (최신 코드 받기) :
git push origin master
2. 서버 재시작 :
$ uvicorn main:app --reload
3. DB 마이그레이션 (테이블 구조 변경)
4. 시드 실행 → Swagger에서 Execute 또는 AJAX(fetch)
5. 개발 시작
AJAX, Swagger
→ 터미널에서 보이는 것 (서버 입장), Swagger에서 보이는 것 (클라이언트 입장)
Swagger는 개발 도구
- 개발 중에만 씀
- API 문서 + 테스트 UI
- 사용자는 절대 안 봄
fetch는 프로덕션 코드
- 실제 앱에 들어가는 코드
- 사용자가 버튼 누를 때 자동 실행
- 개발자도 디버깅 시 콘솔에서 수동 실행 가능
Q 언제 사용하는가?
| API 개발 직후 | 백엔드 개발자 | Swagger | 자기가 만든 API 테스트 |
| 프론트 개발 시작 | 프론트 개발자 | Swagger | API 사양 확인 |
| 프론트 코드 작성 | 프론트 개발자 | fetch 코드 작성 | 실제 사용자용 코드 |
| 통합 테스트 | 프론트 개발자 | 브라우저에서 버튼 클릭 (fetch 자동 실행) | 사용자 시나리오 테스트 |
| 버그 발생 시 | 개발자 | 콘솔 fetch 또는 Swagger | 빠른 API 테스트 |
| 프로덕션 | 실제 사용자 | (모름, fetch가 자동 실행됨) | 앱 사용 |
<용어>
**프로덕션(Production)이란?
- "실제 사용자가 쓰는 진짜 서비스"를 말합니다.
- 앱스토어에 올라간 앱
- 실제 도메인으로 접속하는 웹사이트
- 진짜 돈이 오가는 서비스
- 실제 사용자 데이터가 저장되는 곳
- 프로덕션의 반댓말은 개발 환경
** 개발 환경 순서
개발 → 테스트 → 스테이징 → 프로덕션
(Dev) (Test) (Staging) (Production)
**시드 : 빈 DB → 시드 실행 → 기본 데이터 채워짐
저번 시간이 너무 이것 저것 한것 같아서 노션에 할 내용을 좀 정리하면서 블로그를 쓰려고 합니다.


'[프로젝트] > 수어 연구소' 카테고리의 다른 글
| [수어 연구소]로컬과 웹상의 모델 인식 차이 개선 (0) | 2026.05.08 |
|---|---|
| 왜 가상환경이 필요할까? (0) | 2026.05.02 |
| [수어 연구소]Can’t automatically merge 해결방법 (0) | 2026.04.22 |
| [수어 연구소] 웹 백엔드 디버딩 : DB 저장 안될때 (0) | 2026.04.20 |