Devin.KR

Linux 실행과 배포 리허설

설정·비밀값을 분리하고 Linux 실습 환경에서 동일 산출물을 실행합니다.

진도 0%

레슨

  1. 셸과 환경 설정

    경로·인용·권한·출력·오류·종료 상태를 구분합니다.

  2. 빌드와 실행 산출물

    Maven 캐시·버전 고정·외부 설정으로 실행을 재현합니다.

  3. Linux 컨테이너 리허설

    이미지·볼륨·실행 계정과 설정 주입을 구분합니다.

  4. 배포 점검과 변경 기록

    권한·CRUD·롤백 점검과 리뷰 자료를 정리합니다.

Linux 실행과 배포 리허설 미션

앞 모듈의 결과를 이어서 동아리 API를 Linux 테스트 환경에 재현 가능하게 배포합니다.

요구사항

  • 앞 모듈 미션 solution의 인증·권한·CSRF·대여·멱등성 코드와 156개 검사를 보존하고 Boot 3.1.5 실행 jar로 패키징합니다.
  • CATALOG_JDBC_URL과 APP_CONFIG를 외부에서 전달하고 UID/GID 10001, 읽기 전용 설정, 전용 H2 named volume으로 Linux에서 실행합니다.
  • 해시 검증 후 릴리스를 선택하고 이전 실행 종료·old 선택·같은 볼륨 재기동·조회/키 재생 확인의 순서로 복구를 리허설합니다.
  • README-M09.md에 준비·실행·점검·복구를 읽고 REVIEW.md에 변경 이유·검증 결과·제한·리뷰 요청을 작성합니다.

완료 기준

  • 외부 Docker 환경에서 bash check.sh가 준비 확인, 셸 5개, 릴리스 선택 6개, 기준 Java 157개·candidate 누적 161개와 실행 jar 구조, 컨테이너 UID를 검사하여 종료 0을 반환합니다. 준비 부족은 PREP_REQUIRED/종료 3입니다.
  • 전용 새 볼륨에서 익명 조회·로그인·대여 201/Location·같은 키 재생·다른 본문 409·다른 회원 404·권한/CSRF 403 계약이 유지됩니다.
  • 누락 설정은 이름만 stderr에 알리고 종료 2로 끝납니다. 손상된 릴리스는 선택 파일을 유지하며 재기동/old 선택 뒤 같은 도서 목록과 대여 이력·요청 키 결과를 확인합니다.
  • 앞 모듈 소스 기준 jar와 이번 candidate jar를 별도 빌드해 두 해시가 다름을 확인합니다. 스키마 변경을 포함하지 않은 두 파일의 계약 검사이며 임의 과거 버전 호환성·무중단 배포·백업 복원을 증명했다고 쓰지 않습니다.
  • Docker 실행은 작성 환경에서 불가하므로 verify=external의 PENDING을 실패로 세지 않되, 실제 실행 통과로도 기록하지 않습니다.
bash check.sh
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 앞 모듈 계약 보존, 산출물 해시와 외부 설정의 실제 소비 경로를 설명합니다.
  • 실제 두 버전 DB 호환성 검증의 한계, 중단 기준과 복구 후 확인을 구분합니다.
  • 비밀값 없이 재실행 가능한 REVIEW.md와 외부 HTTP 검증 근거를 제출합니다.