🍽️ 1. 핵심 비유: 웹사이트는 레스토랑이다
웹사이트를 이해하는 가장 쉬운 방법은 레스토랑에 비유하는 것입니다.
- 🏠 레스토랑 건물 = 서버
- 🪑 홀 (손님 공간) = 프론트엔드
- 🍳 주방 = 백엔드
- 📝 주문서 = API
- 🧊 식재료 창고 = 데이터베이스
- 👨🍳 직원들 = 코드
손님(사용자)이 레스토랑(웹사이트)에 들어오면, 먼저 홀(프론트엔드)에서 메뉴를 보고 주문합니다. 주문서(API)가 주방(백엔드)으로 전달되면, 요리사(코드)가 창고(데이터베이스)에서 재료를 꺼내 요리를 만들어 다시 홀로 가져다줍니다.
이 비유를 기억하면, 앞으로 나오는 모든 기술 용어가 쉽게 이해될 것입니다.
🪑 2. 프론트엔드: 레스토랑의 홀
프론트엔드(Frontend)는 사용자가 직접 보고 상호작용하는 부분입니다. 레스토랑으로 치면 손님이 앉는 홀, 메뉴판, 테이블 장식 등입니다.
프론트엔드의 3요소
HTML
레스토랑의 뼈대. 벽, 테이블, 의자의 배치. "여기에 제목, 여기에 버튼"을 정의합니다.
CSS
레스토랑의 인테리어. 색상, 조명, 가구 스타일. 보기 좋게 꾸미는 역할입니다.
JavaScript
레스토랑의 직원. 주문 받기, 메뉴 추천, 계산. 동적인 상호작용을 담당합니다.
┌─────────────────────────────────────────┐
│ 브라우저 (Chrome 등) │
├─────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────┐ │
│ │ HTML (구조) │ │
│ │ ┌───────────────────────┐ │ │
│ │ │ CSS (스타일) │ │ │
│ │ │ ┌───────────────┐ │ │ │
│ │ │ │ JavaScript │ │ │ │
│ │ │ │ (동작) │ │ │ │
│ │ │ └───────────────┘ │ │ │
│ │ └───────────────────────┘ │ │
│ └───────────────────────────────┘ │
│ │
│ ↑ 이것이 "프론트엔드" 입니다 │
└─────────────────────────────────────────┘
여러분이 웹사이트에서 보는 모든 것 - 버튼, 이미지, 텍스트, 애니메이션 - 은 프론트엔드입니다. 사용자 경험(UX)의 핵심이죠.
🍳 3. 백엔드: 레스토랑의 주방
백엔드(Backend)는 사용자 눈에 보이지 않는 서버 측 로직입니다. 레스토랑의 주방처럼, 손님은 못 보지만 실제로 음식(데이터)을 만드는 곳입니다.
주방(백엔드)에서 하는 일
- 주문 처리: 사용자 요청을 받아 적절한 응답 반환
- 재료 관리: 데이터베이스에서 데이터 읽기/쓰기
- 보안 검사: 손님이 VIP인지, 결제가 완료됐는지 확인
- 복잡한 계산: AI 분석, 추천 알고리즘 등
백엔드는 Python, Java, Node.js, PHP 등 다양한 언어로 작성됩니다. AI Test Lab의 성격 분석 알고리즘도 백엔드에서 동작합니다.
💡 알아두기: "풀스택 개발자"란 프론트엔드와 백엔드를 모두 할 수 있는 개발자를 말합니다. 홀과 주방 모두에서 일할 수 있는 만능 직원인 셈이죠.
🏠 4. 서버: 레스토랑 건물 자체
서버(Server)는 웹사이트가 "살아있는" 컴퓨터입니다. 레스토랑 비유에서 건물 자체에 해당합니다.
건물이 없으면 홀도 주방도 없듯이, 서버가 없으면 웹사이트도 존재하지 않습니다. 서버는 24시간 365일 켜져 있어야 사람들이 언제든 방문할 수 있습니다.
사용자의 컴퓨터 서버 (24시간 가동 중)
┌──────────┐ ┌──────────────────┐
│ 브라우저 │ ──── 인터넷 ────▶ │ 웹사이트 코드 │
│ (손님) │ ◀─── 응답 ────── │ 데이터베이스 │
└──────────┘ │ 백엔드 로직 │
└──────────────────┘
↑
이것이 "서버" 입니다
서버의 종류
| 유형 | 비유 | 예시 |
|---|---|---|
| 물리 서버 | 자가 건물 | 회사 서버실의 실제 컴퓨터 |
| 클라우드 서버 | 임대 건물 | AWS, Google Cloud, Azure |
| 서버리스 | 공유 오피스 | Vercel, Netlify, Cloudflare |
요즘은 대부분 클라우드 서버를 사용합니다. 직접 건물을 짓는 대신 필요한 만큼 빌려 쓰는 거죠. 비용 효율적이고 확장이 쉽습니다.
📝 5. API: 홀과 주방을 연결하는 주문서
API (Application Programming Interface)는 가장 많이 듣지만 가장 헷갈리는 용어입니다. 레스토랑 비유로는 주문서입니다.
API가 하는 일
- 손님(프론트엔드)이 "파스타 주세요"라고 요청(Request)
- 주문서(API)가 주방(백엔드)으로 전달
- 주방에서 요리 후 응답(Response)으로 음식 전달
프론트엔드 API 백엔드
┌──────────┐ ┌──────────┐ ┌──────────┐
│ "로그인 │ ──────▶ │ POST │ ──────▶ │ 비밀번호 │
│ 버튼 │ │ /login │ │ 확인 │
│ 클릭" │ ◀────── │ │ ◀────── │ 결과반환 │
└──────────┘ └──────────┘ └──────────┘
요청 중개자 처리
(주문서) (주방)
API 덕분에 프론트엔드와 백엔드가 서로 다른 언어로 작성되어도 소통할 수 있습니다. 영어를 쓰는 손님과 한국어를 쓰는 요리사가 표준화된 주문서로 의사소통하는 것과 같습니다.
실생활 예시: 카카오톡에서 친구에게 선물하기를 할 때, 카카오는 결제 API(카카오페이), 상품 API(쇼핑몰), 알림 API 등 여러 API를 조합해서 서비스를 제공합니다.
🧊 6. 데이터베이스: 식재료 창고
데이터베이스(Database)는 모든 데이터를 저장하는 곳입니다. 레스토랑의 냉장고와 창고에 해당합니다.
회원 정보, 게시글, 주문 내역 등 모든 것이 데이터베이스에 저장됩니다. 백엔드는 필요할 때 이곳에서 데이터를 꺼내고, 새 데이터를 저장합니다.
데이터베이스의 두 가지 유형
관계형 DB (SQL)
엑셀 시트처럼 표 형태로 데이터 저장. 정형화된 데이터에 적합.
예: MySQL, PostgreSQL
NoSQL
JSON 형태로 유연하게 저장. 다양한 형태의 데이터에 적합.
예: MongoDB, Firebase
관계형 DB (표 형태) NoSQL (문서 형태)
┌────────┬─────────┬────┐ {
│ ID │ 이름 │ 나이│ "id": 1,
├────────┼─────────┼────┤ "name": "김철수",
│ 1 │ 김철수 │ 55 │ "age": 55,
│ 2 │ 이영희 │ 48 │ "hobbies": ["등산", "독서"]
└────────┴─────────┴────┘ }
🚀 7. 배포: 레스토랑 오픈하기
배포(Deployment)는 개발한 웹사이트를 실제로 사람들이 접속할 수 있게 만드는 과정입니다. 레스토랑을 준비만 해놓고 문을 안 열면 소용없듯이, 코드도 배포해야 의미가 있습니다.
배포 플랫폼 비교
| 플랫폼 | 특징 | 추천 대상 |
|---|---|---|
| GitHub Pages | 무료, 정적 사이트 | 입문자, 포트폴리오 |
| Vercel | 무료, 자동 배포 | React/Next.js 프로젝트 |
| Cloudflare Pages | 무료, 빠른 속도 | 정적 + 서버리스 |
| AWS | 유료, 강력함 | 기업, 대규모 서비스 |
초보자에게는 GitHub Pages나 Cloudflare Pages를 추천합니다. 무료이고, 클릭 몇 번으로 배포할 수 있습니다.
🎯 8. 전체 흐름 정리
이제 모든 개념을 하나로 연결해 봅시다.
사용자가 웹사이트에 접속하면...
┌─────────────────────────────────────────────────────────────────┐
│ 인터넷 │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 🏠 서버 (레스토랑 건물) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🪑 프론트엔드 (홀) 📝 API 🍳 백엔드 (주방) │ │
│ │ ┌───────────────┐ (주문서) ┌───────────────┐ │ │
│ │ │ HTML (뼈대) │ ────────────────▶ │ 비즈니스 로직 │ │ │
│ │ │ CSS (인테리어) │ ◀──────────────── │ 데이터 처리 │ │ │
│ │ │ JS (직원) │ └───────────────┘ │ │
│ │ └───────────────┘ │ │ │
│ │ ▲ │ │ │
│ │ │ ▼ │ │
│ │ │ ┌───────────────┐ │ │
│ │ └──────────────────────────────│ 🧊 데이터베이스 │ │ │
│ │ │ (창고) │ │ │
│ │ └───────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
핵심 요약
- ✅ 프론트엔드: 사용자가 보는 화면 (HTML, CSS, JavaScript)
- ✅ 백엔드: 보이지 않는 서버 로직 (Python, Node.js 등)
- ✅ 서버: 웹사이트가 돌아가는 컴퓨터
- ✅ API: 프론트엔드와 백엔드를 연결하는 규약
- ✅ 데이터베이스: 데이터를 저장하는 곳
- ✅ 배포: 만든 것을 세상에 공개하는 과정
📖 관련 글
정보 제공 목적 고지
본 콘텐츠는 교육 및 정보 제공 목적으로 작성되었습니다. 기술 환경은 빠르게 변화하므로, 실제 프로젝트 진행 시 최신 공식 문서를 참고하시기 바랍니다.