GITING 매거진 · 만들었으면, 내보내자← 전체 호
GITING 매거진 · VOL.07 · 바이브코딩 두 번째 걸음
기티가 자기 굴에서 종이비행기(만든 것)를 날려 보내고, 멀리 집과 폰들이 그걸 받아 하나씩 불이 켜진다. 내 것이 세상 사람들에게 닿는 장면.

만들었으면,
내보낼 차례

내 컴퓨터에서만 되던 걸 링크 하나로, 폰에 깔리는 앱으로. 어디에 올리고 뭘 조심하는지 순서대로. 내 화면에서만 되면 아직 아무도 못 쓰니까.

안내 기티기준 웹·앱 수십 개 직접 내본 경험잇는 호 VOL.06
출발선 · 내 컴퓨터를 벗어난다01

내 화면에서만 되면,
아직 0명이에요

지난 호에서 첫 결과물을 만들었다면, 그건 아직 내 컴퓨터 안에만 있다. 주소창의 localhost는 "이 컴퓨터"라는 뜻이라, 그 링크를 남한테 보내면 안 열린다. 만드는 것과 남이 쓰게 하는 것은 다른 일이고, 많은 사람이 바로 여기서 멈춘다.

localhost:3000 나만 열림 배포 LIVE +247명 localhost 세상
웹은 브라우저에서(localhost) 돌던 걸 배포하면, 남의 폰에 실제 서비스(https)로 올라가 사람들이 쓴다. 바로 이 흐름을 만드는 게 이번 호다.

내보낸다는 건 두 가지 중 하나다. 웹이면 어딘가 항상 켜져 있는 컴퓨터(서버)에 올려 두고, 그 주소(링크)를 나눠주는 것. 앱이면 사람들 폰에 깔리게 하는 것. 지난 호에서 웹이냐 앱이냐를 정했으니, 이번엔 그걸 각각 어떻게 내보내는지 본다.

먼저 마음가짐
처음 내보내는 건 어설퍼도 된다. 완벽하게 만들어서 내는 것보다, 작게라도 내서 한 명이 쓰게 하는 게 훨씬 많이 배운다. 내보내는 순간 "진짜 쓰는 사람"의 피드백이 생긴다.
내보내기 · 웹02

웹은 어디에 올리나

웹은 둘로 갈린다. 파일만 있는 것이냐, 서버가 도는 것이냐. 지난 호에서 "저장할 게 있나"로 갈렸던 그 갈림이 여기서 그대로 이어진다.

내 웹은어디에 올리나 (처음엔)링크 모양
파일만
(HTML·JS)
Cloudflare Pages · GitHub Pages · Netlify · Vercel (전부 무료 시작)이름.pages.dev
같은 무료 주소
서버가
도는 것
Railway (가장 쉬움) · Render · Fly이름.up.railway.app
내 컴퓨터로
직접
Cloudflare Tunnel (내 맥을 서버로)내 도메인. 단 내 컴퓨터가 꺼지면 같이 꺼짐

파일만 있으면 제일 쉽다. 저장이 필요 없는 소개 페이지·계산기·일회성 도구라면, 코드를 깃헙에 올리고 Cloudflare Pages나 GitHub Pages에 연결하면 끝이다. 고칠 때마다 자동으로 다시 올라가고, 비용도 0이다. 처음 "링크를 남한테 보냈다"는 성공을 가장 빨리 보는 길이다.

서버가 돈다면(글·계정이 저장되는 방명록 같은 것) Railway가 입문엔 가장 수월하다. 깃헙 저장소를 연결하면 알아서 빌드하고 띄워 주소를 준다. 데이터베이스도 클릭 몇 번으로 붙는다. 처음엔 무료 크레딧으로 시작하고, 사람이 붙으면 그때 요금을 본다.

이렇게 물어본다나: 지금 만든 걸 인터넷에 올리고 싶어. 저장 기능은 (없어 / 있어). 제일 쉬운 방법으로, 깃헙 올리는 것부터 한 단계씩 알려줘.
처음 조합 · 웹 내보내기
파일만이면 깃헙 → Cloudflare Pages. 서버가 있으면 깃헙 → Railway. 둘 다 "깃헙에 올리면 자동으로 배포"라, 한 번 연결해 두면 다음부턴 저장만 하면 알아서 나간다. 도메인은 자리 잡은 뒤에 산다.
내보내기 · 앱03

앱은 어떻게
남의 폰에 들어가나

앱은 웹처럼 링크 하나로 끝나지 않는다. 사람 폰에 깔려야 하고, 그 길이 가까운 사람용과 모두용으로 나뉜다.

누구한테어떻게 (iOS 기준)관문
나·가까운
몇 명
TestFlight (애플 공식 테스트)개발자 계정은 필요, 하지만 정식 심사는 가벼움
모두
(공개)
App Store 정식 심사심사 통과해야 올라감. 반려도 흔함
안드로이드Google Play (내부 테스트 → 공개)계정 1회 $25. iOS보다 심사가 빠른 편

처음엔 TestFlight로 충분하다. 정식 출시 전에, 내 폰과 친구 몇 명 폰에 먼저 깔아 보는 길이다. 링크(또는 코드)를 보내면 TestFlight 앱으로 설치된다. 여기까지는 무거운 정식 심사 없이 빠르게 돌아간다. "일단 내 손의 실기기에서 진짜 되는지"를 여기서 확인한다.

모두에게 공개하려면 App Store 심사를 넘어야 한다. iOS는 Apple 개발자 계정(연 $99), 앱 아이콘, 권한 설명 문구, 개인정보 처리방침 주소, 그리고 심사원이 볼 수 있는 준비물이 필요하다. 웹에는 없던 관문이다. 그래서 앱은 흔히 만들기보다 내보내기가 더 오래 걸린다. 반려도 처음엔 거의 겪는다(자주 걸리는 지점은 바로 다음 장에서).

처음 조합 · 앱 내보내기
Expo로 만들었다면 TestFlight까지 먼저 가서 실기기에서 확인한다. 그다음 아이콘·처리방침·권한 문구를 갖춰 App Store 심사에 올린다. 안드로이드도 낼 거면 Google Play 내부 테스트부터.
함정 · 내보낼 때 밟는 것들04

여기서 많이들 걸린다

"내 컴퓨터에선 됐는데 올리니까 안 돼요." 내보내기의 거의 모든 좌절이 이 한 문장이다. 아래는 우리가 웹·앱을 여러 개 실제로 내면서 밟은 것들이다. 미리 알면 안 무섭다.

비밀 키가 코드에 박혀서 깃헙에 올라갔다
API 키·비밀번호를 코드에 그대로 써 두면, 깃헙에 올리는 순간 세상에 공개된다. 요금이 새거나 계정이 털린다. 키는 코드가 아니라 환경변수로 빼고, 올리기 전 코드에 키가 없는지 한 번 훑는다.
올리니까 저장한 게 자꾸 사라진다
배포할 때마다 서버가 새로 뜨면서 파일이 초기화되는 경우가 많다. 사라지면 안 되는 데이터는 영구 저장소(관리형 DB나 볼륨)에 두고, 백업을 켠다. "되는 것"과 "안 사라지는 것"은 다르다.
바꿨는데 화면이 그대로다
새로 올렸는데 옛날 화면이 보이면 대개 캐시 때문이다. 중간의 CDN이나 브라우저가 옛 파일을 들고 있는 것. 강력 새로고침을 해보고, 그래도면 파일 주소에 버전(?v=2)을 붙여 바뀐 걸 알린다.
주소는 떴는데 자물쇠(https)가 없거나 경고가 뜬다
요즘 호스팅은 대부분 https를 자동으로 붙여 준다. 안 되면 설정에서 켠다. 자물쇠 없는 주소는 브라우저가 경고를 띄워 사람들이 못 믿는다. 공개 전 꼭 확인한다.
(앱) 심사에서 반려됐다
처음 거의 겪는다. 흔한 사유는 몇 개로 정해져 있다. 처리방침 주소가 안 열림(로그인 없이 https로 열려야 한다), 권한 설명이 영어 기본 문구로 나감, 로그인이 있는데 심사원용 데모 계정을 안 줌. 반려는 끝이 아니라 "이것만 고쳐라"는 안내다. 문구대로 고쳐 다시 내면 통과한다.
(앱) 처리방침·아이콘 같은 "앱 밖의 것"에서 막힌다
코드는 멀쩡한데 아이콘이 빈 네모거나 처리방침 페이지가 없어서 못 낸다. 이건 버그가 아니라 준비물 문제다. 낼 때 필요한 목록을 미리 적어 두고 하나씩 채운다(다음 장 체크리스트).

공통점이 보인다. 내보내기의 함정은 대개 코드가 아니라 환경(키·저장·캐시)과 준비물(처리방침·아이콘·권한 문구)에 있다. 그래서 막히면 코드를 더 파기 전에 이 둘부터 본다.

점검 · 내기 전에 스스로 본다05

내기 전, 1분 점검

내보내기 직전에 이것만 훑어도 흔한 사고의 절반은 막는다. 웹과 앱으로 나눴다.

웹을 내보내기 전

코드 안에 비밀 키·비밀번호가 없다(환경변수로 뺐다).
사라지면 안 되는 데이터는 영구 저장소에 있고, 백업이 있다.
주소에 자물쇠(https)가 떠 있다.
폰에서도 한 번 열어 봤다(모바일에서 깨지지 않는다).
내 것 말고 다른 기기·다른 사람이 그 링크로 들어가 봤다.

앱을 내보내기 전

실기기에서 돌려 봤다(시뮬레이터만으론 모른다).
아이콘이 제대로 들어가 있다(빈 네모가 아니다).
처리방침 주소가 로그인 없이 https로 열린다.
카메라·위치 권한 설명 문구가 내 말로, 한국어로 들어가 있다.
로그인이 있다면 심사원용 데모 계정을 준비했다.

그래도 반려되거나 막히면, 그 문구를 그대로 AI에게 붙여넣고 "이거 어떻게 고쳐?"라고 물으면 대부분 그 자리에서 풀린다. 지난 호의 요령 그대로다.

내 화면에서만 되는 건 아직 0명이다.
오늘 한 명이 그 링크를 눌러 보게 해보자.
종이비행기를 날리는 기티
기티의 한마디. 굴은 파는 것보다 땅 위로 내놓는 게 더 떨려요. 그래도 한 번 내놓으면, 다음부턴 손이 압니다.