KOTLIN · 예외처리
실패 안전 패턴 (Fail-Safe)
실패 시에도 시스템이 안전하게 동작하도록 폴백과 기본값 전략을 설계합니다.
예외처리중급fail-safefallbackresiliencegraceful-degradation
핵심 설명
실패 시에도 시스템이 안전하게 동작하도록 폴백과 기본값 전략을 설계합니다.
Kotlin code
class ResilientService {
private val cache = mutableMapOf<String, String>()
// 폴백 체인
suspend fun getData(key: String): String {
return tryPrimary(key)
?: tryCache(key)
?: tryFallback(key)
?: getDefault(key)
}
private suspend fun tryPrimary(key: String): String? = runCatching {
// 네트워크 호출 시뮬레이션
if (Math.random() > 0.5) throw RuntimeException("네트워크 오류")
"서버 데이터: $key".also { cache[key] = it }
}.getOrNull()
private fun tryCache(key: String): String? =
cache[key]?.also { println("캐시 히트: $key") }
private fun tryFallback(key: String): String? =
runCatching { "폴백 데이터: $key" }.getOrNull()
private fun getDefault(key: String): String =
"기본값: $key"
}
fun main() = kotlinx.coroutines.runBlocking {
val service = ResilientService()
repeat(5) {
val result = service.getData("item-$it")
println(result)
}
}학습 팁
폴백 체인은 우선순위 순서로 데이터 소스를 시도합니다. 각 단계를 독립적으로 테스트할 수 있어 유지보수가 쉽습니다.
주의할 점
폴백이 자동으로 성공하면 사용자가 데이터가 오래된 것을 모를 수 있습니다. 폴백 사용 시 경고나 표시를 함께 제공하세요.
자주 묻는 질문
실패 안전 패턴 (Fail-Safe)란 무엇인가요?
실패 시에도 시스템이 안전하게 동작하도록 폴백과 기본값 전략을 설계합니다.
실패 안전 패턴 (Fail-Safe) 학습 시 주의할 점은 무엇인가요?
폴백이 자동으로 성공하면 사용자가 데이터가 오래된 것을 모를 수 있습니다. 폴백 사용 시 경고나 표시를 함께 제공하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.