본문으로 건너뛰기
DEVKBS
작업 원장
021Dpectrum2025.05운영 중

세상의 모든 탐구

2주 동안 남의 코드베이스에 들어가서 하는 일

기간
2025.05
분류
웹앱
역할
프론트엔드 개발 지원
구성
프론트엔드 2 · 백엔드 1
사이트 방문
세상의 모든 탐구 데스크톱 화면
세상의 모든 탐구 모바일 화면

01개요

다른 팀이 만들고 있던 서비스에 2주간 지원 인력으로 들어간 작업입니다. 내가 처음부터 설계한 프로젝트가 아니라, 이미 굴러가고 있는 코드베이스에 들어가 필요한 것을 붙이고 나오는 성격이었습니다.

이런 투입에서 가장 위험한 것은 '내 방식대로 정리하고 싶은 마음'입니다. 짧은 기간에 구조를 바꾸기 시작하면 끝내지 못한 채 팀에게 어중간한 상태를 남기게 됩니다. 그래서 이미 있는 규칙을 먼저 읽고 그대로 따르는 것을 원칙으로 삼았습니다.

맡은 기능 중 핵심은 탐구 결과물을 PDF로 내보내는 것이었습니다. 학생이 작성한 내용을 인쇄 가능한 문서로 만들어야 했는데, 웹 화면과 인쇄물은 요구가 다릅니다. 화면은 스크롤되지만 종이는 페이지로 잘립니다.

02기술 결정

문제가 무엇이었고, 무엇을 골랐고, 그래서 어떻게 됐는지.

  1. 결정 01

    PDF는 브라우저 인쇄가 아니라 서버 렌더링으로 만든다

    문제
    브라우저의 인쇄 기능에 맡기면 사용자 환경마다 결과가 달라집니다. 여백, 머리글, 배경 그래픽 인쇄 여부가 브라우저와 설정에 따라 제각각이라 결과물을 보장할 수 없습니다.
    선택
    Puppeteer로 서버에서 페이지를 열어 PDF를 생성하도록 했습니다. 인쇄용 스타일을 따로 두고, 여백과 페이지 크기를 코드에서 고정했습니다.
    결과
    누가 언제 내려받아도 같은 문서가 나옵니다. 학교에서 제출물로 쓰이는 문서였기 때문에 이 일관성이 특히 중요했습니다.
  2. 결정 02

    짧게 들어간 프로젝트에서는 구조를 건드리지 않는다

    문제
    남의 코드베이스에는 늘 개선하고 싶은 부분이 보입니다. 하지만 2주 뒤에 나가는 사람이 구조를 바꾸면, 남은 사람들이 그 의도를 모른 채 유지해야 합니다.
    선택
    기존 폴더 구조와 명명 규칙을 그대로 따르고, 개선이 필요해 보이는 지점은 코드로 고치는 대신 인수인계 메모로 남겼습니다.
    결과
    짧은 기간에도 팀의 흐름을 끊지 않고 기능을 더할 수 있었습니다. 남긴 메모는 팀이 판단해 반영하면 되는 형태였습니다.

03주요 기능

  • PDF 변환

    Puppeteer로 탐구 결과물을 인쇄용 레이아웃의 PDF로 생성.

  • 어드민 기능 지원

    관리자 화면의 조회·관리 기능 개발을 분담.

  • 버그 수정과 요구사항 반영

    운영 중 발견된 문제와 클라이언트 요청 사항을 처리.

04회고

짧게 투입되는 일에서 가장 필요한 능력은 빠르게 만드는 것이 아니라 빠르게 읽는 것이었습니다. 첫 이틀을 코드를 읽고 기존 규칙을 파악하는 데 쓴 것이, 결과적으로 기능을 붙이는 시간을 가장 많이 줄여줬습니다.

웹 화면을 인쇄물로 옮기는 일은 생각보다 다른 문제입니다. 화면에서는 스크롤이 모든 것을 해결해 주지만 종이는 잘리는 지점을 내가 정해야 합니다. 이후 화면을 만들 때도 '이게 인쇄되면 어디서 잘릴까'를 한 번쯤 생각하게 됐습니다.