Developer.

10. Spring Boot Custom Failure Analyzer

🚧 μž‘μ„±μ€‘

πŸͺ› ν•œκ³„μ 

μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‹€μˆ˜μ˜ μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ μ‹€νŒ¨(Trap) ν™•λ₯ μ΄ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ³΅μž‘ν•΄μ§€κ³  규λͺ¨κ°€ 컀지면 μ˜ˆμ™Έ 상황이 λ°œμƒν•  ν™•λ₯ μ΄ λŠ˜μ–΄λ‚œλ‹€. 이에 따라 였λ₯˜λ“€μ„ μž‘μ„ 수 μžˆλ„λ‘ μ •ν™•ν•œ logging 이 ν•„μš”ν•˜λ©°, 개발 생산성과 μ‹ μ†ν•œ κ°œμ„ μ„ 도λͺ¨ν•  수 μžˆλ‹€.

πŸ“‚ λͺ©μ°¨


πŸ“š λ³Έλ¬Έ

μ˜ˆμ™Έλ₯Ό κ°μ§€ν•˜κ³ , ν•΄λ‹Ή μ΄μŠˆμ— λŒ€ν•œ 정보λ₯Ό λ„μšΈ 수 μžˆλŠ” 무언가가 ν•„μš”ν•  것이닀. HTTP 포트λ₯Ό μ—¬λŸ¬κ°œ λ„μš°λ‹€κ°€ ν¬νŠΈκ°„μ˜ μΆ©λŒμ΄λ‚˜ μ™ΈλΆ€ API μš”μ²­μ΄ ν•„μš”ν•œλ°, ν•΄λ‹Ή μ™ΈλΆ€ API μ„œλΉ„μŠ€κ°€ λΆˆκ°€μš©ν•  κ²½μš°μ—λ„ λ©”μ‹œμ§€λ₯Ό λ„μ›Œμ£Όμ–΄μ•Ό ν•˜κ³ (DB μ„œλ²„μ—μ„œ 자주 λ°œμƒ), 내뢀적인 λ‘œμ§μ—μ„œ μ–΄λ–€ μ½”λ“œμ—μ„œ μ–΄λ–€ 였λ₯˜κ°€ λ‚¬λŠ”μ§€λ„ ν•„μš”ν•  것이닀.

μ΄λ•Œ μ‹€νŒ¨ 뢄석기λ₯Ό μ‚¬μš©ν•œλ‹€. λͺ©ν‘œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • λ°œμƒν•œ νŠΈλž©μ— λŒ€ν•œ 상세 λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•˜μ—¬ 문제의 κ·Όλ³Έ 원인과 해결책을 μ œμ‹œν•œλ‹€.
  • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹œμž‘ μ‹œμ μ—μ„œ 검증을 μˆ˜ν–‰ν•˜μ—¬ μΆ”μΈ‘ κ°€λŠ₯ν•œ μ—λŸ¬λ₯Ό 일찍 νŒŒμ•…ν•˜μ—¬ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ•„μ˜ˆ λ™μž‘ν•˜μ§€ μ•Šκ²Œ ν•  수 μžˆλ‹€.

Custom Spring Boot Failure Analyzer

예제둜 μ˜μ‘΄ν•˜λŠ” μ™ΈλΆ€ REST μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ”μ§€λ₯Ό μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹œμž‘ μ§€μ μ—μ„œ 확인해야 ν•˜λŠ” 상황이닀. μ—¬κΈ°μ„œλŠ” Postgres Server 에 λŒ€ν•΄ 검증을 μˆ˜ν–‰ν•΄λ³΄μž.

μ˜ˆμ™Έλ₯Ό λ”°λ‘œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ λ‹€μŒμ„ μž‘μ„±ν•œλ‹€.

public class UrlNotAccessibleException extends RuntimeException {
    private String url;

    public UrlNotAccessibleException(String url) {
        this(url, null);
    }

    public UrlNotAccessibleException(String url, Throwable cause) {
        super("URL " + url + " is not accessible", cause);
        this.url = url;
    }
}

url 의 연결에 μ‹€νŒ¨ν•˜λ©΄ λ°œμƒν•˜λŠ” λŸ°νƒ€μž„ μ˜ˆμ™Έμ΄λ‹€.


βœ’οΈ μš©μ–΄

######


πŸ”— κ΄€λ ¨ 좜처