Skip to content

[ Infra ] prod 실기동 차단 8건 + 병원 API 접근제어 교정 #70

Description

@RosieOh

🧑‍💻 오늘의 개발하면서 생긴 크고 작은 이슈사항을 기록해주세요

💚 어떤 기능인가요?

prod 프로파일로 실제 기동을 시도한 결과, 애플리케이션이 한 번도 정상적으로 뜬 적이 없다는 사실을 확인했습니다.
DB 스키마·로깅 설정·기동 러너까지 순차적으로 막혀 있었고, 기동에 성공한 뒤에도 병원 API가 전부 401/500이었습니다.

발견한 기동 차단 원인

#증상원인
1로그 경로가 ..._IS_UNDEFINEDLogback 은 ${VAR:-기본값} 문법인데 Spring 문법 ${VAR:기본값} 을 씀
2Function 'ngram' is not definedV4 의 WITH PARSER ngram 은 MySQL 전용, MariaDB 미지원
3전 테이블 검증 실패Boot 기본 네이밍 전략이 테이블명을 소문자로 바꿈. 마이그레이션은 대문자
4missing table 다수TBL_POLICY_BOOKMARKS, TBL_NOTIFICATION_CHANNEL 이 DDL 에 없음
5missing column view_count엔티티·서비스는 쓰는데 컬럼이 없어 조회수가 저장된 적 없음
6죽은 매핑HealthRecordType 은 참조 0건이고 테이블도 없음
7Table 'carecode.tbl_hospital' doesn't exist기동 러너가 소문자 네이티브 SQL 사용. 게다가 병원을 정원 50·평점 4.5 허구값으로 시설 테이블에 복사
8/actuator/health 503메일 헬스체크가 SMTP 장애만으로 전체를 DOWN 시킴

기동 이후 발견한 문제

  • 병원 API 실제 경로는 /health/hospitals/** 인데 SecurityConfig 공개 규칙은 존재하지 않는 /hospitals/** 에 걸려 있었음.
    앞선 /health/**authenticated() 가 전부 잡아 병원 목록·검색·리뷰 조회가 모두 로그인 필수였음
  • 클래스 레벨 @PreAuthorize("isAuthenticated()") 가 URL 규칙을 덮고 있었음
  • 없는 URL 과 권한 거부가 404/403 이 아니라 500 + 운영 알림으로 처리됨

✅ To Dos

  • Logback 기본값 문법 수정 + prod 로그 경로 지정
  • V4 에서 ngram 파서 제거 (LIKE 폴백으로 검색은 동작)
  • 테이블명을 보존하는 CareCodeNamingStrategy 추가
  • V15 로 누락 테이블·컬럼 보충
  • 죽은 HealthRecordType 매핑 제거
  • 허구 데이터를 만드는 기동 러너 삭제
  • 메일 헬스체크가 서비스 전체를 내리지 않도록 분리
  • 병원 공개 조회 경로 교정 (URL 규칙 + 메서드 어노테이션)
  • 404/403 이 500 으로 새지 않도록 전역 핸들러 보강
  • prod 프로파일 실기동 + 전 엔드포인트 응답 검증

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions