KO
App Store에서 열기

주제: 프로덕트와 UX

배포 한 시간 전의 회의

릴리스 회의, 화요일 4시

PM 20분 있습니다. 갑니까 맙니까.

개발자 코드는 금요일부터 프로덕션에 들어가 있습니다. 꺼진 채로요. 간다는 건 배포가 아니라 스위치를 올린다는 뜻입니다.

PM 그럼 내일 아침 1%로 열고 앉아 있죠.

개발자 1%로 열고요, 자기 전에 되돌리는 장치가 도는지 실제 설정에서 보고 싶습니다. 스테이징 말고요.

분석가 1%면 일주일은 실험을 읽을 수 없습니다. 그 트래픽에서 잡히는 최소 크기가 우리가 바라는 변화보다 큽니다.

PM 아침에 11% 올랐다는 그래프 봤는데요.

분석가 서른 시간 지난 그래프고, 지웠으면 합니다. 매일 아침 들여다보다가 좋아 보이는 날에 멈추면, 동전 던지기를 확신으로 바꾸는 겁니다.

개발자 지난번엔 나누는 것도 이상했어요. 50 대 50인데 53 대 47로 나왔습니다. 세션 180만 건에서요.

분석가 그건 어느 쪽이 이겼다가 아니라 배정이 깨졌다는 뜻입니다. 그 검사에 걸린 건 읽지 않습니다.

PM 가드레일은요.

분석가 환불이랑 고객센터 문의, 둘 다 평평합니다. 그리고 움직이기로 한 건 첫 프로젝트를 공유하는 순간이지 가입이 아닙니다.

개발자 하나 더요. 2주 전 장애로 여유분을 거의 다 썼습니다. 이번에 흔들리면 이번 달은 멈춥니다.

PM 알겠습니다. 1%로 가고, 트리아지는 내일 10시에.

정하는 데 20분인데, 기능 이야기는 거의 없습니다. 누가 끌 수 있는지, 숫자를 누가 읽어도 되는지, 그 숫자가 거짓말이면 어떻게 되는지를 이야기합니다.

먹선으로 그린 벽걸이 화면 속 대시보드: 평평한 선 둘, 왼쪽 끝에서 기어오르는 막대 하나,
그리고 크게 그린 황토색 토글 스위치
결정은 스위치 하나. 다툼은 누가 되돌릴 수 있느냐입니다

릴리스 회의는 결정에서 빠져나올 길로 갑니다

예냐 아니냐로 시작했다가 곧 그 질문이 아니게 됩니다. 한꺼번에 전부에게 가는 것은 이제 없으니까요. 그다음은 재는 말들, 그리고 재는 일이 어긋나는 방식들. 마지막은 팀이 위험에 얼마나 더 쓸 수 있느냐입니다.

고/노고Go/no-go

릴리스를 예정대로 낼지 확인하는 회의 또는 결정 지점이다.

고/노고는 4시입니다. 크래시율 가져오세요.

이 회의가 있는 까닭이자, 안건 가운데 가장 짧은 항목입니다.

전체 보기 →

피처 플래그Feature flag

새 릴리스 없이 정해진 사용자에게만 기능을 켜고 끄는, 코드 속 스위치다.

피처 플래그 뒤에 있으니 꺼진 채로 배포하고 월요일에 켜면 된다.

내보내는 일과 여는 일을 갈라놓은 물건입니다. 코드가 금요일부터 프로덕션에 있는데 팀 밖에서는 아무도 만난 적 없는 까닭이기도 합니다.

전체 보기 →

단계적 롤아웃Staged rollout

한 번에 전부가 아니라, 점점 넓어지는 사용자 비율에 변경을 내보내는 것이다.

단계적 롤아웃으로 오늘 1%, 그래프가 지루하면 내일 10%.

'출시했다'가 '일부에게만 보인다'로 바뀐 까닭입니다. 베타와 헷갈리는데, 그쪽은 고른 사람들, 이쪽은 모두의 한 조각입니다.

전체 보기 →

'단계적 롤아웃' 카드 뒷면이 열린 앱 화면
앱에서는 '단계적 롤아웃' 카드에 음성이 있습니다
주제 안 검색 화면, 카드 네 장이 찾아졌다
말의 일부만 쳐도 찾습니다

킬 스위치Kill switch

문제가 생겼을 때 기능을 즉시 꺼 버리는 장치다.

50%로 올리기 전에 킬 스위치가 도는지 확인합시다.

아무 일도 없을 때 시험해 둬야 하는 물건입니다. 정작 필요한 순간에는 아무도 문서를 읽고 있지 않으니까요.

전체 보기 →

A/B 테스트A/B testing

실제 트래픽을 두 버전에 나눠 주고, 누구 말이 그럴듯했는지가 아니라 측정된 행동으로 정하는 방법이다.

엠티 스테이트로 A/B 테스트를 했더니 버튼 하나짜리가 이겼다.

버튼을 두고 벌인 말싸움이 답 있는 질문으로 바뀝니다. 그 대신 방에 있는 모두가 아마추어 통계학자가 됩니다.

전체 보기 →

가드레일 지표Guardrail metric

한쪽에서 얻은 성과가 다른 쪽을 망치고 있지는 않은지 보려고 실험 중에 지켜보는 지표다.

전환은 올랐는데 환불 가드레일 지표도 같이 움직였다.

아무도 움직이려 하지 않는 숫자인데, 바로 그래서 지켜봅니다. 이게 없으면 한쪽의 승리가 다른 쪽의 손해를 조용히 사 옵니다.

전체 보기 →

피킹Peeking

실험 결과를 계속 들여다보다가 숫자가 좋아 보이는 순간 멈추는 것으로, 거짓 양성이 늘어난다.

그만 들여다봐요. 테스트는 금요일까지 돌립니다.

실험을 망치는 가장 사람다운 방식이고, 인정하기 가장 어려운 방식입니다. 대시보드를 매일 여는 사람은 다 해 봤습니다.

전체 보기 →

SRMSample ratio mismatch

표본 비율 불일치. 의도한 트래픽 배분과 실제 배분 사이의 통계적으로 유의한 차이로, 실험이 망가졌다는 신호다.

200만 세션에서 배분이 SRM 검사를 통과하지 못했다. 결과는 읽지 않는다.

어느 쪽이 졌다가 아니라 실험 자체가 깨졌다고 말해 주는 검사입니다. 건너뛰면 깨진 배정이 발견으로 둔갑해서 나갑니다.

전체 보기 →

트래킹 플랜Tracking plan

어떤 이벤트와 속성을 남기고 각각이 무슨 뜻인지 합의해 적어 둔 문서다.

새 이벤트 이름 짓기 전에 트래킹 플랜부터 봅시다.

같은 이름을 두 팀이 다르게 쓰는 일을 막는 약속입니다. 한 번 쓰고, 일 년 방치하고, 화가 나서 다시 씁니다.

전체 보기 →

액티베이션Activation

신규 사용자가 진짜 가치를 얻었다는 것을 보여 주는 행동을 해내는 지점이다.

액티베이션은 「첫 프로젝트 공유」지 「계정 생성」이 아니다.

모든 팀이 다투고 거의 아무도 적어 두지 않는 정의입니다. 가입 시점에 두면 그 뒤의 그래프는 전부 장식이 됩니다.

전체 보기 →

버그 트리아지Bug triage

접수된 버그에 심각도와 담당자를 정하고 고칠지 말지 결정하는 정기 작업이다.

트리아지에서 P3로 나왔으니 이번 스프린트는 아니다.

버그에 이름과 주인과 판결이 붙는 30분입니다. '지금은 아니다'도 판결이고, 판결로 적힙니다.

전체 보기 →

에러 버짓Error budget

SLO가 허용하는 실패의 양으로, 릴리스를 멈추기 전까지 팀이 위험에 쓸 수 있는 여유다.

에러 버짓을 하루 저녁에 다 태웠다. 이번 달엔 위험한 배포는 없다.

다 멀쩡해 보이는데 팀이 배포를 멈추는 까닭입니다. 안정성을 말싸움에서 수량으로 바꿔 놓습니다.

전체 보기 →

내일은 10%로 갑니다

그다음은 50, 그다음은 전부. 그사이 어딘가에서 누군가 테스트를 일찍 끊자고 합니다. 스위치를 쥔 사람은 이번엔 나입니다.

자주 묻는 질문

프로덕트 쪽 나머지 말은요?

주제 페이지에 150개 모두 있습니다. 여기 열두 개는 릴리스 회의 한 번에 나온 것들입니다.

왜 영어가 옆에 있나요?

배포를 부르는 말은 어느 사무실에서나 영어로 들어와서 한국어로 다퉈집니다. 그래서 두 형태가 나란히 있습니다.

설명은 어디서 가져왔나요?

'프로덕트와 UX' 주제에서. 앱에 있는 것과 같은 카드입니다.

다음 릴리스 회의에는 다른 열두 개가 나옵니다.

'프로덕트와 UX' 주제에 150개가 있습니다. 앱에서는 하루에 몇 장씩 나옵니다.

App Store에서 열기