백엔드 지식을 쌓기 위한 로드맵 with 북마켓

May 25, 2025

몇주전쯤에 나는 내 북마켓 서버를 내 라즈베리파이로 옮겨오는 작업을 진행했었다!

그래서 이제는 속도가 느리지도 않고, 내가 필요한 기능들은 얼추 다 갖고 있었기에 그냥 사용하기만 되는 상태가 되었다 ㅋㅋㅋ

하지만 사실 북마켓의 백엔드 로직은 최적화가 전혀 안되어있는데, 예를 들어

  1. 홈에서 모든 북마크를 다 가져온다. 페이지네이션이나 무한 스크롤같은 최적화가 전혀 되어있지 않다.

  2. 북마크에서 유저와 카테고리가 모두 eager loading 처리가 되어있다.

  3. Redis같은 인메모리 DB를 활용한 캐싱이 전혀 되어있지 않다.

물론 다 어떻게 최적화를 하면 될지는 생각을 해봤지만, 항상 해야지... 해야지... 하면서 미루고 있었다.

그러다 오늘 그냥 심심해서 repomix 툴을 이용해서 챗지피티와 내 북마켓 백엔드에 대한 심도 깊은 대화를 나눠봤다. 그랬더니 이 자식이

말을 참 심하게 하더라.

속상했지만 사실이니까 받아들이고, 어떻게 개선을 하면 좋을지 같이 이야기를 해봤다.


지피티의 백엔드 멘토링

사실 난 백엔드 개발자가 되고 싶은지는 모르겠다. 프론트 개발자가 계속 하고 싶은지도 모르겠다. 그냥 다 공부하고 싶어서 하고 있는데, 어쨌든 모든게 이도저도 안되는 수준에서 머무르면 안된다고 생각했기에, 지피티에게 내가 백엔드 개발자로 취업하려면 뭘 중점적으로 준비해야할지 물어봤다.

그랬더니 이렇게 멘토링을 해줬다. (예전같으면 시간당 몇만원하는 비싼 유료 멘토링을 받을 생각을 해야 했을텐데, 이젠 지피티만 있으면 된다!)

"취업 레벨"로 끌어올리려면 무엇을 공부할까?

1. 현재 상태 요약 (Backend)

영역현재 상태코멘트
기본 구조NestJS + TypeORM(PostgreSQL), 모노레포(pnpm + turbo)"서비스는 뜰 수 있는" 단계
인증JWT + 쿠키, Google OAuth, Sentry 연동베이스 OK, 세부 hardening 필요
DB 마이그레이션migrationsRun: true, 앱 부팅 시 자동 실행프로덕션에선 위험(다운타임·schema drift)
테스트Jest 의존성·npm script만 있고 spec 파일은 빌드 제외사실상 테스트 공백
비즈니스 로직단일 RDB·트랜잭션 없음, 단순 Repository 호출"개인 프로젝트 레벨"
인프라docker-compose(Postgres + 서버 + Next)로컬용은 OK, 실서비스에는 추가 설계 필요

2. 로드맵 (실무 1-2년차 백엔드 역량 기준)

2-1 테스팅 & 품질 게이트

해야 할 것왜 필요한가학습 키워드/자료
단위 테스트(service·util)커버리지 0% → 안전망 부재Jest, Nest TestingModule, ts-mockito
통합(e2e) 테스트컨트롤러 + DB 통합 검증Supertest, Testcontainers
CI 파이프라인PR마다 test/lint/type-checkGitHub Actions, pnpm 캐시

2-2 데이터베이스 심화

포인트학습 주제
트랜잭션 & 동시성TypeORM QueryRunner, Postgres Isolation Level
인덱스·성능EXPLAIN, slow query 분석, composite index
마이그레이션 전략migrationsRun:false, zero-downtime 패턴

2-3 아키텍처 & 코드 조직

현상/빈틈공부거리
서비스·도메인 경계 불분명DDD Lite → Context Module
로직이 ORM 레이어에 섞임도메인 Entity 메서드, Domain Event
중복 유효성 검사class-validator Pipe, Interceptor/Filter 재사용

2-4 확장 & 성능

스택학습 포인트
캐싱Nest CacheModule + Redis
큐/비동기BullMQ, RabbitMQ/Kafka
분산 트레이싱OpenTelemetry SDK + Jaeger

2-5 보안 & 안정성

항목제안
입력 검증DTO Pipe, Zod/schema
Rate Limit / CSRF@nestjs/throttler, SameSite 쿠키
로그·모니터링Winston + Sentry APM, health-check

2-6 DevOps & 배포

현재업그레이드 아이디어
docker-compose 만Docker multi-stage, GitHub Actions → Fly.io/Render
수동 .envHashiCorp Vault, AWS Parameter Store
단일 컨테이너IaC(Terraform/CDK), managed Postgres

3. 7주 스프린트 플랜

주차목표산출물
1주Jest 단위 + e2e 커버리지 30%CI 녹색 ✅
2주eager → 명시적 JOIN, 인덱스 실험before/after ms 그래프
3주트랜잭션 유틸, migration 플로우 교체migration:run 액션
4주Redis 캐시 + 무효화RPS 60 → 200 실측
5주BullMQ 워커(OG 이미지)큐 대시보드
6주OTEL + Jaegertrace 대시보드
7주Docker multi-stage + CD 스크립트경량 이미지 URL

사실 이중에는 내가 아는 내용도 있고 모르는 내용도 있다.

예를 들어

  • Jest를 활용한 단위 테스트와, e2e 테스트 작성은 프론트에서는 할줄 알지만, 백엔드에서는 처음이다.

  • Redis도 간단히 공부만 해봤지, 실제로 활용해서 최적화를 하거나 개선을 해본적은 없다.

  • BullMQ나 RabbitMQ, Kafka같은 메시지 큐들은 제대로 사용해본적도, 공부해본적도 없다.

이렇게 내가 이론적으로만 알던 것들, 아예 모르는 것들, 등등을 학습하기 위한 간단한 플랜을 지피티가 짜줬는데, 이걸 매주 학습하면서 북마켓 서버를 개선해나가려고 한다.

저 플랜 그대로 학습을 할지는 모르겠지만, "주니어 백엔드 개발자가 반드시 알아야 할 실무 지식" 이라는 책도 산겸, 같이 읽어보면서 북마켓 서버 개선과 함께 백엔드 지식을 쌓아가보자!