Skip to content

chore: 개발 서버 ARM64 마이그레이션 준비 - #332

Merged
pizzazoa merged 2 commits into
developfrom
feature/delete-scheduler
Sep 5, 2026
Merged

chore: 개발 서버 ARM64 마이그레이션 준비#332
pizzazoa merged 2 commits into
developfrom
feature/delete-scheduler

Conversation

@pizzazoa

@pizzazoa pizzazoa commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📝 요약(Summary)

개발 서버를 t2.micro(x86) → t4g.micro(ARM64)로 옮기기 위한 이미지·배포 파이프라인 정비.
운영 서버는 이번 변경의 영향을 받지 않는다.

ARM64 지원

  • Dockerfile: 빌드 스테이지를 --platform=$BUILDPLATFORM으로 고정. Spring Boot JAR은 아키텍처 독립이므로
    Gradle 빌드는 러너에서 네이티브로 한 번만 돌고 런타임 스테이지만 타깃별로 만들어진다. 베이스는 jammy로 고정.
  • deploy/postgres-ko/Dockerfile: postgis/postgis:17-3.5amd64 전용이라
    postgres:17-bookworm + PGDG postgresql-17-postgis-3 설치로 교체. 이미지는 EC2에서 네이티브 빌드한다.
  • 워크플로에 QEMU 추가, platforms: linux/arm64, 빌드 캐시 ref를 buildcache-arm64로 분리.

배포 파이프라인

  • workflow_dispatchdeploy_mode 입력 추가 — infrastructure-only는 DB/Redis만 띄우고 멈춘다(이전 중 pg_restore용).
  • 전환 기간 동안 develop push 자동 배포를 잠금. 저장소 변수 DEV_ARM64_AUTODEPLOY=true로 해제한다.
  • concurrency: deploy-dev로 동시 실행 방지.
  • 운영과 동일하게 이미지 digest 고정 배포. DB/Redis 헬스체크 통과를 기다린 뒤 --no-deps app으로 앱만 재생성한다
    (기존에는 서비스명 없이 --force-recreate라 배포마다 PostgreSQL까지 재생성됐다).

경로·데이터

  • ~/saerok/srv/saerok. 데이터는 /srv/saerok/data/{postgres,redis}, 백업은 /srv/saerok/backup.
  • DB_URL을 시크릿 대신 컨테이너 내부 주소(postgres:5432)로 고정.

보안

  • 로그에서 민감정보 제거 — OAuth 인가 코드, 리프레시 토큰 원문, 카카오 sub/email,
    Apple 응답 전체, JWT 예외 메시지가 로그로 나가고 있었다.
  • 앱 포트를 127.0.0.1:8080으로만 바인딩하고 Nginx 리버스 프록시 추가. PostgreSQL 5432 호스트 노출 제거.
  • 배포 실패 시 Actions 로그에 컨테이너 원문 로그 대신 docker inspect 요약만 출력.
  • .dockerignore 추가 — 빌드 컨텍스트에서 .env, .git, docs 등 제외.

안정성

  • t4g 기준으로 cpus/mem 재조정 + mem_reservation 지정, 로그 로테이션(10m×3), 앱 헬스체크,
    init: true, postgres stop_grace_period 15s→30s.
  • 레거시 워크플로 deploy-to-dev-ec2.yml 삭제.

배포 순서

  1. DEV_ARM64_AUTODEPLOY가 설정되지 않은 상태 확인
  2. workflow_dispatchinfrastructure-only로 DB/Redis 기동
  3. 기존 서버에서 pg_dump → 새 서버로 pg_restore
  4. workflow_dispatchfull로 앱 기동, Nginx/DNS 전환
  5. 검증 후 DEV_ARM64_AUTODEPLOY=true

상세 절차는 docs/dev-t4g-migration-runbook.md 참고.

💬 공유사항

  • postgres-ko 베이스 교체 후 PostGIS 동작 (postgis_full_version(), location::geography 인덱스)
  • 앱 로그에 남길 정보의 수준이 적절한지
  • t4g.micro 자원 한도(앱 512m / PG 256m / Redis 192m)

✅ PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • [✅] PR 제목을 커밋 메시지 컨벤션에 맞게 작성했습니다.

@pizzazoa
pizzazoa merged commit 738f106 into develop Sep 5, 2026
1 check passed
@pizzazoa
pizzazoa deleted the feature/delete-scheduler branch September 5, 2026 07:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant