Spring 심화 (운영형 Spring)

KimGwangmin·5일 전

개발 완료 vs 운영 가능

구분개발 완료운영 가능
정의기능이 동작함배포 후에도 관리 가능
상태 확인❌ "돌아가는 것 같다"✅ 헬스체크로 확인 가능
장애 대응❌ "왜 안 되지?"✅ 로그로 원인 추적 가능
환경 대응❌ "내 PC에서는 됐는데"✅ 설정 분리로 환경별 대응

상황 예시

  1. 새벽 3시 장애 발생
    • ❌ 운영 불가: "서버 들어가서 확인해봐야..." → 2시간 소요
    • ✅ 운영 가능: 헬스체크 DOWN → 로그 확인 → 10분 내 원인 파악
  2. 스테이징 → 프로덕션 배포
    • ❌ 운영 불가: DB 설정 하드코딩 → 프로덕션 DB 연결 실패
    • ✅ 운영 가능: 환경변수로 설정 주입 → 무사히 배포

운영의 3요소

요소역할질문
Health서버 상태 확인"앱이 살아있나?"
Log문제 원인 추적"왜 에러가 났나?"
Config환경별 설정"로컬 vs 운영 구분?"

Health (헬스체크)

서버가 정상 동작 중인지 확인

  • UP: 정상
  • DOWN: 문제 발생
# 헬스체크 요청
curl http://localhost:8080/actuator/health

# 응답 예시
{"status":"UP"}

실제 응답 예시

Log (로그)

장애 발생 시 원인 추적

예시

2024-01-15 10:30:45 INFO  - Application started
2024-01-15 10:31:02 ERROR - Database connection failed
2024-01-15 10:31:02 ERROR - java.sql.SQLException: Connection refused
  • DB 연결 실패가 원인이라는 걸 확인

Config (설정)

환경(로컬/개발/운영)별로 다른 설정 적용

환경DB 호스트로그 레벨
locallocalhostDEBUG
prodrds.amazonaws.comINFO
  • 코드 수정 없이 환경변수로 설정 변경
  • 하드코딩하지 말것!

0개의 댓글