작성자: 컴맹 집사
시즌 2 「비록 작은 왕국이지만, 왕립 개집사협회 앱의 세계관을 넓혀 가는 과정」 4편
대표 이미지: 세계 지도가 그려진 두 손, 세 나라 판을 함께 돌보는 일 (사진: stokpic / Pixabay)
이 글에서 얻는 것
- 이런 분께 같은 앱을 여러 나라·여러 곳에 손으로 따로 올리고 있는 분
- 핵심 답 GitHub 보관소 하나에 세 나라 코드를 두고, Vercel의 나라별 사이트 셋이 새 코드를 동시에 가져가 각자 자기 나라 파일로 만들게 했다
- 바로 쓰는 팁 AI에게 자동화를 부탁할 때 “한 곳만 고치면 나머지가 따라오게 해 줘”와 함께 “실수도 같이 퍼지지 않게 막는 장치도 알려 줘”를 꼭 묻자
“어, 미국판은 왜 아직도 옛날 화면이지?”
한국판에 새 기능을 넣고 뿌듯해하던 날, 미국판을 열어 보다가 혼잣말이 나왔다. 왕립 개집사협회 앱에는 한국판 말고도 미국판과 일본판이 있다. 화면과 기능은 같고 글자와 웹툰만 나라에 맞게 다르다. 그런데 한국판을 고치고 나서 미국판에 반영하는 걸 깜빡한 것이다. 그런 일이 두 번이나 있었다.
이 글은 그 실수를 다시는 하지 않으려고, 한 번 올리면 세 나라 앱이 함께 바뀌는 구조를 만든 이야기다.
왜 미국판만 따로 놀았을까
시즌 1에서 앱을 인터넷에 올리는 과정을 썼다. 내 컴퓨터의 코드를 GitHub라는 보관소에 올리면, Vercel이라는 서비스가 그걸 가져가 자동으로 사이트를 새로 만들어 준다. 한국판은 처음부터 이렇게 자동이었다.
미국판은 사정이 달랐다. 같은 보관소에 연결했더니 미국판 사이트에 한국판 코드가 그대로 올라가 버리는 문제가 있었다. 영어 앱을 열었는데 한국어가 나오는 셈이다. 급한 대로 미국판은 자동 연결을 끊고, 필요할 때마다 손으로 따로 올렸다. 손으로 하는 일은 언젠가 잊는다. 그게 문제의 시작이었다.
세 지점, 메뉴판 하나
AI와 함께 그린 해결책을 식당에 비유하면 이렇다. 본점 하나에 지점이 셋 있다. 예전에는 메뉴가 바뀌면 지점마다 직접 찾아가 메뉴판을 바꿔 달았다. 새 방식은 본점 메뉴판 하나만 고치면 세 지점이 각자 자기 나라 말로 메뉴판을 새로 찍어 거는 것이다.
실제로는 이렇게 만들었다.
- GitHub 보관소는 하나다. 한국판, 미국판, 일본판 코드가 모두 여기에 있다.
- Vercel에는 나라별로 사이트가 셋 있다. 한국판은 app.dogdo209.com, 미국판과 일본판은 각자의 주소를 쓴다.
- 보관소에 새 코드가 올라오면 세 사이트가 동시에 그걸 가져가서, 각자 자기 나라 파일만 골라 사이트를 만든다.
“자기 나라 파일만 골라” 만드는 부분은 작은 정리 프로그램이 맡는다. 한국판을 만들 때는 영어 파일을 빼고, 미국판을 만들 때는 한국어와 일본어 파일을 뺀다. 내가 할 일은 보관소에 올리는 것 하나로 줄었다.
첫 시도는 미국판이 실패했다
물론 한 번에 되지 않았다. 처음 연결했을 때 한국판은 잘 만들어졌는데 미국판만 실패했다. 오류 메시지를 AI에게 보여 주니 원인은 의외의 곳에 있었다. “Vercel에 올리지 않을 파일 목록”을 적어 둔 설정 파일이 세 나라 사이트에 똑같이 적용되고 있었다. 한국판에 필요 없다고 빼 둔 정리 프로그램 폴더를, 미국판은 꼭 필요로 했는데 그것까지 빠져 버린 것이다.
그래서 공통 목록에는 정말 어디에도 필요 없는 큰 폴더와 비밀 파일만 남기고, 한국판에서만 뺄 파일은 한국판 정리 프로그램이 따로 처리하게 바꿨다. 바꾼 뒤 한국판 사이트에 올라가는 파일 수가 예전과 똑같은지까지 세어서 확인했다.

사진: Pexels / Pixabay
사고를 막는 안전장치
자동은 편하지만 무섭다. 실수도 자동으로 세 나라에 퍼지기 때문이다. 그래서 안전장치를 두 개 걸었다.
하나는 섞이면 멈추는 장치다. 미국판을 만들다가 다른 나라 파일이 섞여 들어가면 정리 프로그램이 일부러 실패를 낸다. Vercel은 만들기에 실패하면 이전 사이트를 그대로 두기 때문에, 이용자는 아무 일도 없었던 것처럼 원래 화면을 본다.
다른 하나는 올리기 전 시험 규칙이다. 이제 보관소에 올리는 순간이 곧 세 나라 사이트가 동시에 바뀌는 순간이다. 그래서 기준서에 이렇게 못 박았다.
올리기 전에 바꾼 판의 자동 테스트를 먼저 통과시킨다. 세 나라가 같이 쓰는 파일을 고쳤다면 세 판 전체 테스트를 돌린다. 실패가 하나라도 있으면 올리지 않는다.
세 판 전체 테스트는 한 번 돌리는 데 50분쯤 걸린다. 처음엔 길게 느껴졌지만, 세 나라에 한꺼번에 오류를 내보내는 것보다는 기다리는 게 훨씬 싸다. 사파리 같은 일부 환경에서 이번 변경과 상관없어 보이는 실패가 나도, 다시 돌려서 통과하는 걸 확인한 뒤에 올린다.
일본판은 마지막에 연결했다
일본판은 이용자가 아주 적었다. 그래서 먼저 한국판과 미국판을 연결해 안정되는 걸 본 뒤, 일본판을 최신 상태로 맞추고 마지막에 붙였다. 한꺼번에 셋을 바꾸면 문제가 생겼을 때 어디서 났는지 찾기 어렵다. 하나씩 붙이는 게 느려 보여도 결국 빨랐다.
내 일에 가져갈 한 가지
여러 곳에 같은 걸 손으로 반영하고 있다면, 언젠가 하나는 빠진다. 블로그 여러 개에 같은 공지를 올리거나, 엑셀 파일 여러 개에 같은 숫자를 고치는 일도 마찬가지다. AI에게 이렇게 물어보자. “지금 이 작업을 세 곳에 손으로 반복하고 있어. 한 곳만 고치면 나머지가 따라오게 할 방법이 있을까? 대신 실수도 같이 퍼지지 않게 막는 장치도 알려 줘.” 자동화를 부탁할 때 안전장치까지 같이 묻는 것, 이번에 얻은 가장 큰 교훈이다. 배포가 처음이라면 시즌 1의 Vercel 쉬운 설명과 배포한 앱 고치는 5단계를 먼저 읽어 보면 좋다.
이전 글: AI 다섯과 일 나누기, 기획·조사·개발·그림·음악 담당 정하기
다음 이야기: 강아지 앱에 고양이판까지, 여러 판을 한 저장소로 합친 방법


답글 남기기