클라이언트와 서버
- 클라이언트 : 서비스를 요청하는 주체 (웹 사용자의 인터넷이 연결된 장치, 웹 브라우저)
- 서버 : 클라이언트의 요청에 응답하는 주체 (웹 페이지, 앱을 저장하는 컴퓨터)
우리가 웹 페이지를 보게 되는 과정
- 웹 브라우저(클라이언트)에서 'google.com' 입력
- 브라우저는 인터넷에 연결된 전세계 어딘가에 있는 구글 컴퓨터(서버)에게 'Google 홈페이지.html' 파일을 달라고 요청
- 요청을 받은 구글 컴퓨터는 데이터베이스에서 'Google 홈페이지.html' 파일을 찾아 응답
- 전달받은 'Google 홈페이지.html' 파일을 사람이 볼 수 있도록 웹 브라우저가 해석해주면서 사용자는 구글의 메인 페이지를 보게 됨
웹 개발에서의 프론트엔드와 백엔드
- 프론트엔드 (Frontend)
: 사용자 인터페이스(UI)를 구성하고, 사용자가 애플리케이션과 상호작용할 수 있도록 함
(HTML, CSS, JavaScript, 프론트엔드 프레임워크 등)
- 백엔드 (Backend)
: 서버 측에서 동작하며, 클라이언트의 요청에 대한 처리와 데이터베이스와의 상호작용 등을 담당
(서버 언어 python, java 등 및 백엔드 프레임워크, 데이터베이스, API, 보안 등)
오늘의 목표 >>
Django를 통해 서버를 만들어보자(구현해보자)!
Framework (프레임워크)
웹 프레임워크
: 웹 애플리케이션을 빠르게 개발할 수 있도록 도와주는 도구 (개발에 필요한 기본 구조, 규칙, 라이브러리 등을 제공)
Django
: 파이썬 기반의 대표적인 웹 프레임워크
- 다양성 2. 확장성 3. 보안 4. 커뮤니티 지원
가상 환경
: python 애플리케이션과 그에 따른 패키지들을 격리하여 관리할 수 있는 독립적인 실행 환경
Django Design Pattern
디자인 패턴
: 소프트웨어 설계에서 발생하는 문제를 해결하기 위한 일반적인 해결책 (공통적인 문제를 해결하는 데 쓰이는 형식화된 관행) => "애플리케이션 구조는 이렇게 구성하자" 라는 관행
MVC 디자인 패턴 (model, view, controller)
: 애플리케이션을 구조화하는 대표적인 패턴 ("데이터" & "사용자 인터페이스" & "비즈니스 로직"을 분리) => 시각적요소와 뒤에서 실행되는 로직을 서로 영향 없이, 독립적이고 쉽게 유지 보수할 수 있는 애플리케이션을 만들기 위해
- MVC 패턴
모델(model) : 데이터, 데이터와 관련된 비즈니스 로직
뷰(view) : 사용자 인터페이스 UI, 시각적인 부분
컨트롤러(controller) : 사용자의 입력 처리 부분
MTV 디자인 배턴 (model, template, view)
: Django에서 애플리케이션을 구조화하는 패턴 (기존 MVC 패턴과 동일하나 단순히 명칭을 다르게 정의한 것)
view => template / controller => view (단순한 명칭 변경)
Project & App
Django project
: 애플리케이션의 집합 (DB 설정, URL 연결, 전체 앱 설정 등을 처리)
Django application
: 독립적으로 작동하는 기능 단위 모듈 (각자 특정한 기능을 담당하며 다른 앱들과 함께 하나의 프로젝트를 구성)
만약 온라인 커뮤니티 카페를 만든다면?
프로젝트 => 카페 (전체 설정 담당)
앱 => 게시글, 댓글, 회원 관리 등 (DB, 인증, 화면)
앱 사용을 위한 순서
- 앱 생성
- 앱 등록
프로젝트 구조
- setting.py : 프로젝트의 모든 설정을 관리
- urls.py : 요청 들어오는 URL에 따라 이에 해당하는 적절한 views를 연결
- init.py : 해당 폴더를 패키지로 인식하도록 설정하는 파일
- asgi.py : 비동기실 웹 서버와의 연결 관련 설정
- wsgi.py : 웹 서버와의 연결 관련 설정
- manage.py : Django 프로젝트와 다양한 방법으로 상호작용하는 커맨드라인 유틸리티
앱 구조
- admin.py : 관리자용 페이지 설정
- models.py : DB와 관련된 Model을 정의, MTV 패턴의 M
- views.py : HTTP 요청을 처리하고 해당 요청에 대한 응답을 반환, MTV 패턴의 V
- apps.py : 앱의 정보가 작성된 곳
- tests.py : 프로젝트 테스트 코드를 작성하는 곳
요청과 응답
순서 잘 기억하기!
