버전 번호 규칙
앞자리가 바뀌면 호환이 깨진다는 신호예요. 1.4.2 같은 세 자리 숫자 하나로, 이번 판을 그냥 받아도 되는지 받기 전에 확인할 게 있는지를 미리 알려요.
쉽게 말하면
메뉴판을 고치는 세 가지 크기로 생각하면 돼요. 오늘 오탈자 하나 고친 메뉴판은 손님이 몰라도 아무 일 없어요. 신메뉴 한 줄이 늘어난 메뉴판도 예전 주문은 그대로 통해요. 그런데 세트 구성을 통째로 갈아엎어서 손님이 "지난번 그 세트요" 했을 때 그런 건 없어졌다고 답해야 하는 메뉴판이라면, 이건 미리 크게 알려야 하는 개정이에요. 버전 번호는 이 세 가지 크기 중 무엇인지를 숫자 하나로 미리 알려 주는 표시예요.
번호는 보통 1.4.2 처럼 점 두 개로 나뉜 세 자리예요. 왼쪽으로 갈수록 크기가 크고, 왼쪽이 올라갈수록 받는 쪽이 확인할 게 많아져요.
올리는 날은 편해요. 값은 사고 난 날에 나와요. "어느 판으로 돌아가면 되나요"에 아무도 정확히 답을 못 해요.
붙이는 데 10초 걸려요. 대신 사고 난 날 "1.4.1 로 돌려 주세요" 한마디가 그대로 통해요.
세 자리가 각각 무슨 뜻인가
규칙은 한 문장이에요. 받는 쪽이 뭔가를 고쳐야 하면 앞자리를 올린다. 나머지는 전부 이 문장에서 나와요.
| 자리 | 무엇을 올릴 때 | 받는 쪽이 할 일 | 가게로 치면 |
|---|---|---|---|
| 앞자리 (1.4.2 의 1) | 예전처럼 쓰던 방식이 더는 안 통할 때. 칸 이름을 바꾸거나 기능을 없앴을 때예요 | 받기 전에 확인해요. 연결해 둔 곳이 있으면 같이 고쳐야 해요 | 세트 구성을 갈아엎어서 예전 주문 이름이 사라진 개정 |
| 가운데 (1.4.2 의 4) | 기능이 늘었지만 예전에 되던 건 그대로 될 때 | 그냥 받아도 돼요. 새로 생긴 게 뭔지만 훑어요 | 메뉴 한 줄이 늘어난 개정 |
| 뒷자리 (1.4.2 의 2) | 동작은 그대로고 잘못돼 있던 것만 고쳤을 때 | 그냥 받아요. 오히려 빨리 받는 편이 나아요 | 가격표 오탈자를 고친 개정 |
| 0 으로 시작하는 판 (0.3.1) | 아직 정식으로 문을 열기 전이라는 뜻이에요 | 언제든 크게 바뀔 수 있다고 보고 써요 | 가오픈 기간에 돌려 보는 시험 메뉴판 |
| 뒤에 꼬리가 붙은 판 (1.5.0-beta.1) | 정식 전에 미리 열어 보는 판이에요 | 실제 손님에게는 아직 안 써요 | 단골 몇 분에게만 미리 내 보는 시식 메뉴 |
올린 자리보다 아래는 0 으로 되돌려요
1.4.2 에서 가운데를 올리면 1.5.2 가 아니라 1.5.0 이에요. 앞자리를 올리면 2.0.0 이고요. 뒷자리를 그대로 이어 붙이면 그 숫자가 몇 번 고쳤다는 뜻인지 무엇이 바뀌었다는 뜻인지 아무도 못 읽게 돼요.
내 서비스에 번호를 붙이는 순서
처음 붙일 때만 잠깐 고민되고 그 뒤로는 거의 기계적이에요. 다섯 걸음이면 끝나요.
- 1첫 번호를 정해요. 아직 손님을 안 받았으면 0.1.0 으로 시작해요. 실제 손님이 쓰기 시작한 날 1.0.0 을 붙여요.
- 2이번 배포가 어느 자리인지 한 줄로 판정해요. 기준은 하나예요. 쓰던 사람이 뭘 고쳐야 하나요. 고쳐야 하면 앞자리예요.
- 3번호와 [[changelog|변경 기록]] 한 줄을 같은 날 적어요. 숫자만 남으면 몇 달 뒤에 그 숫자가 무슨 뜻이었는지 아무도 몰라요.
- 4그 번호를 돌아갈 수 있는 지점으로 남겨요. 번호의 값은 사고 난 날 이전 버전으로 돌리기에서 나와요.
- 5앞자리를 올리는 날은 미리 알려요. 올린 뒤에 알리면 통보고, 하루 전에 알리면 상대에게 준비할 시간이 생겨요.
확인해 보세요
예약 화면에 "메모" 칸을 새로 넣었어요. 기존 예약 기능은 그대로 잘 돼요. 1.4.2 다음 번호는?
남이 만든 부품의 번호를 볼 때
번호를 붙이는 일보다 남의 번호를 읽는 일이 훨씬 자주 생겨요. 남이 만든 부품 목록에는 부품마다 어느 범위까지 자동으로 받을지가 기호로 적혀 있어요.
| 목록에 적힌 표기 | 무엇을 자동으로 받나 | 언제 이걸 쓰나 |
|---|---|---|
| 1.4.2 | 딱 이 판만 써요. 아무것도 자동으로 안 올라가요 | 돈이 오가는 자리처럼 어제와 똑같이 돌아야 하는 곳 |
| ^1.4.2 | 앞자리가 1 인 동안은 다 받아요. 1.9.0 도 자동으로 와요 | 가장 흔한 기본값이에요. 앞자리는 안 넘으니 크게 깨질 일이 적어요 |
| ~1.4.2 | 1.4 안에서만 받아요. 고침만 따라가는 쪽이에요 | 기본값보다 조금 더 조심하고 싶을 때 |
| ^0.4.2 | 0 으로 시작하는 부품은 0.4 안에서만 받아요 | 아직 정식 전 부품이라 범위를 좁게 잡아 두는 자리예요 |
| 앞자리가 통째로 오른 새 판 | 자동으로 안 와요. 사람이 손으로 올려야 해요 | 올리기 전에 그 부품이 낸 안내문을 먼저 읽어요 |
장면 · 외주 개발자가 업데이트를 제안하며 말했다
“쓰고 있는 부품이 3.0 나왔어요. 최신으로 올리는 게 좋습니다.”
올리는 게 맞을 때가 많지만, 앞자리가 통째로 바뀐 판이라는 사실이 먼저예요. 그 자리에서 물을 건 두 가지예요. "우리가 쓰던 기능 중 없어진 게 있나요." 그리고 "안 올리면 지금 당장 무슨 문제가 있나요." 보안 구멍 때문이면 미룰 일이 아니고, 이유가 "최신이라서"뿐이면 급한 일이 아니에요. 이 판단을 사장님이 직접 할 수 있게 해 주는 게 앞자리 숫자예요.
헷갈리기 쉬운 것
[[changelog|변경 기록]]과 뭐가 달라요. 번호는 이름표고 변경 기록은 내용이에요. "1.5.0"이 이름이고 "메모 칸이 생겼어요"가 내용이에요. 둘 중 하나만 있으면 반쪽이라, 같은 날 같이 적는 습관으로 묶어 두는 게 편해요.
앱 마켓에 올리는 번호와 같은 건가요. 사람에게 보여 주는 번호는 같게 맞추는 편이 좋아요. 다만 마켓은 올릴 때마다 반드시 커지는 별도의 내부 번호를 따로 요구해요. 화면에 1.5.0 이 보이는 동안에도 그 내부 번호는 올릴 때마다 계속 커져요.
숫자가 크다고 좋은 게 아니에요
3.0.0 이 1.9.0 보다 잘 만든 것이라는 뜻은 전혀 없어요. 앞자리는 품질이 아니라 호환이 끊긴 횟수를 세는 자리예요. 앞자리가 자주 오르는 부품은 오히려 받는 쪽 손이 자주 가는 부품이에요.
하나 더
쓰던 부품이 2.9.4 에서 3.0.0 으로 올라갔어요. 지금 가장 먼저 할 일은?
자주 묻는 것
- Q. 손님은 보지도 않는 번호인데 꼭 붙여야 하나요?
- 손님용이 아니라 사고 난 날 쓰는 이름표예요. 돌아갈 판을 말로 설명하려면 "지난주 화요일 저녁 거요"가 되는데, 그 말로는 아무도 정확히 못 찾아요. 숫자 하나면 한 번에 찾아요.
- Q. 혼자 만드는데도 필요해요?
- 혼자여도 석 달 뒤의 사장님은 남이에요. 다만 손님이 없는 동안은 0.x 로 가볍게 두면 충분해요. 무거워지는 건 남이 쓰기 시작한 다음이에요.
- Q. 1.0.0 은 언제 붙여요?
- 기능이 완벽해진 날이 아니라 남이 믿고 쓰기 시작한 날이에요. 이제 이 판을 함부로 못 깨겠다는 마음이 드는 날이 그날이에요.
- Q. 번호를 건너뛰어도 되나요?
- 돼요. 1.4.2 다음에 1.7.0 이 나와도 규칙 위반은 아니에요. 다만 사이 번호가 어디로 갔는지 묻는 사람이 생기니 이유를 한 줄 적어 두는 편이 나아요.
- Q. 앞자리를 올리기 싫으면 어떻게 하나요?
- 예전 방식을 한동안 같이 살려 두면 돼요. 새 방식을 더해 두고 옛 방식에는 곧 없어진다고 미리 알린 뒤, 시간이 지나면 치우는 순서예요. 이러면 앞자리를 올리는 날이 뒤로 미뤄지고 쓰던 사람도 안 놀라요.
이것만 기억하세요
더 깊이 (안 읽어도 괜찮아요)
왜 하필 세 자리인가 · 자리가 늘면 사람이 못 읽어요. 네 자리를 쓰는 곳도 있지만 대개 셋에서 끝내요. 받는 쪽이 할 수 있는 행동이 셋뿐이기 때문이에요. 그냥 받는다, 훑어보고 받는다, 확인하고 받는다. 자리 수가 행동의 수를 따라간 거예요.
0 으로 시작하는 판이 규칙 밖에 있는 이유 · 0 으로 시작하는 판에서는 가운데 자리가 올라갈 때도 호환이 깨질 수 있어요. 규칙 자체가 그렇게 정해져 있어요. 아직 문을 안 열었으니 마음대로 바꿔도 되는 기간을 준 거예요. 그래서 남의 0.x 부품은 받는 범위를 좁게 잡아야 하고, 반대로 내 것이 0.x 인 동안은 구조를 크게 갈아엎을 수 있는 거의 유일한 시기예요.
번호가 견적에 미치는 영향 · 앞자리를 올리는 작업은 견적이 다르게 나와요. 코드를 고치는 시간이 아니라 쓰던 사람들을 옮기는 시간이 붙기 때문이에요. 안내, 유예 기간, 옛 방식 유지, 나중에 치우는 배포까지가 한 묶음이에요. 견적서에 앞자리 변경이 한 줄로만 적혀 있으면 이 뒤쪽이 통째로 빠져 있을 수 있어요.
직접 해보기
오늘 만든 것에 첫 번호를 붙여 보세요
거창할 것 없어요. 쓰는 사람이 아직 없으면 0.1.0, 이미 쓰는 사람이 있으면 1.0.0 이에요. 스튜디오에서 만들고 있는 것을 열고, 설명서나 변경 기록 맨 위에 오늘 날짜와 번호 한 줄만 적어 두세요. 다음 배포 때 어느 자리를 올릴지 정하는 것부터가 이 문서의 실전이에요.
스튜디오 열기이것만 기억하세요
- ·번호는 세 자리예요. 왼쪽이 올라갈수록 받는 쪽이 확인할 게 많아져요
- ·앞자리는 잘 만든 정도가 아니라 예전 방식이 안 통하게 된 횟수를 세요
- ·올린 자리보다 아래는 0 으로 되돌려요. 1.4.2 에서 가운데를 올리면 1.5.0 이에요
- ·남의 부품이 앞자리를 올렸으면 바로 받지 말고 없어진 기능부터 확인해요
- ·숫자는 이름표고 내용은 변경 기록이에요. 둘은 같은 날 같이 적어요