📑 F5. 앱의 겉과 속 — 목업 v4 (논증 + 설명 산문)

중학생 눈높이의 앱 기획 교안. 화면 뒤에서 앱이 어떻게 굴러가는지를 '식당' 비유 하나로 끝까지 따라갑니다. 목표는 기술 암기가 아니라 겁먹지 않을 큰 그림 — architecture(IT 입문) 1·5·7장과 이어집니다. 강사가 읽고 그대로 말할 수 있는 설명 산문을 슬라이드마다 넣었습니다.

이 장이 던지는 질문
화면 뒤에서, 앱은 대체 어떻게 굴러가는가?  →  주장: 앱은 '식당'처럼 홀(프런트엔드)·주방(백엔드)·창고(DB)가 '요청·응답'으로 협력한다.
F5
앱 기획 · 화면 뒤에서 일어나는 일
CHAPTER F5

앱의 겉과 속

프런트엔드 · 백엔드 · 데이터베이스  ·  요청과 응답으로 협력하는 한 채의 '식당'
이 장은 단 하나의 질문에서 출발한다 — "화면 뒤에서 앱은 어떻게 굴러가는가?" 우리는 앱을 '화면 하나'로 여기지만, 이 장은 그 안을 식당으로 열어 본다(통념→주장→홀→주방·창고→요청·응답→AI 요리사→결론). 코딩을 배우려는 게 아니라, 무엇을 누구에게 부탁할지 또렷해지는 큰 그림을 얻는 게 목표다.
F5. 앱의 겉과 속
01 / 12
F5 · 이 장의 지도
전체 구성 — 시작 전에 길을 펼친다

하나의 질문을, 하나의 '식당'으로 답한다

이 장은 용어를 나열한 게 아니라 한 질문을 식당 비유 하나로 끝까지 따라가는 논증이다. 본론에 들어가기 전, 우리가 지나갈 전체 길을 먼저 펼쳐 둔다. 통념(앱=화면 하나)을 깨고, 앱을 홀·주방·창고로 나눈 뒤, 이 셋이 요청·응답으로 협력하는 그림까지 간다.

F5 · 앱의 속을 식당으로 열어 본다 — 논증  (p3–p9)
① 통념
"앱 = 화면 하나?"
p3 · 겉만 보임
② 주장
겉과 속은 따로 — 식당
p4 · 비유 선언
③ 홀
보이는 화면 = 프런트엔드
p5 · AWS
④ 주방·창고
처리=백엔드 / 저장=DB
p6 · MDN
⑤ 요청·응답
주문 → 요리가 나온다
p7 · MDN 웹동작
⑥ AI 요리사
특별 메뉴엔 토큰 값
p8 · 비용 판단
⑦ 결론
기획자는 큰 그림이면 충분
p9 · 부탁이 또렷
정리
한 흐름으로 회수
p10 정리 / p11 실습 / p12 출처
→ 자, 출발먼저 가장 흔한 통념부터 깬다 — "우리는 앱을 '화면 하나'라고 착각하고 있지 않나?"
F5. 앱의 겉과 속
02 / 12
F5 · 논증 1단계
① 통념② 주장③ 홀④ 주방·창고⑤ 요청·응답⑥ AI⑦ 결론
통념 깨기

우리는 앱을 '화면 하나'라고 착각한다

학생들에게 "앱이 뭐냐"고 물으면 거의 다 눈에 보이는 화면을 떠올린다. 버튼을 누르면 화면이 알아서 다 처리한다고 여기는 것이다. 하지만 화면은 식당의 홀일 뿐 — 그 뒤에는 보이지 않는 주방과 창고가 따로 있다. 이 착각을 깨는 데서 이 강의가 시작된다.

🗣️ 교실에서 자주 나오는 말

  • "앱? 그냥 화면 누르면 알아서 다 되는 거요."
  • "버튼이랑 글씨만 잘 만들면 앱 끝 아니에요?"
  • "내가 쓴 글은 화면에 저장돼 있겠죠."

🍽️ 그런데 — 손님은 '홀'만 본다

식당에 가면 손님은 홀(테이블·메뉴판)만 본다. 하지만 음식은 안 보이는 주방에서 만들어지고, 재료는 창고에 쌓여 있다. 홀만 보고 "식당 = 테이블"이라 하면, 막상 음식이 늦을 때 어디가 막혔는지 짚을 수 없다.

🔎 한 걸음 더 앱을 껐다 켜도 내가 쓴 글이 그대로 남아 있는 걸 떠올려 보자. 만약 글이 정말 '화면'에만 있었다면 화면이 꺼지는 순간 사라져야 한다. 안 사라진다는 사실 자체가, 화면 뒤에 글을 따로 보관하는 '속'이 있다는 증거다. (architecture 1장 — 컴퓨터가 하는 일과 연결)
→ 그래서'화면 하나'라는 그림으로는 앱을 설명할 수 없다. 질문을 바꿔야 한다 — 겉(화면) 뒤의 '속'은 대체 어떻게 생겼는가?
F5. 앱의 겉과 속
03 / 12
F5 · 논증 2단계
① 통념② 주장③ 홀④ 주방·창고⑤ 요청·응답⑥ AI⑦ 결론
이 장의 주장

앱은 한 채의 식당처럼 굴러간다

이 강의가 증명하려는 한 문장은 이것이다 — 앱은 겉과 속이 따로 있고, '식당'처럼 세 부분이 협력해 굴러간다. 손님이 보는 은 화면(프런트엔드), 안 보이는 곳에서 일하는 주방은 서버(백엔드), 재료를 쌓아 둔 창고는 데이터베이스(DB)다. 셋 중 하나만 빠져도 식당은 돌아가지 않는다.

🛎️
손님이 보는 곳
= 화면(프런트엔드)
👨‍🍳
주방
안 보이게 처리하는 곳
= 서버(백엔드)
📦
창고
재료를 보관하는 곳
= 데이터베이스(DB)

앞으로 세 슬라이드에 걸쳐 이 셋을 하나씩 열어 본다. 핵심은 "어디서 무슨 일이 일어나는가"를 부분별로 나눠 말할 줄 아는 것 — 그게 기획자의 첫 번째 능력이다.

→ 그래서먼저 손님이 유일하게 볼 수 있는 부분, 홀(화면)부터 연다 — 화면은 정확히 무슨 일까지 하고, 무슨 일은 못 하는가?
F5. 앱의 겉과 속
04 / 12
F5 · 논증 3단계 · 근거: AWS
① 통념② 주장③ 홀④ 주방·창고⑤ 요청·응답⑥ AI⑦ 결론
홀 — 보이는 화면(프런트엔드)

프런트엔드는 '손님이 보는 모든 것'이다

프런트엔드는 식당의 이다. 버튼·글씨·이미지·색·간격처럼 사용자가 눈으로 보고 손으로 만지는 모든 것이 여기 속한다. AWS는 프런트엔드를 "사용자가 보는 것 — 버튼·체크박스·그래픽·글자 같은 시각 요소"라고 정의한다. 그래서 '버튼을 어디에 둘까, 색을 무엇으로 할까'는 전부 프런트엔드의 몫이다.

🛎️ 홀(화면)이 하는 일

  • 보여 주기 — 메뉴·버튼·내 글을 띄운다
  • 입력 받기 — 손님의 주문(터치·글자)을 받는다
  • 간단한 확인 — "빈칸이네요?" 같은 즉석 안내

🚫 홀이 하는 일

홀은 음식을 만들지 못하고, 재료를 보관하지 못한다. 마찬가지로 화면은 비밀번호가 진짜 맞는지 확인하거나, 내 글을 영구히 저장하지 못한다. 그건 주방과 창고의 일이다.

🔎 한 걸음 더 AWS는 또 하나 짚는다 — "사용자마다 앱의 사본을 각자의 브라우저나 폰에 가지고 있다"는 점이다. 즉 같은 화면(홀)이 손님 수만큼 복제돼 각자 앞에 놓인다. 그래서 '내 화면'이 멈춰도 옆 사람 화면은 멀쩡할 수 있다. (architecture 5장 — 보이는 쪽과 안 보이는 쪽)
🎯 그래서 당신은 "화면을 고쳐 달라"와 "처리·저장을 고쳐 달라"를 구분해서 부탁한다. 색·위치·글씨 문제면 홀(프런트엔드), 계산·검사·저장 문제면 주방·창고다.
F5. 앱의 겉과 속
05 / 12
F5 · 논증 4단계 · 근거: MDN(서버 사이드 첫걸음)
① 통념② 주장③ 홀④ 주방·창고⑤ 요청·응답⑥ AI⑦ 결론
주방·창고 — 안 보이는 속(백엔드 · DB)

처리는 주방(백엔드)이, 보관은 창고(DB)가 한다

화면(홀)이 받은 주문은 안 보이는 주방으로 넘어간다. 주방(백엔드)은 계산·검사·결정을 맡는 서버다. MDN은 서버가 하는 일을 "요청에 응답해 어떤 내용을 돌려줄지 고르고, 보낸 데이터를 검증하며, 데이터베이스를 써서 정보를 저장·검색하는 것"이라고 설명한다. 그리고 그 정보가 쌓이는 곳이 바로 창고(DB)다.

👨‍🍳 주방 = 서버(백엔드)

안 보이는 곳에서 일을 처리한다. 예: 로그인할 때 '비밀번호가 맞나' 확인하는 건 화면이 아니라 서버가 한다. 퀴즈의 정답 채점도 주방의 몫이다.

  • 검사 — 맞는 주문인가?
  • 계산·조리 — 결과를 만든다
  • 창고에 넣고 빼기를 지시

📦 창고 = 데이터베이스(DB)

정보를 보관하는 곳. 가입 정보·작성한 글·점수를 저장해 둔다. 앱을 껐다 켜도 내 글이 남아 있는 건 화면이 아니라 DB에 저장돼 있어서다.

  • 가입 정보 · 내가 쓴 글 · 점수
  • 꺼도 안 사라짐(영구 보관)
🔎 한 걸음 더 MDN에 따르면 큰 사이트는 화면을 미리 다 만들어 두지 않는다 — "창고(DB)에서 꺼낸 데이터를 화면 틀(템플릿)의 빈칸에 끼워 넣어" 그때그때 만든다. 그래서 쇼핑몰 수백만 개 상품 화면이 다 따로 있는 게 아니라, 틀 하나 + 창고로 굴러간다. (architecture 7장 — 데이터 창고)
→ 그런데그렇다면 홀·주방·창고는 떨어져 있는데, 손님의 주문은 어떻게 주방까지 갔다가 음식이 되어 돌아오는가?
F5. 앱의 겉과 속
06 / 12
F5 · 논증 5단계 · 근거: MDN(웹은 어떻게 작동하는가)
① 통념② 주장③ 홀④ 주방·창고⑤ 요청·응답⑥ AI⑦ 결론
협력의 방식 — 요청과 응답

주문을 넣으면(요청), 요리가 나온다(응답)

홀·주방·창고를 잇는 끈이 바로 요청(request)과 응답(response)이다. MDN은 웹의 동작을 "클라이언트(화면)에서 서버로 요청이 가고, 서버에서 클라이언트로 응답이 온다"고 그림으로 설명한다. 식당으로 옮기면, 버튼을 누르는 건 주문서를 주방에 넣는 일이고, 결과가 화면에 뜨는 건 요리가 나오는 일이다.

🛎️
홀 (화면)
버튼을 누른다
👨‍🍳
주방 (서버)
검사·조리
📦
창고 (DB)
꺼내고·넣고
① 요청버튼 누름 → "이 댓글 저장해 주세요"라는 주문서가 인터넷으로 주방(서버)에 전달된다.
② 응답서버가 검사하고 창고에 넣은 뒤, 결과가 화면에 뜬다 — "저장됐어요!" 요리가 손님에게 나온 것.
🔎 로딩 표시의 정체 MDN은 서버가 요청을 받아들이면 "200 OK"라는 응답을 보낸다고 설명한다. 빙글빙글 도는 로딩 표시는, 주문은 넣었는데 아직 '요리(응답)'가 안 나온 시간이다 — 멈춘 게 아니라 주방이 일하는 중이라는 신호다. (architecture 1·5장과 연결)
🎯 한 줄로 외우자 버튼 누름(요청) → 서버가 처리 → 결과가 화면에 뜸(응답). 이 한 줄이 거의 모든 앱의 기본 박자다.
F5. 앱의 겉과 속
07 / 12
F5 · 논증 6단계 · 기획 판단
① 통념② 주장③ 홀④ 주방·창고⑤ 요청·응답⑥ AI⑦ 결론
기획 판단 — "AI는 다 넣으면 좋지 않나?"

AI는 주방의 '특별 요리사' — 부를 때마다 값이 든다

"AI를 모든 화면에 넣으면 더 좋지 않냐"는 생각은 절반만 맞다. AI는 주방에 새로 들어온 특별 요리사다 — 글·그림을 척척 만들어 주지만, 한 접시 만들 때마다(토큰만큼) 재료비가 든다. 일반 메뉴는 일반 조리대로 충분한데, 모든 메뉴를 특별 요리사에게 시키면 식당이 적자가 난다.

✅ 특별 요리사가 빛나는 곳

  • 글 써 주기 · 요약 · 아이디어 제안
  • 그림 생성 · 번역 같은 창작/판단
  • "사람이 하면 오래 걸리는" 일

❌ 굳이 부를 필요 없는 곳

  • 점수 더하기 · 날짜 보여 주기
  • 저장된 글 그대로 띄우기
  • 이미 답이 정해진 단순 처리
🔎 토큰이란 AI는 글자를 '토큰'이라는 작은 조각 단위로 세어 값을 매긴다. 길게 묻고 길게 답할수록 토큰이 늘고 비용도 는다. 그래서 기획 단계에서 "AI를 어디에, 얼마나 부를지"를 미리 정해 두는 게 곧 비용 설계다. (파급 큰 선택 — 어떤 AI를, 왜, 한도·비용까지 묶어 결정)
🎓 교실에서 내가 기획한 앱의 화면 5개를 칠판 두 칸(특별 요리사 필요 / 일반 조리대로 충분)에 나눠 붙여 본다. 대부분은 오른쪽 칸으로 가야 정상 — "AI는 꼭 필요한 곳에만"을 몸으로 느끼게 한다.
→ 따라서이제 한 가지가 분명해진다. 기획자는 요리사가 될 필요는 없다 — 단, 어느 메뉴를 누구에게 시킬지는 알아야 한다.
F5. 앱의 겉과 속
08 / 12
F5 · 논증 7단계 · 결론
① 통념② 주장③ 홀④ 주방·창고⑤ 요청·응답⑥ AI⑦ 결론
결론 — 기획자에게 필요한 건 '큰 그림'

코딩은 몰라도, '어디 일인지'는 알아야 한다

지금까지의 논증이 도착한 곳은 단순하다 — 기획자가 코딩까지 할 필요는 없다. 다만 '겉과 속이 따로 있다'는 식당 그림을 알면, AI나 개발자에게 무엇을 부탁할지가 또렷해진다. "화면을 고쳐 달라"와 "저장을 고쳐 달라"는 서로 다른 부탁이기 때문이다. 큰 그림이 곧 또렷한 요청서다.

증상 / 하고 싶은 말어디 일인가?어떻게 부탁?
"버튼이 안 보여요 / 색을 바꾸고 싶어요"홀 = 프런트엔드"화면을 고쳐 주세요"
"채점이 틀려요 / 로그인 검사가 이상해요"주방 = 백엔드"처리(서버)를 고쳐 주세요"
"껐다 켜니 내 글이 사라졌어요"창고 = DB"저장(DB)을 고쳐 주세요"
"AI 답이 너무 느려요 / 비싸요"특별 요리사 = AI"AI를 어디에 쓸지 다시 정하자"
🔎 진짜 능력 "로그인이 느려요"라는 문제를 만났을 때, 화면이 느린 건지 / 서버 응답이 느린 건지를 먼저 갈라 보는 것 — 이게 겉과 속을 아는 기획자의 능력이다. 어디서 막혔는지 짚을 줄 알면, 막연한 불만이 고칠 수 있는 요청으로 바뀐다.
🎯 그래서 당신은 문제를 만나면 먼저 묻는다 — "이건 홀의 일인가, 주방의 일인가, 창고의 일인가?" 그 한 번의 구분이 또렷한 부탁을 만든다.
F5. 앱의 겉과 속
09 / 12
F5 · 정리
F5가 증명한 것 — 한 흐름으로 회수

'화면 하나'에서 출발해, '한 채의 식당'에 도착했다

이 장은 용어를 모은 게 아니라, 하나의 질문을 식당 비유로 끝까지 따라간 추론이었다. 출발점은 "앱=화면 하나"라는 통념이었고, 도착점은 "앱은 홀·주방·창고가 요청·응답으로 협력하는 식당"이라는 그림이었다. 그 사이를 AWS·MDN 같은 1차 자료가 각자의 역할로 이어 주었다.

통념앱은 '화면 하나'다 (속은 안 보임)
↓ 그런데
주장앱은 식당이다 — 홀(화면)·주방(서버)·창고(DB)가 따로 있다
↓ 그래서 홀은
프런트엔드 = 손님이 보고 만지는 모든 것 (보여주기·입력받기)
↓ 그 뒤엔
주방·창고백엔드(검사·계산·결정) + DB(꺼도 안 사라지는 보관)
↓ 셋을 잇는 끈
요청·응답버튼 누름(요청) → 서버 처리 → 결과가 화면에(응답). 로딩=대기 시간
↓ 그리고
AIAI=특별 요리사 — 부를 때마다 토큰 값. 꼭 필요한 곳에만
↓ 따라서
결론코딩은 몰라도 '어디 일인지'는 안다 → 부탁이 또렷해진다
🎯 한 문장 요약 앱은 홀·주방·창고가 요청·응답으로 협력하는 식당이며, 기획자는 코딩이 아니라 '어디서 무슨 일이 일어나는지'를 알면 충분하다.
F5. 앱의 겉과 속
10 / 12
F5 · 교실에서 / 실습
손으로 익히기 — 식당 역할극 + 한 장 지도

몸으로 한 번 굴려 보면, 추상이 구체가 된다

'프런트/백엔드/DB'는 말로만 들으면 끝까지 추상적이다. 그래서 이 장은 몸으로 한 번 굴려 보는 것으로 닫는다 — 식당 역할극으로 흐름을 느끼고, 한 장 지도로 내 앱을 직접 나눠 본다. 목표는 다시 한 번, 기술 암기가 아니라 겁먹지 않을 큰 그림이다.

🎭 식당 역할극 (3명 1조)

한 명은 (화면: "주문 받습니다"), 한 명은 주방(서버: 계산·조리), 한 명은 창고(DB: 재료 보관).

  • 손님 주문이 홀→주방→창고를 거쳐
  • 다시 응답으로 돌아오는 30초 연기
  • "로딩 중!"을 주방이 외치며 시간 끌기

🗺️ 앱 구조 한 장 지도 (5~10분)

A4를 세 칸으로 나눠 홀(화면) / 주방(서버) / 창고(DB) 라벨을 붙이고, 내 앱 기능 3개가 각각 어느 칸 일인지 화살표로 잇는다.

  • 예: "댓글 쓰기 → 화면 입력 → 서버 검사 → DB 저장"
  • 산출물 = 세 칸이 채워진 구조 지도
📝 O/X 퀴즈로 점검 "내가 쓴 글이 앱을 껐다 켜도 남아 있는 건, 그 글이 화면(프런트엔드)에 저장돼 있기 때문이다." → 정답: X — 화면은 보여 주기만 할 뿐, 글을 보관하는 곳은 창고(DB)다.
🎯 마무리 한 마디 더 깊이 알고 싶으면 architecture(IT 입문) 1장(컴퓨터가 하는 일)·5장(보이는 쪽·안 보이는 쪽)·7장(데이터 창고)으로 이어진다 — 단, 지금 필요한 건 '큰 그림' 하나면 충분하다.
F5. 앱의 겉과 속
11 / 12
더 읽을거리 · 검증된 1차 자료

근거가 된 자료 & 더 깊이

  • AWS, "Frontend vs Backend의 차이" — "프런트엔드는 사용자가 보는 것", "백엔드는 앱을 작동시키는 데이터·인프라". 요청·응답으로 협력 · ②③ 단계 근거(홀·주방)
  • MDN, "서버 사이드 첫걸음(Server-side First steps)" — 서버는 요청에 응답할 내용을 고르고, DB로 정보를 저장·검색한다 · ④ 단계 근거(주방·창고)
  • MDN, "웹은 어떻게 작동하는가(How the web works)" — 클라이언트→서버 '요청', 서버→클라이언트 '응답', "200 OK" · ⑤ 단계 근거(요청·응답)
  • 코드잇 (codeit.kr) — 프런트·백엔드·DB 기초를 한국어로 단계별 학습 · 학생·교사 용어 보완
더 깊이 — architecture (IT 입문) · 이 장에서 비유로 잡은 그림을 원리로 잇는다: 1장 컴퓨터가 하는 일 · 5장 보이는 쪽과 안 보이는 쪽 · 7장 데이터 창고. 단, F5의 목표는 '겁먹지 않을 큰 그림'까지다.
F5. 앱의 겉과 속
12 / 12