개발63 [Web Server 이해하기] CGI / WAS / WSGI 웹서버의 기본적인 역할은 정적(static)인 파일을 그대로 보내주는 것입니다. 그 말인즉슨, 뭔가 별도의 처리를 거치지 않고 존재하는 파일을 그대로 보내주는 역할을 합니다. CGI(Common Gateway Interface) 웹서버에서 어플리케이션을 작동시키기 위한 인터페이스로서, 정적인 웹서버를 동적으로 기능하게 하기 위해서 등장하였습니다. 기존에는 외부프로그램이 필요한 리퀘스트가 들어오면 CGI를 통해 따로 프로세스를 fork하고 외부프로그램을 실행시켜 처리하였지만, 요즘에는 웹서버에 인터프리터를 내장시켜 내부적으로 처리한다. CGI Programming이란, Perl, C/C++를 사용하여 웹서버가 실행할 수 있는 프로그램을 작성하는 것이다. WAS(Web Application Server) 웹.. 2020. 3. 18. [Web Server 이해하기] Gunicorn과 Nginx 역할분배 Ningx는 request가 가장 먼저 도착하는 곳이다. Web application으로 보내져야만 하는 request들만을 보낸다.(필터링같은 느낌) Gunicorn은 request를 웹 프레임워크가 이해하고 처리할 수 있는 형식으로 변환시켜 보낸다. Nginx Nginx는 Web server이자 Reverse Proxy이다. 아래는 Nginx가 잘하는 기능들 예시이다: - domain name routing - 정적 파일 보내기 - 한번에 들어오는 많은 양의 request를 처리하기 - 느린 client들 처리하기 - 동적처리가 필요한 request들을 Gunicorn으로 보내기 - SSL 끝내기 Nginx는 다음과 같은 일들은 할 수 없다: - Python web application 실행하기 - .. 2020. 3. 18. [Web Server 이해하기] Nginx Configuration 설정법 1. Upstream Block Upstream은 서버들의 묶음이다. upstream backend { server 111.111.111:8000 weight=5; server 111.111.112:8000; server 111.111.113:8000; } 위의 예시에서는 3개의 서버간에 load balancing이 되며 weight를 명시하게 되면 해당 서버에 더 많은 load를 배분할 수 있다. 위의 예시에서는 111.111.111서버가 다른 2서버에 비해 5배 많은 load를 할당받는다. configuration 파일에서 server블럭에서는 ip주소로 호출하는 것이 아니라 upstream의 이름으로 호출한다. (예시에서 backend) 2. Server Block Server Block은 하나의 .. 2020. 3. 18. [Docker 이해하기] Docker Configuration 설정법 1. links vs depends_on: links와 depends_on 둘 다 dependency와 container의 생성순서를 정해준다. 하지만 links는 위의 기능과 link된 container의 이름을 내부코드에서 사용하여 접근할 수 있다. 예시: web: image: example/my_web_app:latest links: - db - cache db: image: postgres:latest cache: image: redis:latest 위의 예시에서 links를 사용한다면 web 내부에서 db:5432 로 접근할 수 있지만 depends_on을 사용한다면 접근할 수 없다. https://stackoverflow.com/questions/35832095/difference-betwee.. 2020. 3. 18. [Django 공식문서 번역] REST Framework - Viewset and Router Viewset을 사용하면 관련된 view들을 하나의 클래스로 묶을 수 있다. class UserViewSet(viewsets.ViewSet): """ A simple ViewSet for listing or retrieving users. """ def list(self, request): queryset = User.objects.all() serializer = UserSerializer(queryset, many=True) return Response(serializer.data) def retrieve(self, request, pk=None): queryset = User.objects.all() user = get_object_or_404(queryset, pk=pk) serializer = .. 2020. 3. 18. [Django REST Framework] create() vs perform_create() Django REST Framework의 ModelViewSet과 create() 관련 찾아보고 공부한 내용을 정리해보려고 한다. 기본적으로 ModelViewSet은 GenericAPIView라는 클래스를 상속받기 때문에 .list(), .create() .list(), .create() 등을 기본으로 내장하고 있다. 따라서 이 중에서 기본 내장되어 있는 메소드 중 동작을 변경하고 싶은 것들만 overriding해서 수정하면 된다. 그리고 ModelViewSet은 GenericAPIView를 상속받고 있기 때문에 최소한 queryset와 serializer_class는 세팅해주어야 한다. from rest_framework import status from rest_framework.response im.. 2020. 3. 18. 이전 1 2 3 4 5 6 7 8 ··· 11 다음