Sign inSign up

ysw0421/django

By ysw0421

•Updated almost 8 years ago

Image
0

843

ysw0421/django repository overview

⁠uWSGI & NginX

WSGI는 레임워크의 웹서버로, route web에서는 표준 인터페이스로 개발되었다. WSGI Server는 많은 request들을 다룰 수 있도록 설계되었다. Framework들은 스스로 수천개의 request들을 실행하고 최고의 방법으로 처리할 수 있도록 설계되어있지 않다. WSGI는 Python Web 개발 속도를 올려준다. WSGI는 너가 Stack Components를 유연하게 바꿀 수 있도록 도와준다.

uWSGI는 Hosting server에서 Full stack 개발이 가능하도록 하기 위해 개발되었다. API와 일관된 Configuration Setup은 다양한 언어와 프로토콜, 프로세스 매니저, 프록시 등을 다양하게 다룰 수 있도록 개발되었다.

Nginx를 역프록시로 사용할 것이기 때문에 더 좋은 옵션이 된다. 모든 모듈들이 하나의 서버에서 동작하기 때문에 네트워크 포트를 사용하는 대신 더욱 안전하고 성능좋은 유닉스소켓을 사용할 수 있다. 유닉스소켓은 HTTP 를 사용하지 않고, 다른 서버와 통신하기 위해 디자인된 바이너리 프로토콜인 uWSGI의 uwsgi 프로토콜을 사용한다. NginX는 기본적으로 uwsgi 프로토콜을 사용할수 있기 때문에 유닉스소켓을 사용하는 것이 가장 좋은 선택이라고 볼 수 있다. 또한 웹서버가 쓰기권한을 가질수 있도록 소켓의 권한을 변경하여야 한다.

⁠Django

CRUD(Creat, Read, Update, Delete), 인스타 그램은 CRUD이다. 사진을 Update, Read하고 댓글을 Create하거나 Delete한다. 블로그, 인스타그램, 유튜브 같이 CRUD를 위한 최선의 옵션이다. 이미 유저, 인증, 뷰, 템플릿, URL, Static Files 등 최적화되어있다. 장고는 거대한 상자와 같아서 안을 뒤지면서 필요없는건 버리고, 필요한 것만 남겨놓고 작업을 해야함.

  1. MVC패턴 기반의 MVT(Model-View-Controller를 기반한 프레임워크)
  2. ORM(Object-Relational Mapping) 기능 지원
  3. 쉬운 데이터베이스관리를 위해 프로젝트를 생성하며 관리자 기능 제공
  4. 쉬운 URL파싱 기능 지원

웹을 만들때 생각해야할 것.

  • 모델 : 데이터의 흐름을 생각 모듈 : 용도 별로 나누어라 프로젝트 레이아웃 : 디렉토리 트리
  • User 모델 확장은 OneToOne
  • 소셜 로그인은 Django-allauth
  • 반복 작업 CBV
  • DB 최적화는 Select_related, Prefetch_related
  • Cache는 컨트롤이 중요
  • Admin은 django 핵심 기능

⁠Elasticsearch

개발한 분산 검색엔진입니다. 설치와 서버 확장이 매우 편리하기 때문에 개발하고 있는 시스템에 검색 기능이 필요하다면 elasticsearch를 적용하는 것을 권장하고 싶습니다. 분산 시스템이기 때문에 검색 대상 용량이 증가했을 때 대응하기가 무척 수월하다는 것이 장점입니다.

⁠Celery

Celery는 Python으로 작성된 비동기 작업 큐(Asynchronous task queue/job queue)입니다. 앞서 소개한 작업(Task)를 브로커(Broker, Redis를 사용)를 통해 전달하면 하나 이상의 워커(Worker)가 이를 처리하는 구조입니다. 포인트 적립-공유에 따른 분배처리, 포스팅 기능, 페이스북/트위터 공유등의 비동기 처리가 필요한 작업을 Celery에 위임하여 처리하고 있습니다.

⁠Docker install


  curl -fsSL https://get.docker.com/ | sudo sh
  sudo usermod -aG docker $USER
  sudo reboot

⁠Docker Container


  git clone https://github.com/ysw0421/Django
  docker build -t webapp .
  docker run -d -p 3000:80 webapp
  
  # Check your web localhost:3000

https://github.com/dockerfiles/django-uwsgi-nginx⁠

Tag summary

Content type

Image

Digest

Size

260.9 MB

Last updated

almost 8 years ago

docker pull ysw0421/django