다섯 살도 알 수 있게 · SRE
우아한 저하가 뭐예요?
우아한 저하를, 추천 코너 하나가 고장났다고 공원 전체를 닫지는 않는 이야기로 풀어봤어요.
추천 코너가 고장나자 공원 전체 입장을 막아버렸어요.손님들이 그냥 다 돌아가 버려요.
작은 문제 하나가 전체를 멈추게 설계되어 있으면, 손해가 커져요.손님이 다 돌아가서 손해가 커져요.
덜 중요한 건 잠깐 꺼두고, 중요한 기구는 계속 돌려요.조금 불편해도, 공원은 열려 있어요.
뭐가 핵심인지 정해요미리 정해둬요
덜 중요한 건 꺼도 되게설계해 둬요
꺼진 건 살짝 알려요'잠시 쉬어요' 하고요
핵심만은 끝까지 지켜요입장·안전은 안 꺼요
두 공원을 비교해 봐요.핵심만 켜두면, 공원은 계속 열려 있어요.
뭐가 핵심인지 미리 안 정해두면, 급할 때는 못 골라요.평소에 미리 정해둬야 해요.
한 줄로
우아한 저하 = 뭐가 핵심인지 미리 정해두고, 급하면 덜 중요한 건 꺼두되 핵심만은 끝까지 지켜서, 일부만 고장나도 나머지는 그대로 돌아가게 하는 일.
한 부분이 실패해도 시스템 전체가 멈추지 않고, 덜 중요한 기능을 내리거나 간단한 폴백 응답으로 대체해 핵심 기능만은 계속 동작하게 하는 설계 원칙이에요. 벌크헤드나 서킷 브레이커 같은 장치와 함께 쓰여요.
어른들은 이렇게 불러요
- 우아한 저하
Graceful degradation - 일부만 고장나도 나머지는 그대로 돌아가는 것. 전부 멈추는 대신 조금만 불편하게 만들어요.
- 핵심 vs 부가 기능
Core vs. non-core features - 꼭 있어야 하는 것과 없어도 되는 것. 평소에 미리 나눠둬야 급할 때 고를 수 있어요.
- 폴백 응답
Fallback response - 진짜 대신 내놓는 간단한 답. 추천 대신 '인기 상품' 같은 기본값을 보여줘요.
- 기능 끄기
Feature toggle / kill switch - 한 기능만 콕 집어 꺼두는 스위치. 코드를 다시 배포하지 않고도 끌 수 있어요.
- 부분 장애
Partial outage - 전체가 아니라 일부만 멈춘 상태. 우아한 저하가 지키려는 바로 그 상태예요.
- 벌크헤드
Bulkhead - 고장을 한 구역 안에 가둬두는 칸막이. 배의 격벽처럼, 한 곳에 물이 차도 배 전체가 안 가라앉아요.
- 서킷 브레이커
Circuit breaker - 계속 실패하는 곳을 아예 끊어버리는 장치. 끊어두면 그 실패가 다른 곳까지 안 번져요.
- SLO
SLO (Service Level Objective) - 핵심 기능이 지켜야 하는 약속 목표. 공원 전체가 지키는 약속과 같은 개념이에요. → 쉬지 않는 공원을 돌보는 사람들
다음 이야기
발전기가 꺼지면 예비 발전기가 →