엔지니어링
기능 플래그를 임시 코드로 남기지 않는 폐기 규칙
엔지니어링 분야의 핵심 쟁점인 “기능 플래그를 임시 코드로 남기지 않는 폐기 규칙”에 필요한 근거와 실행 순서를 정리합니다.
기능 플래그를 임시 코드로 남기지 않는 폐기 규칙
엔지니어링 분야의 핵심 쟁점인 “기능 플래그를 임시 코드로 남기지 않는 폐기 규칙”에 필요한 근거와 실행 순서를 정리합니다. 이 글은 성공 공식을 나열하지 않는다. 대신 현장에서 부딪히는 이해관계와 실패 조건을 먼저 살피고, 작은 팀도 검증할 수 있는 결정 순서를 제안한다.
이번 논의의 출발점
‘기능 플래그를 임시 코드로 남기지 않는 폐기 규칙’. 이 주제를 이해하려면 다음 관점이 필요하다. 엔지니어링 변화는 설계의 세련됨보다 작은 변경을 배포하고 이상을 발견하며 안전하게 되돌리는 능력을 넓혀야 의미가 있다. 변경 대기 시간, 실패 영향 범위, 복구에 필요한 사람 수, 반복 장애의 재발 여부를 서비스와 팀 경계별로 살펴야 한다. 문제를 최신 용어로 다시 부르는 것만으로는 아무것도 개선되지 않는다. 일의 입구와 책임 경계가 바뀌어야 변화가 시작된다. 기능 플래그를 임시 코드로 남기지 않는 폐기 규칙을 둘러싼 논의가 커진 이유는 새로운 개념이 등장해서가 아니라, 미뤄 둔 운영 문제가 더 이상 배경에 머물지 않기 때문이다.
표준화와 자율성
비용을 줄이면 품질이 흔들리고 품질을 지키면 출시가 늦어진다는 이분법도 자주 등장한다. 실제 선택지는 범위를 줄이고 검증 순서를 바꾸는 데 있다. 전문가의 판단을 존중해야 하지만 설명할 수 없는 전문성은 조직의 학습을 막는다. 중요한 가정은 다음 담당자도 검토할 수 있어야 한다. 현장에서는 이미 우회로가 작동하는데 공식 문서는 정상 경로만 설명하는 경우가 많다. 이 간극을 닫지 않으면 어떤 지표도 현실을 정확히 보여 주지 못한다. 조직은 되돌릴 수 있는 실험을 원한다고 말하면서도 성공한 것처럼 보이는 계획에 더 많은 보상을 준다. 그 순간 실험은 보고용 프로젝트가 된다.
증거를 모으는 구조
데이터는 평균값보다 분포로 읽어야 한다. 일부 고객이나 팀에 문제가 집중된다면 전사 평균은 개선처럼 보이면서 중요한 실패를 숨긴다. 입력과 출력만 보는 지표는 중간의 손실을 가린다. 대기 시간, 재작업, 예외 승인처럼 가치가 멈추는 구간도 함께 기록해야 한다. 책임자는 직급이 가장 높은 사람이 아니라 신호를 관찰하고 범위를 줄이며 중단을 선언할 수 있는 사람이어야 한다. 먼저 현재 흐름을 요청, 판단, 실행, 검증의 네 단계로 나누면 병목이 도구에 있는지 권한에 있는지 구분하기 쉬워진다.
하나의 사례로 시험하기
지난 세 번의 장애에서 최초 신호부터 복구 결정까지의 시간을 그려 보면, 기술 결함보다 승인 대기나 불명확한 서비스 소유권이 더 긴 구간일 수 있다. 한 팀이 가장 큰 고객의 요구를 곧바로 로드맵에 넣는 대신 세 개 계정의 사용 흐름을 비교하면, 요청한 기능보다 권한과 안내가 핵심 문제였다는 사실을 발견할 수 있다. 두 팀이 같은 문제를 서로 다른 방식으로 풀고 있다면 즉시 통합하기보다 네 주 동안 결과를 비교하는 작은 자연 실험으로 활용할 수 있다. 장애나 계약 갱신처럼 피할 수 없는 시점을 리허설 날짜로 삼으면, 평소 미뤄졌던 복구 절차와 협상 기준을 실제 조건에서 점검할 수 있다.
속도를 늦춘다는 반론
작은 실험이 항상 안전한 것은 아니다. 개인정보, 회계, 보안처럼 한 번의 실수가 회복하기 어려운 영역은 시작 전 검토 수준이 더 높아야 한다. 물론 모든 문제를 측정으로 해결할 수는 없다. 표본이 작고 변화가 빠른 초기 단계에서는 숫자보다 정성적 판단이 앞설 때도 있다. 정교한 프레임워크가 판단을 대신할 수는 없다. 체크리스트가 모두 초록색이어도 핵심 가정이 틀리면 프로젝트는 실패한다. 현장 자율성을 넓히면 학습 속도는 빨라지지만 중복 투자도 늘 수 있다. 공유할 결과물과 팀이 독립적으로 고를 영역을 구분해야 한다.
권한과 철회 조건
가장 위험한 대규모 변경을 한 번에 해결하려 하지 말고 경계 하나를 선택해 소유권, 관찰 신호, 롤백을 먼저 완결한 뒤 다음 영역으로 이동한다. 서비스 팀, 플랫폼 팀, 기술 리더가 각자 다른 성공 기준을 갖고 있다면 실행 전에 하나의 우선순위를 고른다. 여러 목표를 동시에 최적화한다는 약속은 대개 책임을 흐린다. 벤더나 내부 팀의 주장에는 재현 가능한 증거를 요청한다. 성공 화면보다 실패 로그와 복구 과정을 보는 편이 운영 현실에 가깝다. 변경을 거절한 이유도 기록해 두자. 같은 제안이 이름만 바꿔 돌아왔을 때 이전의 판단을 빠르게 재검토할 수 있다.
결과를 읽는 방법
선행 지표는 빠른 피드백을 주지만 결과 지표를 대신하지 않는다. 활동량이 늘었는데 고객 결과가 같다면 개선이 아니라 이동일 수 있다. 지표 정의를 중간에 바꾸면 이전 결과와 비교할 수 없다. 바꿔야 한다면 새 지표를 일정 기간 병행해 변화 자체를 기록한다. 대시보드마다 담당자와 질문을 붙인다. 아무 결정에도 쓰이지 않는 숫자는 관찰 가능성이 아니라 유지보수 부채다. 측정 기간은 다음 대규모 변경과 온콜 교대 전에 한 번의 학습 주기를 완주할 만큼 길고, 잘못된 방향을 고착시키지 않을 만큼 짧아야 한다.
보이지 않는 부채
새 아키텍처나 플랫폼이 책임 경계를 명확히 하지 못하면 구성 요소와 전달 단계만 늘고 장애 때 판단은 더 느려진다. 외부 사례를 그대로 복제하면 보이지 않는 전제까지 가져오게 된다. 우리 조직에 없는 역할이나 데이터가 무엇인지 먼저 확인한다. 가장 흔한 실패는 도구를 도입한 뒤 일의 방식은 그대로 두는 것이다. 새 화면이 추가될 뿐 대기와 재작업은 줄지 않는다.
네 주 실행 계획
결정 기록, 서비스 지표, 롤백 런북을 최신 상태로 유지하고, 변경한 사람이 그 이유와 예상 효과를 짧게 덧붙이도록 한다. 운영 부담을 실제로 지는 사람을 리뷰에 포함한다. 배포 뒤의 현실이 설계 단계에서 들릴수록 수정 비용은 낮아진다.
무엇이 달라져야 하나
경쟁 우위는 비밀 기능보다 학습 속도에서 생길 수 있다. 불리한 신호를 빨리 발견하고 방향을 바꾸는 능력은 쉽게 복제되지 않는다. 시장이 바뀌면 지금의 최선도 수정돼야 한다. 중요한 것은 결정을 지키는 고집보다 수정 근거를 남기는 규율이다.