인프런 커뮤니티 질문&답변

최인설님의 프로필 이미지

작성한 질문수

파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편

Redis 서버 구동 및 접속

채팅서비스 배포시 구성

23.06.19 16:01 작성

·

378

0

 서비스 배포관련해서 질문이 있습니다.

 

#1. redis서버 설치

  • 보통 서비스 배포시 redis서버는 어떻게 구성하나요? 구글링을 통해서 봤을때는 많은 경우, ec2내에 redis를 설치하는 모습이 보여서요. 보통 그렇게 진행하는지?

 

#2. 가장 많이 사용하는 서버구성

  • 기본적으로 daphne가 받아서, http는 wsgi로, ws는 asgi로 보내는데. 어떤 곳에서는 Nginx로 daphne에게 ws만 넘기는게 좋다는 이야기도 있고 해서요. 보통 장고 channels로 개발시 서버는 어떤 구조가 많이 사용되나요?

 

#3. daphne가 https도 wsgi로 잘 보내는지?

application = ProtocolTypeRouter({
    "http": django_asgi_app,

현재 코드상에는 이렇게 해놓았는데, https처리하려면 추가적인 코드수정이 필요할까요?

 

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

2023. 06. 19. 16:28

안녕하세요. :-)

#1. redis 서버를 직접 설치하는 경우는 관리의 부담이 있겠고, 각 클라우드 벤더에서 제공하는 관리형 서비스는 관리의 부담이 적은 대신 비용의 부담이 있습니다. 서비스 상황에 맞춰 선택이 필요합니다.

#2. asgi 배포에서 요즘 gunicorn + uvicorn 조합을 많이 사용하고 성능도 좋습니다. 처음에는 gunicorn + uvicon 조합으로 하나로 처리해보시다가, websocket과 http 요청에 대해서 각기 다른 scale out 전략이 필요할 수 있으니 트래픽에 따라 websocket과 http 요청을 처리하는 프로세스를 따로 운영해보셔도 좋습니다. http 요청 부분만 따로 뽑아서 서비스하실 때에는, 다른 wsgi 구동방법과도 성능 비교를 해보세요.

#3. 웹 클라이언트 요청을 받는 Gateway (nginx 등)에서는 https로 요청을 받고, 그 뒷 단에서는 http로만 요청을 처리하는 경우가 많습니다. 그리고 ProtocolTypeRouter에서는 http 타입도 https 를 처리할 수 있습니다만, 추가로 daphne 구동 시에 인증서 까지 지정해주셔야 합니다.
공식문서 : https://github.com/django/daphne#running

화이팅입니다. :-)