Django 1일차 TIL

김민지·2023년 8월 18일
0

Django

목록 보기
1/11

Django?

파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크이다.
백엔드, API, 자바스크립트 등 처음부터 시작하는 것보다 더 효율적으로 웹 앱을 빌드할 수 있다.
장점으로 Python과 유사하게 DB를 관리, 템플릿을 이용한 동적 페이지 작성 등이 있다.


무엇을 만들 것인가?

핀터레스트의 레이아웃을 바탕으로 한 웹서비스의 배포
글, 댓글, 게시판, 구독 & 구독 취소, 마이페이지 등의 기능과 반응형 디자인으로 구성할 것이다.


웹 서비스 구조

Front-End

JS, HTML, CSS

Back-End

MariaDB, Nginx, Django, Docker

  • Nginx
    서버 소프트웨어로 클라이언트에서 받은 요청을 처리해준다.
  • Docker
    애플리케이션을 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다.
    컨테이너 기반으로 한 오픈소스 가상화 플랫폼이다.

가상화?

서버 관리자 입장에서 CPU 사용률이 낮으면 활용도가 낮은 서버들의 리소스 낭비이다.
안정성을 높이며 리소스도 최대한 활용할 수 있는 방법으로 서버 가상화가 있다.
대표적으로 VM 등이 있다.

컨테이너?

가상화 기술 중 하나이다. 기존 OS를 가상화 시키는 것과 달리 컨테이너는 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 방식이다. 즉, 독립적으로 실행한다.

  • 모듈성
    전체 애플리케이션을 분해하지 않고도 업데이트 또는 복구를 위해 애플리케이션의 일부를 분해하는 기능에 중점을 둔다.

  • 계층 및 이미지 버전 제어
    각 Docker 이미지 파일은 일련의 계층으로 구성되며 이러한 계층들은 단일 이미지로 결합된다.
    계층은 이미지가 변경될 때 생성되고, 사용자가 실행 또는 복사와 같은 명령을 지정할 때마다 새로 계층이 생성된다.
    Docker는 이러한 계층을 재사용하여 새 컨테이너를 구축한다. 이때 속도와 크기 효율성이 향상된다.

  • 롤백
    계층화의 큰 장점인 롤백은 현재의 이미지 반복이 적절하지 않다면 이전 버전으로 되돌아가는 것을 말한다.

  • 신속한 배포
    각 프로세스에 대한 컨테이너를 생성하면 해당 프로세스를 새 애플리케이션과 빠르게 공유할 수 있다. 또한 컨테이너를 추가하거나 이동하기 위해 운영 체제를 부팅할 필요가 없으므로 배포 시간이 상당히 단축된다.
    (출처: https://www.redhat.com/ko/topics/containers/what-is-docker)

구축 과정

  1. 장고 내부에서 기능별로 나눈 여러가지 앱을 생성하고 엮어서 하나의 웹서비스 생성
  2. 장고가 하나의 컨테이너가 되고 도커에 적용
  3. 독립적으로 실행되는 4개의 컨테이너를 구축
  4. Vultr라는 가상 서버 대여제로 실제 서버를 대여해서 배포

개발환경 셋업

파이참에서 프로젝트 폴더를 만들고 django를 설치 후 가상 서버와 연결한다.


개발 패턴

MVT

Model View Template(Controller)
모델, 뷰, 템플릿으로 나뉘고 각자의 역할을 수행하며 프레임워크를 구축한다.

Model

django에서 DB와 통신을 하기위한 편리한 도구
DB의 언어를 사용하지 않고도 django에서 간편하게 DB를 관리할 수 있다.
➡️ 모델을 생성하기만 하면 장고에서 DB 저장, 수정, 삭제 등을 할 수 있다.
➡️ DB와의 상호작용!

View

뷰는 모델로부터 받은 데이터를 가져와 사용자에게 적절한 형태로 표시하거나, 사용자 입력을 받아 모델에 전달하여 처리한다.

사용자의 요청을 받으면 서버는 응답을 하기위한 적절한 절차를 거친다.
➡️ 사용자에게 보여지는 내용과 사용자의 입력을 처리하는 부분을 의미한다.
➡️ django에서 계산 대부분을 담당한다.

Template

프론트엔드(JS, HTML, CSS)와 밀접하게 관련되어 있다.

➡️ 정적인 HTML을 동적으로 만들어 주는 것이 템플릿이다.

개발 패턴 정리

  • Template
    UI와 밀접

  • View
    인증, 계산, 유효성 검증 등

  • Model
    DB와 쉬운 상호작용


🤓 새로 알게된 점

가상화를 사용한 이유와 컨테이너에 대해 알게 되었다. 컨테이너는 각각 독립되어 작동하므로 효율을 증대하였다.
django는 처음 다뤄보아서 새롭게 알게된 점이 많지만 그 중 인상 깊었던 것은 MVT이다. MVC와 크게 다르지 않지만 템플릿을 사용한다는 것 그리고 각각의 역할들과 동작 과정들을 알게 되었다.

profile
안녕하세요

1개의 댓글

comment-user-thumbnail
2023년 8월 18일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기