자동 배포 흐름

만든 것이 손님 화면까지 가는 통로를 기계가 대신 굴리는 장치예요. 통로를 자동으로 만들어도 그 통로의 스위치를 누가 누를 수 있는지는 사람이 정해야 하고, 그 권한 설계가 안전의 전부예요.

쉽게 말하면

주방에서 만든 새 메뉴가 손님 상까지 가는 길을 생각해 보세요. 예전에는 사람이 접시를 들고 검수대를 지나 매대에 올렸어요. 자동 배포 흐름은 그 길에 컨베이어 벨트를 깐 거예요. 접시를 벨트에 올려 두면 검수대를 지나 매대까지 알아서 가요. 여기서 중요한 건 벨트가 아니라 벨트 입구에 접시를 올릴 수 있는 사람이 누구냐예요. 입구가 열려 있으면 아무나 아무 접시나 손님 상에 보낼 수 있어요.

그래서 이 문서는 도구 만드는 법이 아니에요. 만드는 건 개발자나 AI가 해요. 사장님이 쥐고 있어야 하는 건 누가 언제 손님 화면을 바꿀 수 있는가, 그리고 그 권한을 언제든 회수할 수 있는가예요.

벨트만 깔았을 때
코드를 넣으면 곧바로 손님 화면까지 자동으로 나감 입구에 문지기 없음

빠르지만 실수도 같은 속도로 손님에게 도착해요. 잘못 넣은 한 줄이 확인 없이 매대까지 가요.

입구를 정해 뒀을 때
정해진 사람이 넣고, 검사 통과한 것만 손님 화면으로 실패하면 벨트가 멈춤

속도는 거의 같아요. 대신 문제가 손님 앞이 아니라 벨트 위에서 멈춰요. 이 차이가 사고 건수를 정해요.

벨트가 지나는 네 칸

자동 배포 흐름이라는 말이 가리키는 실물은 순서가 정해진 네 칸이에요. 도구 이름은 회사마다 달라도 칸의 순서는 같아요. 이 순서를 알면 "어디서 멈췄나요"라고 정확히 물을 수 있어요.

  1. 1넣기. 고친 코드를 정해진 자리에 넣어요. 개발자들은 이 자리를 갈래라고 부르고, 넣는 행동을 커밋이라고 해요. 벨트는 이 자리에 뭔가 들어온 순간에만 움직여요.
  2. 2검사. 기계가 코드를 실제 파일로 만들어 보고, 미리 적어 둔 확인 항목을 돌려요. 파일로 만드는 단계가 빌드예요. 여기서 실패하면 벨트가 멈추고 손님 화면은 어제 그대로예요.
  3. 3연습 무대에 먼저 올리기. 손님이 못 들어오는 주소에 같은 판을 먼저 올려 눈으로 봐요. 이 무대 이야기는 손님 안 보는 연습 무대에 있어요. 이 칸을 건너뛰는 곳도 많아요.
  4. 4손님 화면에 올리기. 검사와 연습을 통과한 판만 실제 주소로 나가요. 이 순간이 배포예요.
  5. 5되돌릴 자리 남기기. 방금 나간 판이 어느 것인지 기록으로 남고, 직전 판으로 돌아가는 길이 열려 있어야 해요. 이 길이 되돌리기예요.

자동이라는 말의 정확한 범위

자동인 것은 검사와 옮기기예요. 무엇을 넣을지, 언제 내보낼지, 문제가 났을 때 되돌릴지는 여전히 사람이 정해요. 그래서 자동 배포를 붙였다고 사람 손이 없어지지 않아요. 사람이 하던 반복 작업이 없어지고 판단만 남는 거예요.

권한 설계, 정해야 하는 다섯 가지

여기가 이 문서의 심장이에요. 벨트를 어떻게 만드느냐는 개발자가 정해도 되지만, 아래 다섯 줄은 사장님이 정하는 것이에요. 정하지 않으면 자동으로 정해지는데, 대개 가장 편한 쪽으로 정해져요.

정할 것정하지 않으면이렇게 물어보세요
누가 넣을 수 있나작업하는 사람 전원이 손님 화면을 바꿀 수 있어요. 외주 인력이 바뀌어도 예전 사람 계정이 살아 있어요지금 손님 화면을 바꿀 수 있는 계정이 몇 개이고 각각 누구 것인가요?
무엇을 통과해야 나가나검사가 실패해도 그냥 나가요. 벨트는 있는데 문지기가 없는 상태예요검사가 빨간불이면 배포가 멈추나요, 아니면 경고만 뜨고 나가나요?
언제 나가나금요일 저녁에도 나가요. 사고가 나면 아무도 없는 밤에 손님만 겪어요손님이 가장 많은 시간과 대응할 사람이 없는 시간에 배포를 막아 두었나요?
열쇠를 어디에 두나서버 비밀번호나 결제 열쇠가 코드 안이나 기록에 그대로 찍혀요배포에 쓰는 열쇠는 어디에 보관되고, 기록에 찍히지 않게 되어 있나요?
누가 회수하나계약이 끝나도 권한이 남아요. 회수할 사람이 정해져 있지 않으면 아무도 안 해요일이 끝나면 제가 직접 권한을 지울 수 있나요? 그 화면을 보여 주세요

다섯 줄의 공통점이 하나 있어요. 전부 기술 문제가 아니라 열쇠 문제예요. 가게 셔터 열쇠를 몇 개 만들어 누구에게 줬는지 사장님이 모르면 그 가게는 잠겨 있는 게 아니에요. 배포 권한이 딱 그 열쇠예요.

장면 1 · 외주 개발자가 말했다

저장소에 코드만 올리시면 자동으로 배포됩니다. 편하실 거예요.

편한 건 사실이에요. 그런데 그 문장은 누가 올려도 나간다는 뜻이기도 해요. 되물을 말은 두 개예요. "올릴 수 있는 사람이 지금 몇 명인가요?" 그리고 "검사가 실패하면 멈추나요?" 두 답이 분명하면 좋은 설계예요. 답이 흐리면 벨트만 깔고 문지기는 안 세운 거예요.

바이브캠퍼스에서는 어디까지가 이미 되어 있나

정직하게 말할게요. 바이브캠퍼스에서 만드는 동안에는 이 문서의 장치를 사장님이 따로 차릴 일이 없어요. 게시 버튼이 벨트 전체를 대신해요. 만들고, 게시를 누르면 주소가 열리고, 게시 내리기로 손님 눈앞에서 치울 수 있어요.

상황이 문서가 필요한가이유
혼자 만들고 혼자 게시해요아직 아니에요올릴 수 있는 사람이 사장님 한 명이라 권한 설계가 이미 끝나 있어요
직원이나 동업자가 같이 손대요여기서부터예요누가 무엇을 바꿨는지, 누가 게시했는지를 가릴 수 있어야 해요
코드를 내보내 다른 곳에 올렸어요필요해요내보낸 뒤에는 게시 버튼이 아니라 그쪽 서버의 규칙이 손님 화면을 정해요
외주에게 유지보수를 맡겼어요필요해요권한을 주는 것보다 회수하는 절차를 먼저 정해야 해요
결제나 손님 정보가 걸린 화면을 자주 고쳐요필요해요실수 한 번의 값이 커서, 검사 없이 바로 나가는 통로를 두면 안 돼요

직접 해보기

지금 손님에게 열려 있는 것을 세어 보세요

내 작업물 목록에는 각 작업이 공개 중인지 아닌지가 표시돼요. 지금 손님이 들어올 수 있는 주소가 몇 개인지 세어 보세요. 권한 이야기는 이 숫자에서 시작해요. 지키려는 문이 몇 개인지 모르면 열쇠 이야기를 할 수 없어요.

내 작업물 열기

내보낸 뒤에는 규칙이 바뀌어요

코드를 파일로 내보내 다른 서버에 올리면, 그때부터 손님 화면을 정하는 건 그쪽 설정이에요. 그래서 넘기기 전에 세 가지를 정해 두세요. 올릴 수 있는 사람 · 실패하면 멈추는지 · 되돌리는 방법. 이 셋이 정해지지 않은 채로 넘어가면, 사고가 났을 때 손댈 사람이 사장님이 아니게 돼요.

사람이 늘 때 생기는 갈림길

혼자일 때는 없던 질문이 두 명째부터 생겨요. 지금 손님 화면에 올라가 있는 판이 누가 만든 어느 판인가예요. 이 질문에 답할 수 있으면 사고 대응이 몇 배 빨라져요.

기록이 없을 때
어제 누가 뭘 올렸는지 기억으로 더듬음 "제가 안 올렸는데요"가 오감

원인을 찾기 전에 범인 찾기가 시작돼요. 사람 사이가 상하고, 정작 고치는 건 늦어져요.

기록이 있을 때
언제 · 누가 · 어느 판이 나갔는지 한 줄로 남음

"어젯밤 그 판으로 되돌리자"가 바로 나와요. 사람 이야기가 아니라 판 이야기가 돼요. [[audit-log|누가 무엇을 했는지 남기기]]와 같은 원리예요.

권한은 사람 수만큼 나누는 게 아니라 하는 일만큼 나눠요. 화면 문구만 고치는 사람에게 손님 명단을 열 권한까지 줄 이유가 없어요. 이 기준을 딱 필요한 만큼만 권한에서 자세히 다뤄요.

역할줘도 되는 것주지 말 것
글·사진만 고치는 담당만드는 화면과 미리보기손님 화면으로 내보내는 권한. 검토 뒤에 사장님이 눌러요
외주 개발자연습 무대에 올리는 권한, 작업용 계정결제 열쇠 원본과 손님 정보 내려받기. 필요하면 그때 따로 열어요
동업자손님 화면으로 내보내는 권한까지열쇠를 새로 만들어 다른 사람에게 주는 권한. 발급은 한 사람이 맡아요
잠깐 도와주는 사람정해진 기간 동안만 열리는 계정기간 없는 계정. 끝나면 지우는 날짜를 처음부터 적어 둬요

흔한 사고 네 가지

벨트는 성실해요. 잘못된 접시도 똑같은 속도로 매대까지 옮겨요. 실제로 자주 나는 순서예요.

  1. 1검사를 껐다가 그대로 둠. 급할 때 한 번 끄고 다시 켜지 않아요. 몇 주 뒤에는 아무도 그게 꺼져 있는 줄 몰라요. 끌 때 다시 켤 날짜를 같이 적어 두세요.
  2. 2열쇠가 기록에 찍힘. 배포 기록에 서버 비밀번호나 결제 열쇠가 글자 그대로 남는 사고예요. 기록은 여러 사람이 보니까 유출과 같아요. 열쇠는 코드가 아니라 환경변수 같은 별도 보관함에 둬요.
  3. 3나간 사람의 열쇠가 살아 있음. 계약이 끝나도 권한이 남아요. 나쁜 뜻이 없어도 그 계정이 털리면 통로가 통째로 열려요. 정리 방법은 열쇠 갈아 끼우기에 있어요.
  4. 4손님이 가장 많은 시간에 내보냄. 같은 실수라도 겪는 손님 수가 달라요. 사고 크기는 실수의 크기가 아니라 그 시간의 손님 수로 정해져요.

네 가지 모두 코드가 어려워서 난 사고가 아니에요. 정해 두지 않아서 난 사고예요. 그래서 대책도 코드가 아니라 한 장짜리 규칙이에요. 문 열기 전에 훑는 목록은 문 열기 전 점검표에 있어요.

규칙은 급하지 않을 때 정해요

"급하면 어디까지 건너뛰어도 되나"를 사고가 난 뒤에 정하면 늦어요. 급할 때는 사람이 가장 편한 쪽을 고르니까요. 미리 정해 두는 이야기는 급한 수정에 있어요.

지금은 하지 않아도 되는 것

이런 이야기를 읽으면 다 갖춰야 할 것 같지만, 손님이 아직 없는 가게에 검수대를 세 개 세우는 건 낭비예요. 아래 오른쪽 칸은 지금 미뤄도 되는 것이에요.

지금 내 상황지금 할 것나중에 해도 되는 것
혼자, 게시 버튼으로 운영크게 손대기 전에 지금 판을 파일로 내려받아 두기자동 검사, 연습 무대, 승인 절차
두 명이 같이 손댐누가 게시할지 한 사람 정하기자동 검사 도구 붙이기
외주가 서버에 직접 올림권한 목록 받아 두기와 회수 방법 확인단계별 자동 배포 구성
결제·예약이 걸려 있고 매주 고침검사 실패하면 멈추게 하기, 되돌리는 길 확인일부 손님에게 먼저 여는 방식

미뤄도 되는 것과 아닌 것

자동 검사와 연습 무대는 미뤄도 돼요. 하지만 권한 목록과 되돌리는 길은 미루면 안 돼요. 느린 배포는 나중에 빠르게 만들 수 있지만, 누구 손에 열쇠가 있는지 모르는 상태는 시간이 갈수록 나빠지기만 해요.

자주 묻는 것

Q. 자동 배포를 붙이면 사고가 줄어드나요?
사고 자체가 줄기보다 사고가 손님 앞에 도착하기 전에 멈추는 비율이 늘어요. 검사를 지나야 나가니까요. 검사를 아무것도 안 적어 두면 그냥 빨라지기만 해요.
Q. 저는 코드를 안 만지는데 이 이야기를 알아야 하나요?
만지는 사람이 사장님 말고 있다면 알아야 해요. 이건 코드 이야기가 아니라 열쇠 이야기예요. 열쇠를 몇 개 만들었고 누가 갖고 있는지는 가게 주인이 아는 게 맞아요.
Q. 개발자가 자기 계정으로 배포하고 있어요. 문제인가요?
당장 고장 나지는 않지만 두 가지가 걸려요. 그 사람이 없으면 아무도 못 올리고, 그 사람이 떠나도 권한이 남아요. 배포에 쓰는 자격은 사람 계정이 아니라 일에 붙은 자격으로 두고, 사장님이 회수할 수 있어야 해요.
Q. 검사에서 빨간불이 떴는데 급해요. 그냥 내보내도 되나요?
가능은 해요. 다만 누가 결정했고 언제 원래대로 돌릴지를 같이 적어야 해요. 한 번의 예외는 괜찮지만, 기록 없는 예외가 쌓이면 그게 새 기본값이 돼요.
Q. 지금 손님 화면에 올라간 판이 어느 것인지 어떻게 알아요?
배포 기록에 남아 있어야 정상이에요. 없다면 그게 첫 번째로 고칠 일이에요. 되돌릴 때 어디로 돌아갈지 정하려면 지금 어디에 있는지부터 알아야 하니까요.
Q. 연습 무대를 꼭 만들어야 하나요?
손님 돈이나 개인정보가 걸리기 전까지는 없어도 돌아가요. 대신 손님이 보는 곳에서 실험하지 않겠다는 규칙은 있어야 해요. 판단 기준은 손님 안 보는 연습 무대에 정리돼 있어요.
Q. 인수인계할 때 이 이야기에서 무엇을 챙기나요?
권한 목록, 열쇠가 보관된 자리, 되돌리는 방법 이 세 가지예요. 코드보다 먼저 받아야 하는 자산이에요. 목록은 개발자에게 넘기기에 있어요.

확인해 보세요

외주 업체가 "저장소에 넣으면 자동으로 손님 화면까지 나갑니다"라고 했어요. 가장 먼저 물어볼 것은?

하나 더

혼자 만들고 혼자 게시하는 사장님이 지금 꼭 해야 할 것은?

더 깊이 (안 읽어도 괜찮아요)

비유가 어디까지 맞고 어디부터 다른가 · 컨베이어 벨트 비유는 "정해진 순서로 옮긴다"까지 정확해요. 다른 점은 이 벨트가 접시를 복사한다는 거예요. 실제 가게에서는 접시를 매대에 올리면 주방에서 사라지지만, 코드는 올려도 원본이 그대로 남아요. 그래서 어제 접시를 다시 꺼내 놓는 일이 가능해요. 되돌리기가 성립하는 이유가 이것이고, 대신 어느 접시가 지금 매대에 있는지 적어 두지 않으면 똑같이 생긴 접시들 사이에서 길을 잃어요.

왜 사람 계정이 아니라 일에 자격을 붙이나 · 배포에 쓰는 자격을 사람 계정에 매달면 두 가지가 같이 묶여요. 그 사람의 로그인 정보가 새면 손님 화면까지 열리고, 그 사람이 떠나면 통로가 끊겨요. 그래서 배포용 자격은 따로 만들고, 그 자격이 할 수 있는 일도 배포로만 좁혀요. 손님 명단을 내려받는 힘까지 붙어 있으면 통로 하나가 뚫렸을 때 잃는 것이 통로보다 훨씬 커져요.

일부에게 먼저 여는 방식 · 큰 변경을 전부에게 한 번에 열지 않고 일부 손님에게 먼저 여는 방법이 있어요. 문제가 생겨도 겪는 손님이 일부에 그쳐요. 다만 이건 손님이 충분히 많아야 뜻이 있어요. 하루 손님이 열 명이면 나눌 것이 없어요. 손님 수가 늘어 사고 한 번의 값이 커졌을 때 꺼내는 카드로 기억해 두면 돼요.

속도와 안전은 반대말이 아니에요 · 검사를 붙이면 느려질 것 같지만 실제로는 반대인 경우가 많아요. 겁이 나면 한 달 치를 모아 한 번에 올리게 되고, 그러면 문제가 났을 때 되돌릴 덩어리도 한 달 치예요. 통로가 믿을 만하면 작게 자주 올리게 되고, 작게 올릴수록 사고 범위가 작아져요. 자주 올리는 가게가 대체로 더 안전해요.

이것만 기억하세요

  • ·자동인 것은 검사와 옮기기예요. 무엇을 언제 내보낼지는 여전히 사람이 정해요
  • ·정할 것은 다섯 줄이에요. 누가 넣나, 무엇을 통과해야 나가나, 언제 나가나, 열쇠는 어디 두나, 누가 회수하나
  • ·혼자 게시하는 동안에는 이미 끝난 이야기예요. 같이 손대는 사람이 생기면 그때가 시작이에요
  • ·배포 권한은 가게 셔터 열쇠예요. 몇 개 있고 누가 갖고 있는지는 사장님이 알아야 해요
  • ·자동 검사와 연습 무대는 미뤄도 되지만, 권한 목록과 되돌리는 길은 미루면 안 돼요
VibeCampus새 빌드