System Design

λ°±μ—”λ“œ μ‹œμŠ€ν…œμ—μ„œμ˜ νƒ€μž„μ•„μ›ƒ(Timeout)에 λŒ€ν•œ 이해와 섀계 κΈ°μ€€

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2026. 1. 4.

 

πŸ”·κ°œμš”

2025λ…„ 12μ›” 17일, μ™ΈλΆ€ μˆ˜μ§‘μ²˜μΈ SSGμ—μ„œ 전사적인 μž₯μ• κ°€ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.
μž₯μ•  μ•Œλ¦Ό λ©”μ‹ μ €λ₯Ό ν†΅ν•΄ μƒν™©μ„ μΈμ§€ν•œ μ§ν›„, λ¬Έμ œ μ›μΈμ„ νŒŒμ•…ν•˜κΈ° μœ„ν•΄ κ΄€λ ¨ λ‘œκ·Έλ₯Ό ν™•μΈν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 


확인 κ²°κ³Ό, SSG 츑의 전체 μ„œλ²„ μž₯μ• λ‘œ 인해 μš”μ²­ 자체λ₯Ό μ •μƒμ μœΌλ‘œ μ²˜λ¦¬ν•  수 μ—†λŠ” μƒν™©μ΄μ—ˆμœΌλ©°, 이둜 인해 λͺ¨λ“  μš”μ²­μ΄ μ‹€νŒ¨ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
λ‹€λ§Œ λ‘œκ·Έ μƒμ— λ‚¨μ€ μ˜€λ₯˜ μœ ν˜•은 HTTP μš”μ²­ νƒ€μž„아웃이 μ•„λ‹Œ μ•‘μ…˜ νƒ€μž„아웃(Action Timeout) μœΌλ‘œ κΈ°λ‘λ˜μ–΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 


μ—¬κΈ°μ„œ λ§ν•˜λŠ” μ•‘μ…˜ νƒ€μž„μ•„μ›ƒμ΄λž€, “ν•˜λ‚˜μ˜ μ•‘μ…˜ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λŠ” 데 ν—ˆμš©ν•˜λŠ” 총 μ‹œκ°„”μž…λ‹ˆλ‹€.
APIμš”μ²­μ„ λ°›κ³  μ•‘μ…˜μ΄ μ‹œμž‘λœ μˆœκ°„λΆ€ν„°, λ‚΄λΆ€ 둜직과 μ™ΈλΆ€ 연동을 λͺ¨λ‘ 거쳐 κ²°κ³Όλ₯Ό λ°˜ν™˜(λ˜λŠ” 후속 처리λ₯Ό μ™„λ£Œ)ν•  λ•ŒκΉŒμ§€μ˜ 전체 ν—ˆμš© μ‹œκ°„μ„ μΌμ»«μŠ΅λ‹ˆλ‹€.
즉, “μ™ΈλΆ€ μ„œλ²„ μ‘λ‹΅ μ§€μ—°”이 μ•„λ‹ˆλΌ “λ‚΄λΆ€ λ‘œμ§μ΄ μ˜€λž˜ κ±Έλ € μ‹€νŒ¨ν•œ κ²ƒμ²˜λŸΌ” λ³΄μ΄λŠ” λ‘œκ·Έκ°€ λ‚¨κ³  μžˆμ—ˆλ˜ κ²ƒμž…λ‹ˆλ‹€.

 


μ΄μƒν•˜λ‹€κ³  νŒλ‹¨ν•˜μ—¬ 원인을 μΆ”μ ν•œ κ²°κ³Ό, 타 νŒ€μ—μ„œ μ™ΈλΆ€ HTTP μš”μ²­μ— λŒ€ν•œ νƒ€μž„μ•„μ›ƒ κ°’ λ¦¬νŒ©ν† λ§μ„ μ§„ν–‰ν•˜λ©΄μ„œ νƒ€μž„μ•„μ›ƒμ„ κΈ°λ³Έκ°’μœΌλ‘œ μ„€μ •ν•΄ λ†“μ•˜κ³ , κΈ°λ³Έ νƒ€μž„μ•„μ›ƒ 값은 μ•‘μ…˜ νƒ€μž„μ•„μ›ƒκ³Ό λ™μΌν•˜κ²Œ λ˜μ–΄ 있던 문제λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.
그둜 μΈν•΄ μ™ΈλΆ€ μš”청이 μ§€μ—°λ˜κ±°λ‚˜ μ‘λ‹΅ν•˜μ§€ μ•ŠλŠ” μƒν™©μ—μ„œλ„, HTTP μš”μ²­ λ‹¨κ³„μ—μ„œ νƒ€μž„아웃이 λ°œμƒν•˜μ§€ μ•Šκ³  μ „체 μ•‘μ…˜μ΄ λλ‚  λ•ŒκΉŒμ§€ λŒ€κΈ°ν•˜λ‹€κ°€, μ΅œμ’…μ μœΌλ‘œ μ•‘μ…˜ νƒ€μž„μ•„μ›ƒμœΌλ‘œ μ‹€νŒ¨ μ²˜λ¦¬λ˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 


이 κ΅¬μ‘°μ—μ„œλŠ” λ‹€μŒκ³Ό 같은 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.
μ‹€μ œ 원인은 μ™ΈλΆ€ μ„œλ²„ μž₯μ• μž„μ—λ„ 둜그 μƒμœΌλ‘œλŠ” λ‚΄λΆ€ 둜직이 였래 κ±Έλ¦° κ²ƒμ²˜λŸΌ 보이며 μž₯μ•  뢄석 μ‹œ 원인 νŒŒμ•…μ΄ μ–΄λ ΅κ³  μž¬μ‹œλ„, 우회 처리, μž₯μ•  μ „νŒŒ 차단 μ „λž΅μ„ μ μš©ν•˜κΈ°λ„ νž˜λ“€μ–΄μ§‘λ‹ˆλ‹€.

 


이에 따라 μ €λŠ” λ‚΄λΆ€ 둜직 μˆ˜ν–‰ 쀑 였래 κ±Έλ € λ°œμƒν•˜λŠ” μ‹€νŒ¨λŠ” μ•‘μ…˜ νƒ€μž„μ•„μ›ƒμœΌλ‘œ, μ™ΈλΆ€ μ‹œμŠ€ν…œ 호좜둜 인해 μ§€μ—°λ˜κ±°λ‚˜ 응닡을 λ°›μ§€ λͺ»ν•œ κ²½μš°λŠ” μš”μ²­ νƒ€μž„μ•„μ›ƒμœΌλ‘œ λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜μ—¬ λ‘œκΉ…λ  수 μžˆλ„λ‘, κ΄€λ ¨λœ 전체 파일의 νƒ€μž„μ•„μ›ƒ 섀정을 μˆ˜μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 


μž‘μ—…μ„ 톡해 λ‹¨μˆœνžˆ νƒ€μž„μ•„μ›ƒ 값을 μ‘°μ •ν–ˆλ‹€κΈ°λ³΄λ‹€λŠ”, "νƒ€μž„μ•„μ›ƒμ΄ μ™œ ν•„μš”ν•œμ§€", "μ–΄λ–€ μ’…λ₯˜μ˜ νƒ€μž„μ•„μ›ƒμ΄ μ‘΄μž¬ν•˜λŠ”μ§€", 그리고 "νƒ€μž„μ•„μ›ƒμ„ μ–΄λ–»κ²Œ κ΅¬λΆ„ν•˜κ³  섀계해야 운영 ν™˜κ²½μ—μ„œ 의미 μžˆλŠ” λ‘œκ·Έμ™€ μž₯μ•  λŒ€μ‘μ΄ κ°€λŠ₯ν•œμ§€"에 λŒ€ν•΄ κ³΅λΆ€ν•˜κ³  정리해 λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

 

 

πŸ€”νƒ€μž„μ•„μ›ƒ(Timeout)μ΄λž€ 무엇인가?

νƒ€μž„μ•„μ›ƒ(timeout)은 λ§ κ·ΈλŒ€λ‘œ μ–΄λ–€ μž‘업을 μ–Όλ§ˆλ‚˜ μ˜€λž˜ κΈ°λ‹€λ¦΄ κ²ƒμΈμ§€μ— λŒ€ν•œ μ΅œλŒ€ ν—ˆμš© μ‹œκ°„을 μ˜λ―Έν•©λ‹ˆλ‹€.
λ°±μ—”λ“œ μ‹œμŠ€ν…œμ—μ„œ νƒ€μž„아웃은 λ„€νŠΈμ›Œν¬ μš”μ²­, λ°μ΄ν„°λ² μ΄μŠ€ μ‘°νšŒ, μ™ΈλΆ€ API ν˜ΈμΆœ, λ‚΄λΆ€ λΉ„동기 μž‘μ—… λ“±μ—μ„œ μ •ν•΄μ§„ μ‹œκ°„ μ•ˆμ— μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•Šμ„ κ²½μš° μ‹€νŒ¨λ‘œ κ°„μ£Όν•˜κ³  μ€‘λ‹¨ν•˜λŠ” κΈ°μ€€μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

 


νƒ€μž„μ•„μ›ƒμ€ λ‹¨μˆœνžˆ “느리면 λŠλŠ”λ‹€”λŠ” μ˜λ―Έλ³΄λ‹¨ μ‹œμŠ€ν…œμ΄ 예기치 μ•Šμ€ μƒν™©μ—μ„œλ„ λ¬΄ν•œ λŒ€κΈ° μƒνƒœμ— λΉ μ§€μ§€ μ•Šλ„λ‘ ν•˜λŠ” λ°©μ–΄ μž₯치라고 λ³΄λŠ” 것이 더 μ •ν™•ν•©λ‹ˆλ‹€.
특히 λΆ„μ‚° μ‹œμŠ€ν…œ ν™˜κ²½μ—μ„œλŠ” “μ–Έμ œκΉŒμ§€ κΈ°λ‹€λ¦΄ κ²ƒμΈκ°€”λ₯Ό λͺ…ν™•νžˆ μ •μ˜ν•˜μ§€ μ•ŠμœΌλ©΄, μž‘은 μ§€μ—° ν•˜λ‚˜κ°€ μ „체 μ‹œμŠ€ν…œ μž₯μ• λ‘œ ν™•λŒ€λ  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

β±οΈνƒ€μž„μ•„μ›ƒμ΄ λ°˜λ“œμ‹œ ν•„μš”ν•œ 이유

1. λ¬΄ν•œ λŒ€κΈ°λŠ” λ°˜λ“œμ‹œ μ „μ—Όλ©λ‹ˆλ‹€

λ°±μ—”λ“œ μ‹œμŠ€ν…œμ—μ„œ ν•˜λ‚˜μ˜ μš”μ²­μ΄ 응닡을 λ°›μ§€ λͺ»ν•œ 채 계속 λŒ€κΈ°ν•˜κ²Œ 되면, ν•΄λ‹Ή μš”μ²­μ„ μ²˜λ¦¬ν•˜λ˜ μŠ€λ ˆλ“œλ‚˜ μ›Œμ»€λŠ” λ°˜ν™˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
이 μƒνƒœκ°€ λˆ„μ λ˜λ©΄ κ²°κ΅­ μŠ€λ ˆλ“œ ν’€ κ³ κ°ˆ, DB μ»€λ„₯μ…˜ ν’€ κ³ κ°ˆ, λ©”μ‹œμ§€ ν μ μ²΄λ‘œ μ΄μ–΄μ§€κ²Œ λ©λ‹ˆλ‹€.

 


ν˜„μ—…μ—μ„œλŠ” μ’…μ’… λ‹€μŒκ³Ό 같은 상황이 λ°œμƒν•©λ‹ˆλ‹€.
μ™ΈλΆ€ API ν•˜λ‚˜κ°€ λŠλ €μ‘Œμ„ 뿐인데, λ‚΄λΆ€ μ„œλΉ„μŠ€ 전체가 μ‘λ‹΅ν•˜μ§€ μ•ŠλŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” μž₯μ• 

μ΄λŠ” λŒ€λΆ€λΆ„ νƒ€μž„μ•„μ›ƒμ΄ μ—†κ±°λ‚˜ μ§€λ‚˜μΉ˜κ²Œ 길게 μ„€μ •λœ κ²½μš°μ— λ°œμƒν•©λ‹ˆλ‹€.

 

 

2. μ‹€νŒ¨λ₯Ό μΈμ§€ν•˜μ§€ λͺ»ν•˜λ©΄ 볡ꡬ도 ν•  수 μ—†μŠ΅λ‹ˆλ‹€

νƒ€μž„μ•„μ›ƒμ΄ μ—†λ‹€λŠ” 것은 κ³§, “이 μš”청이 μ‹€νŒ¨ν–ˆλŠ”μ§€ μ„±κ³΅ν–ˆλŠ”μ§€ μ˜μ›νžˆ μ•Œ μˆ˜ μ—†λ‹€”λŠ” μ˜λ―Έκ°€ λ©λ‹ˆλ‹€.
μ‹€νŒ¨λ₯Ό μΈμ§€ν•˜μ§€ λͺ»ν•˜λ©΄ μž¬μ‹œλ„λ„ ν•  수 μ—†κ³ , λ‹€λ₯Έ 경둜둜 μš°νšŒν•˜κ±°λ‚˜ λŒ€μ²΄ 처리 λ‘œμ§μ„ μ‹€ν–‰ν•  μˆ˜λ„ μ—†μŠ΅λ‹ˆλ‹€.
νƒ€μž„μ•„μ›ƒμ€ λ‹¨μˆœν•œ μ œν•œμ΄ μ•„λ‹ˆλΌ, μ‹€νŒ¨λ₯Ό λͺ…ν™•ν•˜κ³  λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•  수 있게 λ„μ™€μ€λ‹ˆλ‹€.

 

 

3. μ‚¬μš©μž κ²½ν—˜μ„ 보완할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©μž μž…μž₯μ—μ„œ λ‹€μŒ 두 κ°€μ§€ 상황을 비ꡐ해 λ³΄κ² μŠ΅λ‹ˆλ‹€.

  1. 10초 λ™μ•ˆ 아무 응닡도 μ—†λŠ” μš”μ²­
  2. 3초 λ§Œμ— “μΌμ‹œμ μΈ 였λ₯˜” 응닡을 λ°›λŠ” μš”μ²­

λŒ€λΆ€λΆ„μ˜ κ²½μš°, λΉ λ₯΄κ²Œ μ‹€νŒ¨ν•˜λŠ” μͺ½μ΄ ν›¨μ”¬ λ‚«μŠ΅λ‹ˆλ‹€.
νƒ€μž„μ•„μ›ƒμ€ λ‚΄λΆ€ μ‹œμŠ€ν…œ 보호뿐 μ•„λ‹ˆλΌ, μ‚¬μš©μž κ²½ν—˜μ˜ ν•˜ν•œμ„ μ„ λ³΄μž₯ν•˜λŠ” μ—­ν• λ„ ν•¨κ»˜ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

 

 

 

πŸ”’ νƒ€μž„μ•„μ›ƒμ˜ μ£Όμš” μ’…λ₯˜

νƒ€μž„μ•„μ›ƒμ€ ν•˜λ‚˜μ˜ κ°’μœΌλ‘œ λλ‚˜μ§€ μ•ŠμœΌλ©°, κ³„μΈ΅λ³„λ‘œ μ„œλ‘œ λ‹€λ₯Έ 의미λ₯Ό κ°€μ§‘λ‹ˆλ‹€.

 

1️⃣ 컀λ„₯μ…˜ νƒ€μž„μ•„μ›ƒ (Connection Timeout)

컀λ„₯μ…˜ νƒ€μž„μ•„μ›ƒμ€ μ„œλ²„μ™€ μ—°κ²° 자체λ₯Ό λ§ΊλŠ” λ°κΉŒμ§€ ν—ˆμš©ν•˜λŠ” μ‹œκ°„μ„ μ˜λ―Έν•©λ‹ˆλ‹€.
DNS μ‘°νšŒ, TCP Handshake, TLS Handshake κ³Όμ •이 μ—¬κΈ°μ— ν¬ν•¨λ©λ‹ˆλ‹€.

μ„œλ²„κ°€ μ£½μ–΄ μžˆκ±°λ‚˜ λ„€νŠΈμ›Œν¬κ°€ λ‹¨μ ˆλœ μƒν™©μ—μ„œλŠ”, 이 νƒ€μž„아웃이 μ—†μ„ κ²½μš° μš”청이 λ§€μš° μ˜€λžœ μ‹œκ°„ λŒ€κΈ° μƒνƒœλ‘œ λ‚¨κ²Œ λ©λ‹ˆλ‹€.
μ‹€λ¬΄μ—μ„œλŠ” 보톡 수백 λ°€λ¦¬μ΄ˆμ—μ„œ 수 초 μ΄λ‚΄λ‘œ 비ꡐ적 짧게 μ„€μ •ν•©λ‹ˆλ‹€.

 

 

2️⃣ 읽기 νƒ€μž„μ•„μ›ƒ (Read Timeout)

읽기 νƒ€μž„μ•„μ›ƒμ€ 연결은 μ™„λ£Œλ˜μ—ˆμ§€λ§Œ, 응닡 데이터λ₯Ό λ°›μ§€ λͺ»ν•˜κ³  μžˆλŠ” μƒνƒœμ—μ„œμ˜ λŒ€κΈ° μ‹œκ°„ μ œν•œμž…λ‹ˆλ‹€.

ν˜„μ—…μ—μ„œ κ°€μž₯ 자주 문제λ₯Ό μΌμœΌν‚€λŠ” νƒ€μž„μ•„μ›ƒ μœ ν˜•μ΄κΈ°λ„ ν•©λ‹ˆλ‹€. 특히 μ™ΈλΆ€ APIκ°€ “μ²˜λ¦¬λŠ” μ™„λ£Œν–ˆμ§€λ§Œ μ‘닡이 λŠ¦μ–΄μ§€λŠ” μƒν™©”μ—μ„œ μžμ£Ό λ°œμƒν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, κ²°μ œμ‚¬λ‚˜ 금육 API 연동 μ‹œ μ‹€μ œλ‘œλŠ” μ²˜λ¦¬κ°€ λ˜μ—ˆμ§€λ§Œ 응닡이 λŠ¦μ–΄ νƒ€μž„μ•„μ›ƒμ΄ λ°œμƒν•˜κ³  동일 μš”μ²­μ„ μž¬μ‹œλ„ν•˜κ²Œ λ˜λŠ” 상황이 μžˆμŠ΅λ‹ˆλ‹€.
이 경우, νƒ€μž„μ•„μ›ƒκ³Ό λ©±λ“±μ„± 섀계가 ν•¨κ»˜ κ³ λ €λ˜μ§€ μ•ŠμœΌλ©΄ 쀑볡 처리둜 μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

3️⃣ μ“°κΈ° νƒ€μž„μ•„μ›ƒ (Write Timeout)

μ“°κΈ° νƒ€μž„μ•„μ›ƒμ€ μš”μ²­ 데이터λ₯Ό μ„œλ²„λ‘œ μ „μ†‘ν•˜λŠ” 데 ν—ˆμš©λ˜λŠ” μ΅œλŒ€ μ‹œκ°„μž…λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œμ—μ„œ μš”μ²­ 데이터λ₯Ό μ„œλ²„ μ†ŒμΌ“μœΌλ‘œ λ°€μ–΄ λ„£λŠ” 과정이 λ„ˆλ¬΄ 였래 걸리고 μžˆμ§€ μ•Šμ€κ°€μ— λŒ€ν•΄ κ³ λ―Όν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. μ“°κΈ° νƒ€μž„아웃은 ν΄λΌμ΄μ–ΈνŠΈ λ„€νŠΈμ›Œν¬ μŠ€νƒ κ΄€μ μ˜ νƒ€μž„μ•„μ›ƒμž…λ‹ˆλ‹€.
특히 λŒ€μš©λŸ‰ μš”μ²­μ΄λ‚˜ 파일 μ—…λ‘œλ“œ, 슀트리밍 ν™˜κ²½μ—μ„œ μ€‘μš”ν•©λ‹ˆλ‹€.

일반적인 JSON 기반 APIμ—μ„œλŠ” 크게 μ²΄κ°λ˜μ§€ μ•Šμ§€λ§Œ, λŒ€μš©λŸ‰ μ—…λ‘œλ“œλ₯Ό μ²˜λ¦¬ν•˜λŠ” λ°±μ—”λ“œλΌλ©΄ λ°˜λ“œμ‹œ κ³ λ €ν•΄μ•Ό ν•˜λŠ” ν•­λͺ©μž…λ‹ˆλ‹€.

 

 

4️⃣ 전체 μš”μ²­ νƒ€μž„μ•„μ›ƒ (Request / Call Timeout)

전체 μš”μ²­ νƒ€μž„μ•„μ›ƒμ€ μš”μ²­ μ‹œμž‘λΆ€ν„° 응닡 μ™„λ£ŒκΉŒμ§€μ˜ 총 ν—ˆμš© μ‹œκ°„μ„ μ˜λ―Έν•©λ‹ˆλ‹€.
λ‚΄λΆ€μ μœΌλ‘œλŠ” connection, read, write νƒ€μž„아웃을 λͺ¨λ‘ ν¬ν•¨ν•˜λŠ” κ°œλ…μž…λ‹ˆλ‹€.

 

https://www.keycdn.com/support/408-request-timeout

 


업무 κ΄€μ μ—μ„œλŠ” κ°€μž₯ 직관적인 νƒ€μž„μ•„μ›ƒμ΄λ©°, “이 APIλŠ” μ΅œλŒ€ λͺ‡ μ΄ˆκΉŒμ§€ ν—ˆμš©ν•œλ‹€”λΌλŠ” μ„œλΉ„μŠ€ 기쀀선이 λ©λ‹ˆλ‹€.
μ•žμ„œ 저희 μ‚¬λ‚΄μ—μ„œ μ“°λŠ” μ•‘μ…˜ νƒ€μž„μ•„μ›ƒλ„ 이와 λ™μΌν•œ κ°œλ…μ„ κ°€μ§‘λ‹ˆλ‹€.

 

 

5️⃣ μ„œλ²„ λ‚΄λΆ€ νƒ€μž„μ•„μ›ƒ

μ™ΈλΆ€ 호좜이 없어도, μ„œλ²„ λ‚΄λΆ€μ—λŠ” λ‹€μ–‘ν•œ νƒ€μž„μ•„μ›ƒμ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • DB 쿼리 νƒ€μž„μ•„μ›ƒ
  • νŠΈλžœμž­μ…˜ νƒ€μž„μ•„μ›ƒ
  • 락 λŒ€κΈ° νƒ€μž„μ•„μ›ƒ
  • 큐 μ†ŒλΉ„ 처리 μ œν•œ μ‹œκ°„
  • 비동기 μž‘μ—… μ‹€ν–‰ μ œν•œ μ‹œκ°„


특히 DB λ½μ΄λ‚˜ νŠΈλžœμž­μ…˜ νƒ€μž„μ•„μ›ƒμ΄ 없을 경우, μ„±λŠ₯ λ¬Έμ œμ™€ 데이터 μ •ν•©μ„± λ¬Έμ œκ°€ λ™μ‹œμ— λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬λ‚΄μ—μ„œλ„ 쿼리 νƒ€μž„μ•„μ›ƒμ„ 6초 μ„€μ •ν•˜μ—¬ 였래 κ±Έλ¦¬λŠ” 쿼리의 경우 λ‘œκΉ…μ„ 남겨 쿼리 νŠœλ‹μ˜ μ—¬μ§€κ°€ μžˆλŠ”μ§€, 인덱슀λ₯Ό μ„€κ³„ν•΄μ„œ 보완해야 ν•˜λŠ”μ§€ νŒλ‹¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

πŸ“μ‹€λ¬΄μ—μ„œμ˜ νƒ€μž„μ•„μ›ƒ μ„€μ • κΈ°μ€€

νƒ€μž„μ•„μ›ƒμ„ μ„€μ •ν•  λ•Œ κ°€μž₯ μ€‘μš”ν•œ 점은 “μΌκ΄€λœ 숫자”κ°€ μ•„λ‹ˆλΌ “의미 μžˆλŠ” κΈ°μ€€”라고 μƒκ°ν•©λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ 각각의 λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬μ‚¬ν•­μ— 맞게 값을 μ„€μ •ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

 

1. 호좜 λŒ€μƒμ— 따라 λ‹€λ₯΄κ²Œ μ„€μ •

예λ₯Ό λ“€μ–΄ λ‹€μŒ μ„Έ ν˜ΈμΆœμ€ 성격이 μ™„μ „νžˆ λ‹€λ¦…λ‹ˆλ‹€.

  1. λ‚΄λΆ€ DB 쑰회
  2. λ‚΄λΆ€ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ 호좜
  3. μ™ΈλΆ€ 결제/금육 API 호좜


κ·ΈλŸΌμ—λ„ λͺ¨λ“  ν˜ΈμΆœμ— λ™μΌν•œ νƒ€μž„μ•„μ›ƒμ„ μ μš©ν•œλ‹€λ©΄, λΆˆν•„μš”ν•œ μ‹€νŒ¨ λ˜λŠ” κ³Όλ„ν•œ λŒ€κΈ°κ°€ λ°œμƒν•  κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€.

λŒ€λž΅μ μΈ κΈ°μ€€ μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • λ‚΄λΆ€ DB 쑰회: 수백 ms ~ 수 초
  • λ‚΄λΆ€ μ„œλΉ„μŠ€ 호좜: 1~2초
  • μ™ΈλΆ€ API 호좜: 2~5초 (업무 μ€‘μš”λ„μ— 따라 μ‘°μ •)

 

 

2. “μ΅œλŒ€ 처리 μ‹œκ°„”이 μ•„λ‹ˆλΌ “포기해도 λ˜λŠ” μ‹œκ°„”으둜 κΈ°μ€€ μ„€μ •

νƒ€μž„μ•„μ›ƒμ€ “μ΅œλŒ€ λͺ‡ 초 걸릴 수 μžˆλŠ”κ°€”κ°€ μ•„λ‹ˆλΌ, “이 이상 κΈ°λ‹€λ¦¬λŠ” 것은 μ˜λ―Έκ°€ μ—†λ‹€”λΌλŠ” κΈ°μ€€μœΌλ‘œ μ„€μ •ν•˜λŠ” 것이 λ°”λžŒμ§ν•©λ‹ˆλ‹€.
이 κ΄€μ μ΄ μ—†μœΌλ©΄ νƒ€μž„아웃 κ°’은 μ μ  λŠ˜μ–΄λ‚˜κΈ°λ§Œ ν•©λ‹ˆλ‹€.

 

 

3. μž¬μ‹œλ„ μ „λž΅κ³Ό ν•¨κ»˜ 섀계

νƒ€μž„μ•„μ›ƒλ§Œ 있고 μž¬μ‹œλ„κ°€ μ—†λ‹€λ©΄, μΌμ‹œμ μΈ λ„€νŠΈμ›Œν¬ λ¬Έμ œμ—λ„ λ°”λ‘œ μ‹€νŒ¨λ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€.
λ°˜λŒ€λ‘œ μž¬μ‹œλ„λ§Œ 있고 νƒ€μž„μ•„μ›ƒμ΄ μ—†λ‹€λ©΄, μ‹œμŠ€ν…œ 전체가 μž₯μ‹œκ°„ λŒ€κΈ°λ‘œ 묢일 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹€λ¬΄μ—μ„œλŠ” 보톡 λ‹€μŒ μš”μ†Œλ₯Ό ν•¨κ»˜ κ³ λ €ν•©λ‹ˆλ‹€.

  • νƒ€μž„μ•„μ›ƒ
  • μž¬μ‹œλ„ 횟수
  • μž¬μ‹œλ„ 간격(λ°±μ˜€ν”„)
  • Circuit Breaker νŒ¨ν„΄

 

 

βš οΈνƒ€μž„μ•„μ›ƒ μ„€μ • μ‹œ μžμ£Ό λ°œμƒν•˜λŠ” μ‹€μˆ˜

1. “일단 λ„‰λ„‰ν•˜κ²Œ” μ„€μ •ν•˜λŠ” κ²½μš°

κ°€μž₯ ν”ν•œ μ‹€μˆ˜λΌκ³  μƒκ°λ©λ‹ˆλ‹€. λ„‰λ„‰ν•œ νƒ€μž„아웃은 μ•ˆμ •μ μœΌλ‘œ λ³΄μ΄μ§€λ§Œ, μ‹€μ œλ‘œλŠ” μž₯μ•  μ „νŒŒ μ‹œκ°„을 λŠ˜λ¦½λ‹ˆλ‹€.

 

 

2. λͺ¨λ“  ν˜ΈμΆœμ— λ™μΌν•œ νƒ€μž„μ•„μ›ƒμ„ μ μš©ν•˜λŠ” 경우

μ‹œμŠ€ν…œμ˜ λ³΅μž‘λ„κ°€ λ†’μ•„μ§ˆμˆ˜λ‘, νƒ€μž„μ•„μ›ƒμ€ λ°˜λ“œμ‹œ 호좜 λ§₯λ½λ³„λ‘œ λΆ„λ¦¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 같은 Open API λ₯Ό ν†΅ν•œ μ£Όλ¬Έ 데이터 μˆ˜μ§‘μ΄λ”λΌλ„, ν•΄μ™Έ μ‡Όν•‘λͺ° 같은 경우 더 λ„‰λ„‰ν•œ μ‹œκ°„μ„ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

3. νƒ€μž„μ•„μ›ƒ 둜그λ₯Ό 남기지 μ•ŠλŠ” 경우

운영 ν™˜κ²½μ—μ„œ νƒ€μž„μ•„μ›ƒ λ‘œκ·ΈλŠ” μ„±λŠ₯ 병λͺ©κ³Ό μž₯μ•  원인을 μ°ΎλŠ” κ°€μž₯ μ€‘μš”ν•œ λ‹¨μ„œ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.
“νƒ€μž„μ•„μ›ƒμ΄ λ°œμƒν–ˆλ‹€”보닀 “μ–΄λ””μ—μ„œ, μ–Όλ§ˆλ‚˜ 기닀리닀 μ‹€νŒ¨ν–ˆλŠ”μ§€”κ°€ 훨씬 μ€‘μš”ν•©λ‹ˆλ‹€.


 

πŸ“œλ§ˆλ¬΄λ¦¬ν•˜λ©°

νƒ€μž„μ•„μ›ƒμ€ λ‹¨μˆœν•œ μ„€μ • 값이 μ•„λ‹™λ‹ˆλ‹€. μ ν•©ν•œ νƒ€μž„μ•„μ›ƒμ„ μ„€μ •ν•˜κΈ° μœ„ν•΄μ„  μ‹œμŠ€ν…œμ΄ μ‹€νŒ¨λ₯Ό μ–΄λ–»κ²Œ λ°›μ•„λ“€μ΄λŠ”μ§€, μ–Έμ œ ν¬κΈ°ν•˜κ³  μ–Έμ œ 버틸 것인지 κ³ λ―Όν•΄μ•Όν•©λ‹ˆλ‹€.
μ œλŒ€λ‘œ 된 νƒ€μž„μ•„μ›ƒ 섀정은 λ‚΄λΆ€ μ‹œμŠ€ν…œμ˜ λ¦¬μ†ŒμŠ€ λ‚­λΉ„λ₯Ό 쀄이고, μ‚¬μš©μž κ²½ν—˜μ„ λ†’μž…λ‹ˆλ‹€.

 

 

μ •ν™•ν•œ νƒ€μž„ 아웃 μ„€μ •κ³Ό 정책은 μž₯μ•  λ°œμƒμ‹œμ—λ„ λΉ λ₯΄κ²Œ λŒ€μ²˜ν•˜λŠ” 데에 도움이 λ©λ‹ˆλ‹€. 컀λ„₯μ…˜ νƒ€μž„μ•„μ›ƒμ΄ λ°œμƒν–ˆλ‹€λ©΄ 내뢀적인 둜직의 였λ₯˜ νŒŒμ•…μ΄ μ•„λ‹Œ 인프라적인 λ¬Έμ œκ°€ μžˆλŠ”μ§€ λΉ λ₯΄κ²Œ 진단해볼 수 μžˆμŠ΅λ‹ˆλ‹€.

DB 쿼리 νƒ€μž„μ•„μ›ƒ λ°œμƒμ‹œ, 쿼리 κ°œμ„ μ΄ ν•„μš”ν•œ 상황을 λΉ λ₯΄κ²Œ μΈμ§€ν•˜κ³ , DB μž₯애에 이어지지 μ•Šλ„λ‘ μ˜ˆλ°©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€