v2.50change journal

POP-SPOT v2.50 — /en·/ja 접근 차단 해소 · 화면 언어 표시 교정 · CI 검사 순서

김동현104
#백엔드#프론트엔드#회고#트러블슈팅
v2.50 릴리즈에 포함된 Git 기록을 빠짐없이 펼친 기술 기록이다. 전문 용어는 바로 풀어 쓰고, 바뀐 모든 코드 줄을 Before → After로 비교했다.

공식 릴리즈 노트부터 쉽게 읽기

GitHub v2.50 릴리즈 노트 원문

v2.49에서 영어와 일본어 페이지를 만들었지만 실제 방문자는 해당 주소에 들어가면 로그인 화면으로 밀려났다. 검색 서비스는 정상 페이지로 보았지만 사람이 브라우저로 열 때만 접근 검사가 작동해 발견하기 어려운 문제였다.

1. 영어·일본어 주소를 로그인 없이 열 수 있게 했다

/en/ja를 허용 목록에 하나씩 더하는 방식은 다음 언어가 추가되면 또 빠뜨릴 수 있다. 그래서 주소 앞의 언어 표시를 잠시 떼고 원래 공개 주소인지 판단하도록 바꿨다. /ja/popups/seongsu/popups/seongsu와 같은 공개 페이지로 보는 방식이다.

2. 화면 언어와 문서 언어 표시를 맞췄다

일본어 화면인데 문서 언어가 한국어로 표시되던 문제를 고쳤다. 이 값이 어긋나면 화면 읽기 도구가 일본어 문장을 한국어 발음으로 읽을 수 있다. 주소가 언어를 정하는 구간에서는 그 구간의 설정만 문서 언어를 바꾸도록 했다.

3. Next.js 보안 업데이트는 배포 문제 때문에 되돌렸다

보안 권고를 해결하려고 Next.js 16.2.12로 올렸고 로컬 검사와 자동 검사도 통과했다. 그러나 Vercel에서 빌드가 끝나도 실제 서비스 배포로 올라가지 않았다. 현재 사용자에게 직접 영향을 주는 접근 차단 문제를 먼저 배포하기 위해 16.1.6으로 되돌렸다. 보안 권고 28건은 해결되지 않은 과제로 남아 있다.

4. 자동 검사가 서로를 가리지 않게 했다

예전에는 보안 감사가 첫 단계에서 실패하면 타입 검사, 서식 검사, 테스트, 빌드가 모두 건너뛰어졌다. 이제 코드 검사를 먼저 모두 실행하고 보안 감사 결과는 마지막에 별도로 남긴다. 보안 문제를 숨긴 것이 아니라 다른 고장까지 함께 볼 수 있게 순서를 바꾼 것이다.

5. 같은 사진이 다시 저장되는 길을 한 번 더 막았다

사진 번호가 비어 있는 과거 데이터에서는 기존 중복 방지가 작동하지 않았다. 이제 사진 주소까지 비교하고, 저장 직전에도 같은 주소가 있는지 다시 확인한다. 이미 쌓인 중복 사진 116건은 별도 정리가 필요하지만 새 중복이 늘어나는 것은 막았다.

두 가지 숫자가 다른 이유

  • v2.49 최종 상태와 v2.50 최종 상태를 비교하면 19개 파일, 추가 338줄, 삭제 58줄이다.
  • 6개 커밋을 하나씩 따라가면 같은 파일을 여러 번 고친 기록까지 포함해 24개 파일 변경, 추가 442줄, 삭제 162줄이다.
  • 아래 본문은 커밋별·파일별 변경을 빠뜨리지 않기 위해 두 번째 숫자를 기준으로 기록했다.
  • 릴리즈 뒤에 남은 과제

  • Next.js 보안 권고 28건은 배포 승격 문제가 풀린 뒤 다시 업데이트해야 한다.
  • 이미 저장된 중복 사진 116건은 되돌릴 수 있는 백업을 만든 뒤 별도로 정리해야 한다.

  • 먼저 쉽게 설명하면

    Next 16.1.6 롤백 — 배포 승격 문제 우회, /en·/ja 접근 차단 해소 반영 작업이 중심이다. 이 릴리즈는 눈에 보이는 결과뿐 아니라 그 결과를 만든 파일과 코드까지 모두 추적했다.

    읽는 법

  • Before는 바뀌기 전 줄이다.
  • After는 바뀐 뒤 줄이다.
  • ‘해당 코드 없음’은 새로 추가했거나 완전히 지운 구간이라는 뜻이다.
  • 영상·이미지처럼 글자로 비교할 수 없는 파일은 Git의 추가·수정·삭제 상태로 기록했다.
  • Git 기준 범위

  • 릴리즈: v2.50
  • 기준 날짜: 2026-07-29
  • 커밋: 6개
  • 파일 변경 기록: 24개
  • 추가한 줄: 442줄
  • 삭제한 줄: 162줄
  • 검증 ID: 6153dad274979d386180e17075e40df43c39063ca382c6f1a4b1a5b0f70130c5
  • 기준 커밋: 65ee14100137

  • 커밋 bc76478 — fix(사진/포매팅): 같은 사진을 URL 기준으로도 막는다 + spotless 위반 해소변경 파일 12

    GitHub에서 이 커밋 보기

    쉬운 설명: 같은 사진을 URL 기준으로도 막는다 + spotless 위반 해소 작업이다.

    바꾼 이유: ## 사진 중복 2차 방어

    파일 수: 12개이다.


    파일 1. .github/workflows/quality.yml

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 2. popspot-backend/src/main/java/com/example/popspotbackend/config/HttpClients.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 3. popspot-backend/src/main/java/com/example/popspotbackend/config/LogSafe.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 4. popspot-backend/src/main/java/com/example/popspotbackend/repository/MateChatMessageRepository.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 5. popspot-backend/src/main/java/com/example/popspotbackend/repository/PopupImageRepository.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 6. popspot-backend/src/main/java/com/example/popspotbackend/service/AccountDeletionService.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 7. popspot-backend/src/main/java/com/example/popspotbackend/service/PopupPhotoService.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 8. popspot-backend/src/main/java/com/example/popspotbackend/service/UploadedFileCleaner.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 9. popspot-backend/src/main/resources/db/migration/V26__pexels_url_uniqueness.sql

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 10. popspot-backend/src/test/java/com/example/popspotbackend/controller/AuthControllerTest.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 11. popspot-backend/src/test/java/com/example/popspotbackend/service/AccountDeletionServiceTest.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 12. popspot-backend/src/test/java/com/example/popspotbackend/service/PopupPhotoServiceTest.java

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    커밋 6c01d1b — fix(보안/접근): Next.js 16.2.12 + /en·/ja 가 사람을 로그인으로 튕기던 문제변경 파일 8 · 자동 생성·보조 1개

    GitHub에서 이 커밋 보기

    쉬운 설명: Next.js 16.2.12 + /en·/ja 가 사람을 로그인으로 튕기던 문제 작업이다.

    바꾼 이유: ## Next.js 16.2.12

    파일 수: 8개이다.


    파일 1. .gitignore

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 2. popspot-frontend/app/popups/[slug]/page.tsx

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 4. popspot-frontend/package.json

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 5. popspot-frontend/src/components/AuthGuard.paths.test.ts

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 6. popspot-frontend/src/components/AuthGuard.tsx

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 7. popspot-frontend/src/components/ThemeToggle.tsx

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 8. popspot-frontend/src/lib/i18n.tsx

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    자동 생성·보조 파일 1개 — Git 대조 기록
    파일 3. popspot-frontend/package-lock.json
    Git 이력 대조에는 포함했다. 도구가 자동으로 만들거나 사람이 직접 읽기 어려운 파일이라 본문 코드 비교에서는 접었다.
    커밋 c027aca — merge: Next.js 16.2.12 + /en·/ja 접근 차단 해소변경 파일 0

    GitHub에서 이 커밋 보기

    쉬운 설명: Next.js 16.2.12 + /en·/ja 접근 차단 해소 작업이다.

    바꾼 이유: 커밋 제목에 적힌 문제를 해결하기 위해 코드를 바꿨다.

    파일 수: 0개이다.


    커밋 cd71547 — chore: 재배포 유발 — 19:24 빌드가 운영에 반영되지 않음변경 파일 0

    GitHub에서 이 커밋 보기

    쉬운 설명: 재배포 유발 — 19:24 빌드가 운영에 반영되지 않음 작업이다.

    바꾼 이유: 빌드는 성공했는데(741 페이지) 운영 도메인은 계속 이전 배포를 서비스한다. / · /en · /ja 모두 X-Vercel-Cache HIT 로 옛 청크를 가리키고, 배포본 어디에도 이번 수정이 들어 있지 않다. 승격이 안 된 것으로 보여 새 배포를 유발한다.

    파일 수: 0개이다.


    커밋 14f6e0c — fix(배포): Next.js 16.1.6 으로 되돌림 — 16.2.12 가 배포로 승격되지 않음변경 파일 4 · 자동 생성·보조 1개

    GitHub에서 이 커밋 보기

    쉬운 설명: Next.js 16.1.6 으로 되돌림 — 16.2.12 가 배포로 승격되지 않음 작업이다.

    바꾼 이유: ## 왜 되돌리나

    파일 수: 4개이다.


    파일 1. .github/workflows/quality.yml

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 2. popspot-frontend/next-env.d.ts

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    파일 4. popspot-frontend/package.json

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    자동 생성·보조 파일 1개 — Git 대조 기록
    파일 3. popspot-frontend/package-lock.json
    Git 이력 대조에는 포함했다. 도구가 자동으로 만들거나 사람이 직접 읽기 어려운 파일이라 본문 코드 비교에서는 접었다.
    커밋 65ee141 — merge: Next 16.1.6 롤백 — 배포 승격 문제 우회, /en·/ja 접근 차단 해소 반영변경 파일 0

    GitHub에서 이 커밋 보기

    쉬운 설명: Next 16.1.6 롤백 — 배포 승격 문제 우회, /en·/ja 접근 차단 해소 반영 작업이다.

    바꾼 이유: 커밋 제목에 적힌 문제를 해결하기 위해 코드를 바꿨다.

    파일 수: 0개이다.


    자동 대조 결과

    이 글 묶음은 Git 커밋 6개와 파일 변경 24개를 원본 이력에서 직접 읽어 만들었다.

    검증 ID는 6153dad274979d386180e17075e40df43c39063ca382c6f1a4b1a5b0f70130c5이다. 이 값은 포함된 커밋 순서와 해시가 하나라도 달라지면 함께 달라진다.

    포함 커밋: bc7647850930e115f82f5313dbee7874a1b59765, 6c01d1b0025dacfa2e07823ac0999b2c6846dac9, c027aca6f28dc632f4728e52fc709d3d8de76f62, cd715476e23d3030542b272357d359613566d288, 14f6e0c9753a93774e207a0898643136e5d29020, 65ee1410013703f6efd141e183a8ffa3ec33fae2

    공유XLinkedIn

    댓글