Skip to main content
Summary

웹 애플리케이션은 무엇을 하는 프로그램일까

웹 애플리케이션은 브라우저를 통해 사용하는 프로그램입니다. 우리가 주소창에 https://example.com 같은 주소를 입력하거나, 로그인 버튼을 누르거나, 검색어를 입력하면 브라우저는 어딘가에 있는 서버에 요청을 보냅니다. 서버는 그 요청을 읽고 필요한 일을 처리한 뒤 다시 브라우저에 결과를 돌려줍니다.

이 흐름은 식당 주문과 비슷합니다.

  • 손님: 브라우저

  • 주문서: HTTP 요청

  • 주방: 서버와 Flask 애플리케이션

  • 완성된 음식: HTTP 응답

  • 메뉴 이름: URL

브라우저는 "이 주소의 페이지를 보여 주세요"라고 요청합니다. 서버는 "요청하신 페이지입니다"라고 응답합니다. 웹 개발은 이 요청과 응답 사이에서 어떤 일을 할지 정하는 작업입니다.

Flask를 배우기 전에 이 큰 흐름을 먼저 이해하면 뒤에서 나오는 라우팅, 요청 처리, 템플릿 같은 개념이 따로 놀지 않습니다. 모두 "요청이 들어오고, 처리하고, 응답을 돌려주는 과정" 안에 들어 있습니다.

Flask와 웹 애플리케이션의 큰 그림 이해하기AI 생성 이미지

Flask는 어떤 도구인가

Flask는 파이썬으로 웹 애플리케이션을 만들 수 있게 도와주는 웹 프레임워크입니다. 프레임워크는 자주 쓰는 구조와 기능을 미리 준비해 둔 도구 상자라고 생각하면 됩니다. 웹 서버와 연결하는 방식, URL을 함수에 연결하는 방식, HTML 화면을 만들어 응답하는 방식 같은 기본 작업을 직접 밑바닥부터 만들지 않아도 됩니다.

Flask 공식 문서는 Flask를 "가벼운 WSGI 웹 애플리케이션 프레임워크"라고 설명합니다.1 여기서 WSGI는 파이썬 웹 애플리케이션과 웹 서버가 서로 대화하기 위한 약속입니다. 처음부터 깊게 알 필요는 없습니다. 지금은 "Flask가 파이썬 코드와 웹 서버 사이를 이어 주는 표준적인 방식 위에서 동작한다" 정도로 이해하면 충분합니다.

Flask가 자주 "마이크로프레임워크"라고 불리는 이유는 기능이 부족해서가 아닙니다. 처음부터 모든 기능을 한꺼번에 포함하지 않고, 꼭 필요한 핵심 기능을 작고 단순하게 제공하기 때문입니다. 로그인, 관리자 화면, 데이터베이스 관리, 폼 검증 같은 기능은 필요할 때 확장 기능이나 직접 작성한 코드로 붙일 수 있습니다.

반대로 Django 같은 풀스택 프레임워크는 많은 기능을 기본으로 제공합니다. 예를 들어 관리자 페이지, 데이터베이스 모델, 사용자 인증 같은 기능이 처음부터 큰 틀 안에 들어 있습니다. 큰 서비스나 정해진 구조가 필요한 프로젝트에서는 이런 방식이 편합니다. 하지만 처음 웹 개발을 배우는 입장에서는 한 번에 배워야 할 개념이 많게 느껴질 수 있습니다.

Flask는 시작점이 작습니다. 그래서 "URL 하나를 만들고, 함수 하나를 연결하고, 문자열 하나를 응답한다"는 가장 기본적인 웹의 흐름을 직접 눈으로 확인하기 좋습니다.

브라우저와 서버는 어떻게 대화할까

웹 애플리케이션의 기본 흐름은 다음과 같습니다.

  1. 사용자가 브라우저 주소창에 URL을 입력합니다.

  2. 브라우저가 서버에 HTTP 요청을 보냅니다.

  3. 서버는 요청을 Flask 애플리케이션에 전달합니다.

  4. Flask는 URL에 맞는 파이썬 함수를 찾습니다.

  5. 그 함수가 실행되어 필요한 처리를 합니다.

  6. 함수가 문자열, HTML, JSON 같은 결과를 반환합니다.

  7. Flask는 그 결과를 HTTP 응답으로 만들어 브라우저에 돌려줍니다.

  8. 브라우저는 응답을 해석해 화면에 보여 줍니다.

HTTP는 브라우저와 서버가 정보를 주고받을 때 사용하는 약속입니다. HTTP 요청은 "무엇을 해 달라"는 메시지입니다. HTTP 응답은 "요청한 결과는 이것이다"라는 메시지입니다.2

URL은 요청의 목적지를 나타냅니다. 예를 들어 다음과 같은 URL이 있다고 해 봅시다.

/
/about
/posts
/posts/3

/는 보통 첫 화면을 뜻합니다. /about은 소개 페이지일 수 있습니다. /posts는 게시글 목록이고, /posts/3은 3번 게시글 상세 페이지일 수 있습니다. Flask는 이런 URL 경로를 보고 어떤 파이썬 함수를 실행할지 결정합니다.

이 연결 작업을 라우팅이라고 합니다. 라우팅은 "길 안내"라고 생각하면 쉽습니다. 사용자가 /about이라는 길로 들어오면 소개 페이지를 만드는 함수로 안내하고, /posts라는 길로 들어오면 게시글 목록을 만드는 함수로 안내합니다.

Flask의 핵심 기능 세 가지

Flask를 처음 배울 때는 모든 기능을 한꺼번에 보려고 하지 않아도 됩니다. 먼저 세 가지를 잡으면 됩니다.

첫째, 라우팅입니다. 라우팅은 URL과 파이썬 함수를 연결합니다. 사용자가 어떤 주소로 들어왔는지에 따라 실행할 함수가 달라집니다.

둘째, 요청 처리입니다. 요청에는 여러 정보가 들어올 수 있습니다. 예를 들어 검색어, 로그인 아이디, 게시글 제목, 체크박스 선택값 등이 있습니다. Flask는 이런 요청 데이터를 파이썬 코드에서 읽을 수 있게 해 줍니다. 나중에 폼을 다룰 때 "사용자가 입력한 값을 어떻게 받는가"를 배우게 됩니다.

셋째, 템플릿 렌더링입니다. 템플릿은 HTML 화면의 틀입니다. 렌더링은 그 틀에 실제 데이터를 넣어 최종 HTML을 만드는 과정입니다. 예를 들어 게시글 목록 페이지에는 같은 HTML 구조 안에 게시글 제목만 여러 개 바뀌어 들어갑니다. 템플릿을 사용하면 파이썬 코드 안에 긴 HTML을 억지로 섞지 않아도 됩니다.

이 세 가지를 요청과 응답 흐름에 넣어 보면 더 명확해집니다.

브라우저 요청
→ Flask가 URL 확인
→ 라우팅으로 함수 선택
→ 함수가 요청 데이터 처리
→ 필요하면 템플릿으로 HTML 생성
→ 브라우저에 응답 반환

Flask 문서에서도 라우팅, 요청 데이터 접근, 응답, 템플릿 렌더링은 핵심 주제로 다룹니다.1 앞으로 배우는 대부분의 내용은 이 흐름을 조금씩 넓혀 가는 과정입니다.

아주 작은 Flask 코드 미리 보기

아직 개발 환경을 만들지는 않았지만, Flask 코드가 어떤 모양인지 가볍게 살펴보겠습니다. 지금은 외우지 말고 "URL과 함수가 연결된다"는 점만 보세요.

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "안녕하세요, Flask!"

첫 줄은 Flask 도구를 가져옵니다. app = Flask(__name__)은 Flask 애플리케이션 객체를 만듭니다. 여기서 객체는 관련 기능을 담은 상자라고 생각하면 됩니다.

@app.route("/")는 / 주소로 요청이 들어오면 바로 아래의 home() 함수를 실행하라는 뜻입니다. 이처럼 함수 위에 붙어 특별한 의미를 더하는 문법을 데코레이터라고 합니다. 처음에는 "함수에 안내 표지판을 붙인다"고 이해하면 됩니다.

home() 함수는 문자열을 반환합니다. Flask는 이 문자열을 응답으로 만들어 브라우저에 보냅니다. 브라우저에는 안녕하세요, Flask!라는 문장이 보일 것입니다.

이 짧은 코드 안에도 웹 애플리케이션의 핵심이 들어 있습니다.

  • URL이 있습니다: /

  • URL과 연결된 함수가 있습니다: home()

  • 함수가 응답할 내용을 반환합니다: "안녕하세요, Flask!"

앞으로 우리는 이 코드를 조금씩 키워 갈 것입니다. 문자열만 돌려주던 함수가 HTML 페이지를 돌려주고, 사용자가 입력한 값을 읽고, 데이터베이스에 게시글을 저장하고, 필요하면 사용자 인증 같은 기능도 붙일 수 있게 됩니다.

Flask가 잘 어울리는 프로젝트

Flask는 작게 시작해서 필요한 만큼 키우기 좋은 도구입니다. 그래서 다음과 같은 프로젝트에 잘 어울립니다.

작은 웹사이트를 만들 때 좋습니다. 회사 소개 페이지, 개인 포트폴리오, 간단한 블로그처럼 페이지 수가 많지 않은 사이트를 빠르게 만들 수 있습니다.

관리자 페이지나 내부 도구에도 잘 맞습니다. 예를 들어 팀에서만 사용하는 재고 확인 페이지, 업무 기록 페이지, 간단한 통계 확인 화면을 만들 수 있습니다. 이런 도구는 복잡한 디자인보다 빠른 제작과 유지보수가 더 중요할 때가 많습니다.

REST API를 만들 때도 자주 사용됩니다. REST API는 화면 대신 데이터를 주고받는 웹 프로그램입니다. 예를 들어 모바일 앱이 서버에 "게시글 목록을 JSON 형식으로 보내 주세요"라고 요청하면, 서버가 HTML 화면이 아니라 데이터만 응답합니다. Flask는 이런 JSON 응답을 만들기에도 단순하고 편리합니다.

또한 아이디어를 빠르게 실험하는 프로토타입에도 좋습니다. 처음부터 거대한 구조를 만들지 않고, 작은 기능을 먼저 구현한 뒤 필요하면 구조를 정리해 나갈 수 있습니다.

물론 모든 상황에서 Flask가 정답은 아닙니다. 기본 제공 기능이 많은 프레임워크가 더 편한 경우도 있습니다. 하지만 웹의 기본 원리를 배우고, 파이썬 코드로 요청과 응답을 직접 연결해 보고, 필요한 기능을 하나씩 붙여 가는 학습에는 Flask가 매우 좋은 출발점입니다.

이 책에서 앞으로 만들 흐름

이 책은 Flask의 개념을 한 번에 설명하고 끝내지 않습니다. 작은 예제를 누적해서 하나의 웹 애플리케이션으로 발전시킬 것입니다.

먼저 개발 환경을 준비하고 첫 Flask 앱을 실행합니다. 그다음 URL과 함수를 연결하는 라우팅을 배우고, 브라우저가 보낸 요청을 읽고 응답을 만드는 방법을 익힙니다. 이후 HTML 템플릿으로 화면을 만들고, 폼 입력을 받아 검증합니다. 마지막에는 데이터베이스, 프로젝트 구조, 블루프린트, API, 오류 처리, 배포 준비까지 다룹니다.

중요한 기준은 하나입니다.

요청이 들어온다 → Flask가 처리한다 → 응답을 보낸다

이 흐름을 계속 떠올리면 새 개념이 나와도 위치를 잃지 않습니다. 라우팅은 요청이 어느 함수로 갈지 정하는 일입니다. 템플릿은 응답할 HTML을 만드는 일입니다. 데이터베이스는 처리 과정에서 데이터를 저장하고 읽는 장소입니다. 사용자 인증은 요청한 사용자가 누구인지 확인하는 과정입니다.

이제 큰 그림을 잡았습니다. 다음 장에서는 실제 개발 환경을 준비하고, 브라우저에서 첫 Flask 응답을 확인해 보겠습니다.

참고

1Welcome to Flask — Flask Documentation (3.1.x)

2Flask framework: URL path routing and HTTP requests

책 목록

초보자를 위한 파이썬 Flask 학습

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기