ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION499 / 1500
설계난이도 하5분 답변 목표 · 보강본

기능 플래그로 새 코드 일부를 켰다가 오류가 나서 껐습니다. 이미 바뀐 데이터도 원래대로 돌아가며, 안전한 롤백에는 무엇이 필요한가요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

플래그는 이후 코드 경로를 바꾸는 장치이지 이미 저장된 데이터나 발행된 이벤트를 되돌리는 장치는 아닙니다. 새 경로가 기존 형식으로 읽을 수 없는 데이터를 만들었다면 플래그를 꺼도 이전 코드가 실패할 수 있습니다. 저는 코드 전환과 데이터 복구를 구분하겠습니다.

기능 플래그는 요청이 새 코드와 이전 코드 중 어디로 갈지 정하는 스위치입니다. 새 코드가 status='paused'를 저장했는데 이전 코드는 그 값을 모른다면 플래그를 꺼도 오류가 남습니다. 꺼질 수 있는 코드는 기존 형식과 호환되는 데이터를 쓰거나, 새 상태를 읽을 수 있는 호환 경로를 남겨야 합니다.

작은 사용자 집단부터 새 기능을 켠다면 같은 사용자가 요청마다 다른 경로로 흔들리지 않도록 안정적인 배정 키를 쓰겠습니다. 집단별 성공률과 지연, 주문·결제 등 실제 처리 결과를 비교하고 중단 기준을 미리 정하겠습니다. 전체 평균은 작은 집단의 오류를 가릴 수 있으므로 플래그 노출 여부를 관측에 연결해야 합니다.

플래그 설정도 모든 인스턴스에 즉시 전파되지 않을 수 있습니다. 서로 다른 경로가 동시에 실행돼도 프로토콜과 상태가 호환돼야 합니다. 장애 대응용 플래그는 의존 시스템이 아플 때도 작동하는지 확인하겠습니다. 도입이 끝난 플래그는 제거해 조합 폭증과 테스트 부담을 줄입니다. 테스트에서는 켜짐·꺼짐뿐 아니라 진행 중 변경과 설정 조회 실패를 확인하겠습니다. 되돌릴 수 있는 범위를 명확히 해 두는 것이 빠르게 끄는 버튼보다 중요합니다.

데이터 호환을 먼저 만듭니다

새 기능이 paused 같은 값을 저장한다면 구버전이 그 값을 읽을 수 있는지 확인해야 합니다. 보통 기존 컬럼을 유지한 채 새 컬럼을 추가하고, 구·신 코드가 양쪽을 읽는 기간을 둔 뒤 백필과 구형 코드 제거를 진행합니다. 플래그를 꺼도 이미 저장된 값, 발행한 이벤트, 외부 결제·메일은 되돌아가지 않습니다. 효과별로 취소·환불·보상·대사 중 가능한 복구를 정하고, 불가능한 건 보류 상태로 표시합니다.

노출 집단과 롤백을 고정합니다

사용자나 조직을 안정적인 키로 배정해 같은 사람이 요청마다 다른 경로를 타지 않게 합니다. 노출 버전·요청 ID·이벤트 ID를 남겨 오류뿐 아니라 데이터 차이와 중복 효과를 집단별로 추적합니다. 설정 서비스가 늦거나 실패해 인스턴스가 섞일 수 있으므로 마지막 정상값, 로컬 캐시 만료, 강제 안전값의 우선순위를 정합니다. 롤백 완료는 스위치가 꺼진 시점이 아니라 이전 코드가 현재 데이터를 안전하게 읽고 후속 소비자와 외부 효과까지 처리할 수 있는 시점입니다.

구체적인 경계 사례

배정은 예를 들어 hash(조직 ID, 실험 ID)를 고정 구간에 대응시켜 비율을 늘려도 기존 참여자가 갑자기 빠지지 않게 할 수 있습니다. 조직 구성원끼리 공유 데이터를 바꾸는 기능은 사용자 단위 무작위 배정보다 조직 단위가 적합할 수 있습니다. 배정 버전과 실제 노출을 기록해야 설정상 참여 대상과 정말 새 코드를 실행한 요청을 구분할 수 있습니다.

한 요청이 여러 하위 서비스를 호출한다면 동일한 기능 결정이나 호환 가능한 프로토콜을 전달합니다. 각 서비스가 서로 다른 캐시 값으로 결정하면 한 거래가 구·신 규칙을 섞을 수 있습니다. 장기적으로는 소유자와 제거 기한을 두고 완전히 켜진 뒤 옛 분기를 제거합니다. 플래그 수가 늘어날수록 가능한 조합이 커지므로 지원할 조합을 명시적으로 제한하겠습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 코드 경로 차단과 이미 발생한 데이터·이벤트·외부 효과 복구를 분리한다.
  • 호환 가능한 스키마 전환과 안정적인 사용자 배정을 설명한다.
  • 노출별 지표·킬 스위치·보상·대사·플래그 제거까지 다룬다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 플래그를 끄면 저장 데이터와 외부 효과도 자동으로 되돌아간다고 한다.
  • 요청마다 무작위 배정해 같은 사용자의 데이터 경로를 흔든다.
  • 설정 전파 장애와 완료된 플래그 제거 비용을 무시한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기