개발자 블로그

[django] 오늘의 공부 정리 0625 본문

Django/오늘의 공부

[django] 오늘의 공부 정리 0625

hayongwoon 2022. 6. 25. 19:55

배포 - docker / nginx / uwsgi

docker

  • docker란?
    • windows에서 virtualbox를 설치해 가상화 환경을 구축하는 것처럼, docker를 사용해 격리 된 공간에서 서비스나 os를 가상화 하여 띄울 수 있다.
    • docker의 격리 된 공간에서 동작하는 것을 컨테이너라 한다.
    • virtual machine과 같이 가상화를 하는 것은 비슷하지만, 구조적으로는 차이가 있다.
    • docker-compose와 같은 container management 프로그램을 사용해 서비스 환경을 쉽게 구축 할 수 있다.

docker container 구조(좌)와 windows virtual machine의 구조(우)

  • 왜 docker를 사용하는가?
    1. docker-compose를 활용하면 원하는 아키텍처를 빠르게 구성 할 수 있다.
    2. 서비스가 host에서 동작하는 것이 아닌, container에서 동작하기 때문에 의존성과 같은 문제가 생길 가능성이 적어진다.
    3. k8s와 같은 오케스트레이션 시스템과 함께 사용하면 더 효율적으로 관리 할 수 있다.

 

nginx

  • nginx란?
    • 클라이언트의 request 요청을 처리해주는 web server
    • reverse proxy, 로드밸런싱, 캐싱 등의 기능을 지원한다.
    • client의 요청을 nginx가 받은 후 service로 데이터를 넘겨주는 방식이다.

  • 왜 nginx를 사용하는가?
    • 로드밸런싱을 활용해 트래픽을 분산 할 수 있다.
      • active / stanby로 구성할 경우 좀 더 안정적으로 배포 환경을 구성 할 수 있다.
    • SSL(https) 기능을 사용해 데이터를 안전하게 전달 할 수 있다.
    • reverse proxy 기능으로 client에서 서버에 직접적으로 접근하는 것을 막아준다.
    • 콘텐츠를 캐싱하여 동일한 요청에 대해 더 빠른 속도로 처리 할 수 있게 해준다.

 

uwsgi

  • uwsgi란?
    • wsgi(web server gateway interface)는 python으로 작성 된 웹 응용 프로그램 간의 표준 인터페이스이다.
    • 기본적으로 django에서 runserver는 배포에 사용해서는 안된다.
      • django에서도 공식적으로 runserver는 개발용이다 라고 정의했기 때문(참고)
    • wsgi 프로그램은 대표적으로 gunicorn과 uwsgi가 존재한다.
    • uwsgi를 사용해 멀티스레드 기능을 사용 할 수 있다.
    • nginx와 호환성이 좋다.
    • 자매품 - gunicorn
  • 왜 uwsgi를 사용하는가?
    • gunicorn 써도 됨. 두 프로그램의 특성을 보고 선택
    • 대량의 리퀘스트를 처리 할 때 성능과 안정성이 모두 향상됨(참고)

 

최종 구성도

'Django > 오늘의 공부' 카테고리의 다른 글

Timezone Setting  (0) 2022.07.30
[django] 오늘의 공부 정리 0620  (0) 2022.06.20
[django] 오늘의 공부 정리 0616  (0) 2022.06.15
[django] 오늘의 공부 정리 0615  (0) 2022.06.15
[django] 오늘의 공부 정리 0613  (0) 2022.06.13