봉수
무료 금융데이터분석 과정봉수 인텔리전스 교육
봉수 무료 금융데이터분석 과정 · 4강
bongsu.kr/intelligence/lesson04/ · 저자 조봉수 · 봉수 SSGlobal(주) · ΦΡΥΚΤΩΡΙΑ ΠΛΗΡΟΦΟΡΙΩΝ
금융데이터분석전문가 과정 · 4강 0부 (2부 시작 강의) 공개 · 무료

앱과 플랫폼은 어떻게 만드나 — 제작 방법 지도

앱과 플랫폼의 차이, 만드는 세 가지 길, 그리고 더블클릭 한 번으로 여는 동네 주문 연습판을 직접 고치기(가격·메뉴·포장 할인·배달 출발). 무료 교재·코드.

3가지배달앱 뼈대: 데이터·화면·동작
6단계가격→메뉴→할인→데이터→버튼
0원설치 없이 크롬만

저자 조봉수 · 봉수 SSGlobal(주) · ΦΡΥΚΤΩΡΙΑ ΠΛΗΡΟΦΟΡΙΩΝ · 2026-10-22 다음 실습: lesson04 「앱 만들기 ① — 주문 한 건은 데이터 한 줄이다」

AI 이용 고지: 이 교재는 AI(Claude)와 함께 만들었습니다. 비용·제도는 2026-10-22 기준이며 바뀔 수 있으니 실제 진행할 때 다시 확인합니다.

목차

  1. 오늘의 질문
  2. 앱과 플랫폼은 무엇이 다른가
  3. 앱을 만드는 세 가지 길
  4. 플랫폼을 이루는 여섯 가지 부품
  5. 만드는 순서 7단계
  6. 출시 전에 챙길 법·행정
  7. 봉수 앱 로드맵 (2부 수업 순서)
  8. 정리 문제
  9. 이제 실습으로

1. 오늘의 질문

"배달앱 같은 플랫폼을 우리가 만들 수 있을까?" — 만들 수 있습니다. 다만 한 번에 다 만드는 게 아니라, 작은 부품을 하나씩 붙여서 만듭니다. 오늘은 그 부품과 순서를 지도로 먼저 봅니다.

2. 앱과 플랫폼은 무엇이 다른가

앱 플랫폼
쓰는 사람 한 종류 (나) 여러 종류 (손님·사장님·라이더·관리자)
데이터 내 휴대폰 안 서버에 모아서 모두가 같이 봄
예 계산기, 메모장 배달앱, 쿠팡, 당근, 카카오택시

플랫폼 = 앱 여러 개 + 가운데 서버 하나. 손님 앱에서 주문하면 서버에 한 줄이 쌓이고, 사장님 앱은 그 줄을 읽어서 "접수"를 누릅니다.

 손님 화면 ──주문──▶ ┌─────────┐ ◀──읽기── 사장님 화면
                     │  서버   │
 라이더 화면 ◀─배차── │ + 데이터 │ ──통계──▶ 관리자 화면
                     └─────────┘

3. 앱을 만드는 세 가지 길

길 무엇으로 장점 단점 봉수에 맞는가
① 웹앱(홈페이지형·PWA) HTML·자바스크립트 비용 거의 0, 바로 고쳐서 바로 반영, 앱스토어 심사 없음, 휴대폰 '홈 화면에 추가'로 앱처럼 씀 푸시알림·GPS 등 일부 기능 제한, 앱스토어 검색에 안 나옴 가장 먼저. bongsu.kr 과 같은 방식
② 크로스플랫폼 React Native(Expo), Flutter 코드 하나로 아이폰·안드로이드 동시, 앱스토어 등록 가능 배울 것이 늘어남, 스토어 등록비·심사 손님이 많아지면 두 번째
③ 네이티브 아이폰 Swift(Xcode), 안드로이드 Kotlin 가장 빠르고 휴대폰 기능 전부 사용 두 번 만들어야 함, 아이폰 앱은 원래 맥(Mac)이 필요 지금은 아님

결론: 웹앱으로 먼저 만들어 손님 반응을 보고 → 잘되면 같은 데이터·서버에 스토어 앱을 붙인다. 서버와 데이터는 그대로 두고 화면만 하나 더 만드는 것이라 처음부터 다시 만들 필요가 없습니다.

4. 플랫폼을 이루는 여섯 가지 부품

부품 하는 일 배달앱으로 보면 수업
① 화면 (프론트엔드) 보이고 눌리는 곳 메뉴판, 장바구니 4강 2-1 (오늘)
② 서버 (백엔드) 주문을 받아 저장하고 나눠 줌 주문 접수 창구 2-2
③ 데이터베이스 표를 오래 보관 주문 장부 2-2
④ 로그인 (회원) 누가 손님이고 사장님인지 구분 내 주문만 보이게 2-3
⑤ 결제 (PG) 카드·간편결제 포트원·KG이니시스·NHN KCP 계약 2-3
⑥ 알림 새 주문을 알려 줌 "딩동, 새 주문" 2-4

오늘 연습판에는 ①만 있고, ②③ 대신 내 브라우저 저장소를 씁니다. 그래서 다른 휴대폰에서는 주문이 안 보입니다. 이 한계가 바로 다음 강(서버)을 배우는 이유입니다.

5. 만드는 순서 7단계

  1. 문제와 사용자 정하기 — 누가, 무엇이 불편한가. (예: 배달 수수료가 비싸다 → 가게·손님)
  2. 화면을 종이에 그리기 — 손님 화면 3장, 사장님 화면 2장. 코드보다 먼저.
  3. 데이터 표 설계 — 주문 한 줄에 어떤 칸이 필요한가: 번호·메뉴·금액·상태·시간. (3강 판다스 표와 같은 생각)
  4. 시제품(웹앱) — 버튼이 실제로 눌리는 최소판. ← 오늘 실습
  5. 서버·데이터베이스 붙이기 — 여러 사람이 같은 주문을 보게.
  6. 시험 운영(베타) — 아는 가게 1~2곳, 실제 주문 10건. 틀린 숫자는 데이터부터 확인.
  7. 출시와 운영 — 도메인·앱스토어 등록, 문의 대응, 매출·오류 기록.

봉수 원칙과 같습니다: 한 번에 하나만 바꾸고, 바꿀 때마다 숫자로 확인한다.

6. 출시 전에 챙길 법·행정

항목 언제 필요한가
통신판매업 신고 온라인으로 팔 때
사업자 업종 앱·플랫폼 매출이 생길 때
개인정보처리방침 이름·전화·주소를 받으면
위치정보 신고 내 위치를 쓰는 앱(내비 등)
결제대행(PG) 계약 카드 결제를 받으면
앱스토어 심사 스토어 앱을 올리면

7. 봉수 앱 로드맵 (2부 수업 순서)

강 배우는 것 만드는 것 연결되는 봉수 사업
2-0 (오늘) 제작 방법 지도 — 전체
2-1 (오늘) 화면·데이터·동작 동네주문 연습판 대외비
2-2 서버와 데이터베이스 손님·사장님이 같은 주문 보기 대외비
2-3 로그인과 결제 회원 주문, 테스트 결제 대외비
2-4 휴대폰 홈 화면 앱(PWA)과 알림 아이폰에 아이콘으로 설치 대외비
2-5 위치(GPS)와 지도 지도 위 점 찍기 대외비
2-6 스토어 앱(Expo) 앱스토어용 빌드 대외비

8. 정리 문제

  1. 앱과 플랫폼의 가장 큰 차이 한 가지는? → 가운데 서버가 있어 여러 사람이 같은 데이터를 본다.
  2. 봉수가 웹앱부터 시작하는 이유 두 가지는? → 비용이 거의 없고, 고치면 바로 반영된다(심사 없음).
  3. 주문 한 건에 꼭 필요한 칸 다섯 개는? → 번호·메뉴·금액·상태·시간.
  4. 연습판 주문이 다른 휴대폰에서 안 보이는 이유는? → 서버가 아니라 내 브라우저에만 저장하기 때문.

9. 이제 실습으로

4강_교재_앱만들기1_동네주문_20261022.md 1단계부터 진행합니다 — lesson04\app.html 더블클릭.

금융데이터분석전문가 과정 · 4강 (2부 2-1강) · 앱 만들기 ① — 주문 한 건은 데이터 한 줄이다

저자 조봉수 · 봉수 SSGlobal(주) · ΦΡΥΚΤΩΡΙΑ ΠΛΗΡΟΦΟΡΙΩΝ · 2026-10-22 실습 폴더: lesson04 (연습판 app.html 1개 + 정답 answers/app_answer.html 1개)

AI 이용 고지: 이 교재와 연습판은 AI(Claude)와 함께 만들었습니다. 연습판은 수업용 예시 앱이며, 가게·메뉴는 예시입니다.

목차

  1. 오늘의 질문
  2. 3강에서 가져오는 것
  3. 수업 진행표 (약 70분)
  4. 1단계 — 더블클릭으로 앱 열기
  5. 2단계 — 메뉴 가격 바꾸기
  6. 3단계 — 메뉴 한 줄 더하기
  7. 4단계 — '포장 주문' 할인 만들기
  8. 5단계 — 주문 한 건이 데이터 한 줄인지 눈으로 보기
  9. 6단계 — 내 손으로: '배달 출발' 버튼 만들기
  10. 면접 대비 / 현업 적용 체크리스트
  11. 숙제

1. 오늘의 질문

배달앱은 복잡해 보이지만 뼈대는 세 가지뿐입니다. 데이터(메뉴·주문 표), 화면(그 표를 그리는 것), 동작(버튼을 누르면 표를 바꾸고 다시 그리는 것). 오늘은 이 세 가지를 대표님 손으로 직접 고쳐 봅니다.

2. 3강에서 가져오는 것

3강 (판다스) 4강 (앱)
표 한 줄 = 하루 시세 표 한 줄 = 메뉴 하나, 주문 한 건
df.loc[...]로 찾기 for (const m of menu)로 하나씩 보기
숫자가 틀리면 입력부터 찍어 본다 화면이 틀리면 데이터부터 찍어 본다 (F12 콘솔)
파이썬 print 자바스크립트 console.log

오늘 언어는 파이썬이 아니라 자바스크립트입니다. 앱 화면은 브라우저가 돌리고, 브라우저는 자바스크립트를 읽기 때문입니다. 문법은 다르지만 생각하는 방식은 같습니다.

3. 수업 진행표 (약 70분)

시간 단계 할 일 확인할 것
0~5분 1단계 app.html 더블클릭 메뉴 3개, 배달팁 2,000원
5~15분 2단계 떡볶이 가격 6000 → 6500 새로고침 후 6,500원
15~25분 3단계 라면 5,000원 추가 메뉴 4개
25~45분 4단계 포장 체크칸 + 할인 김밥1+떡볶이1 포장 = 9,000원
45~55분 5단계 F12 콘솔에서 주문 데이터 보기 주문 한 건 = {...} 한 줄
55~70분 6단계 '배달 출발' 버튼 직접 만들기 접수 → 조리 중 → 배달 중

규칙은 똑같습니다. 한 번에 하나만 바꾸고, 저장(Ctrl+S) → 브라우저 새로고침(F5)으로 확인합니다.

4. 1단계 — 더블클릭으로 앱 열기

  1. 탐색기에서 lesson04\app.html을 더블클릭합니다. 브라우저(크롬·엣지)에서 열립니다.
  2. 같은 파일을 오른쪽 클릭 → '연결 프로그램' → 메모장으로도 엽니다.
  3. 메뉴에 +를 눌러 담아 보고, 주문하기를 누르고, 아래 접수판에서 '접수'를 눌러 봅니다.

메모장 화면에는 [데이터], [계산], [화면], [동작] 네 덩어리가 있습니다. 앱 전체가 이 네 덩어리입니다.

5. 2단계 — 메뉴 가격 바꾸기

메모장에서 이 줄을 찾습니다.

{ id: "m3", name: "떡볶이",   price: 6000 }

6000을 6500으로 바꾸고 저장 → 브라우저 F5. 떡볶이가 6,500원이 됩니다. - 코드의 다른 곳은 하나도 안 고쳤는데 화면, 장바구니, 합계가 모두 바뀌었습니다. 데이터 한 칸을 바꾸면 화면은 따라온다 — 이것이 앱의 원리입니다. - 숫자에는 쉼표(6,500)를 넣지 않습니다. 쉼표는 '다음 칸'이라는 뜻이라 에러가 납니다.

6. 3단계 — 메뉴 한 줄 더하기

// [3단계] 주석 자리에 라면을 넣습니다.

  { id: "m3", name: "떡볶이",   price: 6000 },
  { id: "m4", name: "라면",     price: 5000 }

7. 4단계 — '포장 주문' 할인 만들기

가게가 배달비를 아끼는 가장 쉬운 방법은 포장 할인입니다. 두 곳을 고칩니다.

① 화면에 체크칸 넣기 — <!-- [4단계] … --> 줄 자리에:

<label><input type="checkbox" id="pickup" onchange="draw()"> 포장 주문 (배달팁 0원, 1,000원 할인)</label>

② 계산 바꾸기 — cartTotal() 안의 // [4단계] 줄 자리에:

  let discount = 0;
  if (document.getElementById("pickup").checked && sub > 0) {
    fee = 0;
    discount = 1000;
  }
  return { sub: sub, fee: fee, total: sub + fee - discount };

그리고 원래 있던 return { sub: sub, fee: fee, total: sub + fee }; 줄은 지웁니다(return이 두 개면 앞의 것만 실행됩니다).

확인: 원조 김밥 1 + 떡볶이 1, 포장 체크 → 합계 9,000원 (4,000+6,000−1,000, 배달팁 0원). 체크를 풀면 12,000원.

8. 5단계 — 주문 한 건이 데이터 한 줄인지 눈으로 보기

주문을 하나 넣은 뒤 브라우저에서 F12 → '콘솔(Console)' 탭을 열고 칩니다.

orders

[{no: '2210', items: '원조 김밥×1, 떡볶이×1', total: 12000, status: 'new', time: '…'}]처럼 나옵니다. - 대괄호 [ ]는 목록(표), 중괄호 { } 하나가 주문 한 건(표의 한 줄)입니다. 판다스 표의 한 줄과 똑같습니다. - 사장님이 '접수'를 누르면 바뀌는 것은 이 줄의 status 한 칸뿐입니다: "new" → "accepted". - 실제 배달 플랫폼도 같은 구조입니다. 다른 점은 이 줄을 내 브라우저가 아니라 서버 저장소에 넣는다는 것 하나라서, 손님 휴대폰과 사장님 화면이 같은 줄을 봅니다.

9. 6단계 — 내 손으로: '배달 출발' 버튼 만들기

지금은 '접수 대기 → 조리 중'까지만 있습니다. '조리 중 → 배달 중'을 직접 만들어 봅니다. 힌트만 드립니다. 1. accept 함수를 복사해 ride 함수를 만들고, "accepted" 대신 "riding"을 넣습니다. 2. 접수판 그리기에서 o.status === "accepted"일 때 <button onclick="ride('…')">배달 출발</button>이 나오게 합니다. 3. 상태 글자(label)에 "riding"이면 "배달 중"이 나오게 합니다.

막히면 F12 콘솔의 빨간 글씨를 끝까지 읽습니다. 정답은 정해 두지 않았습니다 — 방법이 여러 가지라서, 내일 대표님 코드를 같이 보며 고치겠습니다.

10. 면접 대비 / 현업 적용 체크리스트

면접 대비 - 질문 "앱의 화면과 데이터를 어떻게 분리합니까?" - 답: 메뉴와 주문을 데이터(배열)로 두고, 화면은 그 데이터를 그리는 함수 하나(draw)로만 만듭니다. 버튼은 데이터를 바꾸고 draw를 다시 부릅니다. 그래서 가격 한 칸을 바꾸면 화면 전체가 맞게 따라옵니다. - 질문 "할인 계산 같은 돈 계산은 어디에 둡니까?" - 답: 화면이 아니라 계산 함수 한 곳(cartTotal)에 둡니다. 같은 금액을 여러 곳에서 따로 계산하면 서로 어긋납니다.

현업 체크리스트 - [ ] 돈 계산은 한 함수에만 있는가 - [ ] 데이터를 바꾼 뒤 화면을 다시 그리는가 - [ ] 주문 한 건에 번호·시간·상태가 다 있는가 - [ ] 실제 손님의 주소·전화번호는 연습판에 넣지 않았는가

11. 숙제

  1. 메뉴에 '품절' 칸(soldOut: true)을 만들고, 품절 메뉴는 + 버튼 대신 '품절' 글자가 나오게 하기.
  2. 접수판 위에 '오늘 주문 수'와 '오늘 매출'을 표시하기 (orders.length, for로 total 더하기).
  3. 다음 강 예고: 2-2강 — 주문을 서버 저장소에 넣기. 손님 휴대폰과 사장님 화면이 같은 주문을 보게 만듭니다.

연습판은 서버 없이 브라우저에만 저장합니다. 브라우저 기록을 지우면 연습 주문도 사라집니다. 확인: 2026-10-21 버디가 클라우드 헤드리스 브라우저로 연습판과 정답판을 실행 — 연습판 김밥1+떡볶이1 = 12,000원, 정답판 포장 = 9,000원, '접수' 후 '조리 중' 전환, 스크립트 오류 0.

실습 파일 받기

받은 파일을 내 PC의 lesson04 폴더에 모읍니다(answers 폴더는 그 안에). 원자료 파일이 필요 없습니다. 정답 파일은 먼저 풀고 나서 비교용으로만 봅니다. API 키는 남에게 보여 주지 마세요.

AI 이용 고지: 이 교재와 실습 파일은 AI(Claude, 버디)와 함께 만들었습니다. 숫자는 실제 자료와 첫 수강생(봉수 대표)의 PC에서 나온 그대로이며, 같은 코드로 누구나 다시 계산할 수 있습니다. 모든 매매 계산은 모의 계산이며 투자 권유가 아닙니다. 교재는 무료로 읽고 인쇄할 수 있습니다.