ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django 요청처리
    Python/Django 2022. 9. 28. 09:04

    클라이언트는 다수 있을 수 있다. client에서 서버로 요청을 보냈을 때, 
    그 요청을 처음 받는 위치에 흔히 Load Balancer 소프트웨어를 설치한다
    Load Balancer 소프트웨어는 AWS를 쓸 경우 API GATEWAY, 
    또는 경량화된 ngix 가 있다 
    Load Balancer  앞단에서 요청을 받아서, Load Balacing을 한다 
    특정 서버로만 부하를 전달하는 것이 아니라, 여러 서버에 고루 분산 시켜준다 

    Load Balancer 쓰는 이유는 예전에는 서버 1대라도 웹서비스의 모든 트래픽을 
    감당했지만, 요즘에는 서버의 수를 탄력적으로 줄이거나 늘려서 비용을 최적화 
    하나의 요청을 Load Balancer가 분산해서 특정 서버로 보냄 
    빨간색 박스가 VM(django, spring). 
    이 서버 프로그램이 요청을 받으면 어떤 루틴에서 처리를 할 것인지를 
    요청 URL를 보고 요청을 분기한다
    Django에서는 웹요청을 처리하는 주체를 뷰(VIEW)라고 하고 
    Spring에서는 Controller라고 한다 
    이렇나 뷰는 요청 처리 함수에 따라 여러개가 있다
    만약에 요청 URL를 처리 할 수 없다면, 404 Page not found error를 낸다 

    한 VM내에서 실체로 요청을 처리하는 프로세스가 있고, 별도고 Worker 프로세스가 있을 수 있따 
    다른 VM에 있을 수도 있따 
    Worker프로세스는 Worker이름 처럼 뒷단(백그라운)에서 어떤 작업을 수행

    ex) 
    View는 user에게 즉시 "이메일 발송 요청을 했습니당" 하고 메시지를 보내고 
    실제 이메일 발송은 별도의 Worker 프로세스를 통해 수행
    이런한 Worker프로세를 운영하는 것은 Celery 라이브러리 통해 
    또는 django channels 라이브러리릍 통해 처리 


    view 함수 내에서는 db서버/파일서버/캐시서버 쪽 처리를 할 수 있고 
    뷰에서는 한 db만 바라보는 것이 아니라 여러 DB를 볼 수 있다 
    파일서버와 캐시서버도 마찬가지

    ======================================
    VIEW함수를 통한 클라이언트 요청 처리 

    django는 뷰함수를 통해서 client로부터 요청을 처리하고 응답한다 
    대부분 문자열 응답이다 (HTML안의 글자도 문자열이다.단지 HTML 포맷일뿐)

    client와 server간의 데이터 통신을 할 때에는 서로 객체를 
    JSON 혹은 XML 포맷의 문자열로 변환을 해서 전송
    받은 측에서는 JSON/XML 문자열을 다시 객체로 변환하여, 프로그램에 활용 

    ex) 
    post_list = [ 
    {"title":"xxx}, 
    {}

    content = json.dumps(post_list) 

    ==> post_list 리스트 객체를 json.dumps를 통해 문자열로 변환하고 이를 응답

    ==================================
    cf. 스프링의 주된 역할은 IoC컨테이너 

    IoC, DI 이다 

    모든 웹프레임워크는 객체지향 방식으로 접근하기 때문에 클래스가 필수 
    => 클래스가 있다는 것은 인스턴스를 생성하고 관리하는 Life cycle이 있다 
    => 인스턴스으 ㅣ생성/소멸/지정을 우리가 직접 하는 것은 아니고 framework가 대신한다 
    => 각 인스턴스의 생명주기를 우리가 관리하는 것이아니라, 대신 관리해주는 주체를 IoC컨테이너
    라고 부른당

    장고도 클래스를 쓰지만은, 장고의 핵심은 OOP로 접근하지 X. IoC와 DI개념이 없음
    Python 기본 문법만 아셔도 바로 개발을 시작할 수 있다 

    ==================================

    Django에서 모든 웹 요청을 처리하는 주체는 Callable Object 입니다 
    Callable Object은 함수를 포함하는 더 큰 개념
    웹 요청을 함수로 구현하여 처리하기에 구현이 단순해지고 확장이 용이해짐


    ===========================================
    뷰!

    장고에서 클라이언트로부터 요청을 직접적으로 처리하는 주체를 뷰(View)라고 한다 
    함수로 구현 
    뷰를 작성하는 것은 함수를 작성하는 것만큼 단순하고 직관적이어야 한다 

    'Python > Django' 카테고리의 다른 글

    템플릿(Template) & 실습  (0) 2022.10.07
    URL 설계  (1) 2022.10.07
    Django Model & View 만들기(실습)  (0) 2022.09.28
    Python 문법 엿보기  (0) 2022.09.26
    Django시작하기  (1) 2022.09.21

    댓글

Designed by Tistory.