다섯 살도 알 수 있게 · SRE

벌크헤드가 뭐예요?

벌크헤드 패턴을 구역마다 자기 몫의 자원만 쓰게 나눈 놀이공원 이야기로 풀어봤어요.

문제가 옆 기구로, 또 옆 기구로 번져요기구 하나에서 생긴 문제가 옆 기구로 번져 공원 전체가 멈춰요

기구 하나에서 생긴 문제가 옆 기구로 번져 공원 전체가 멈춰요.고장이 담장 없이 그대로 옆으로, 또 옆으로 넘어가요.

발전기 하나기구 전부가 발전기 하나, 직원 풀 하나를 같이 써요모든 기구가 같은 자원을 같이 쓰면, 하나가 다 써버려요

모든 기구가 같은 자원을 같이 쓰면, 하나가 다 써버려요.발전기도 직원도 하나뿐이라 전부 같이 걸려요.

구역1구역2구역3구역4구역을 나누면, 한 구역이 문제여도 다른 구역은 멀쩡해요배의 방수 격벽과 같아요

구역을 나누면, 한 구역이 문제여도 다른 구역은 멀쩡해요.배의 방수 격벽과 같아요.

구역을 나눠요담을 세워요
구역마다 자기 몫만인원·전력 따로요
한 구역만 영향받아요다른 구역은 그대로
중요한 구역엔 더 넉넉히핵심 구역부터 챙겨요
구역1 — 꽉 참구역2구역3구역4한 구역만 자원을 다 써도, 나머지 세 구역은 정상이에요

한 구역만 자원을 다 써도, 나머지 세 구역은 정상이에요.지도로 보면 어느 구역이 문제인지 바로 보여요.

구역이 9개나... 돌보기 힘들어요너무 잘게 나누면 관리가 번거롭고 자원이 낭비돼요 — 적당한 크기가 필요해요

너무 잘게 나누면 관리가 번거롭고 자원이 낭비돼요.적당한 크기로 나누는 게 중요해요.

한 줄로

벌크헤드 = 공원을 구역으로 나눠 구역마다 자기 몫의 자원만 쓰게 하는 일. 한 구역이 문제여도 다른 구역은 멀쩡해요.

배의 방수 격벽에서 이름을 딴 패턴이에요. 스레드 풀, 커넥션 풀, 서버 인스턴스 같은 자원을 구역(테넌트, 서비스)별로 나눠 하나의 과부하가 전체로 캐스케이딩 실패하는 걸 막아요. 너무 잘게 나누면 관리 비용과 자원 낭비가 커져요.

어른들은 이렇게 불러요

벌크헤드 패턴
Bulkhead pattern
공원을 구역으로 나누는 설계. 한 구역의 문제가 다른 구역으로 안 넘어가게 해요.
격리
Isolation
구역 사이를 담으로 막는 것. 벌크헤드가 하는 일의 핵심이에요.
자원 풀
Resource pool
발전기나 직원처럼 같이 쓰는 몫. 나누지 않으면 하나가 다 써버려요.
스레드 풀 격리
Thread pool isolation
일꾼(스레드)을 구역별로 따로 두는 것. 벌크헤드의 가장 흔한 적용 방법이에요.
테넌트 격리
Tenant isolation
손님 그룹(테넌트)별로 자원을 나누는 것. 한 테넌트가 몰려도 다른 테넌트는 안전해요.
캐스케이딩 실패
Cascading failure
기구 하나의 문제가 옆으로, 또 옆으로 번지는 것. 벌크헤드가 막으려는 바로 그 일이에요.
서킷 브레이커
Circuit breaker
고장난 곳에 아예 안 보내는 빨간 버튼. 구역을 나누는 벌크헤드와 짝을 이뤄 같이 써요. → 고장나면 누르는 빨간 버튼
우아한 저하
Graceful degradation
일부만 고장나도 나머지는 그대로 여는 것. 벌크헤드로 구역을 나눠 두면 이게 더 쉬워져요.
다음 이야기
고장나면 누르는 빨간 버튼 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →