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

pplkjh2님의 프로필 이미지
pplkjh2

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

conda-forge postgresql 과 multithreading

작성

·

18

0

강의에서 설명하지 않으신 내용인데요 가능한지 궁금하여 여쭈어봅니다.

  1. Conda-forge 내에 postgresql package가 있습니다. (Postgresql | Anaconda.org)
    물론 서비스 시에는 database 서버를 따로 두는게 좋다는건 수업 때 설명으로 이해하였습니다. 그러나 실 서비스 시 postgresql를 사용할 것이라면 개발 시에 sqlite 대신 위 package를 사용하는게 만약 더 적합할까요?

  2. 배포 과정 설명 시에 로드 밸런서가 작업을 서버에 할당해준다고 설명해 주셨는데, 보아하니 각 작업을 싱글 쓰레드로 할당하는 것 처럼 보였습니다. 장고의 경우 View 단에 multithread로 작업할 내용이 있다면, 어떻게 처리해야 하나요?

답변 1

0

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

안녕하세요.

개발 시에도 실제 서비스에서 사용할 데이터베이스 엔진을 사용하신다면, PostgreSQL에서만 제공하는 기능도 개발 시에 활용하실 수 있으니 편리한 점이 있습니다.

데이터베이스는 OS 팩키지 매니저에서 지원하는 것으로 설치하셔도 좋고, supabase나 AWS 등의 PostgreSQL 서비스를 활용하시는 것도 좋습니다.
https://supabase.com/

supabase는 PostgreSQL 기반의 서비스이며, 무료 플랜도 있고, 장고에서 직접 database 연결도 할 수 있습니다.

그리고, 길고 계산량이 많은 작업의 경우 Python에서는 View 단에서 직접 처리하기 보다, Celery 등의 별도의 Worker를 통해 처리를 많이 하는 편입니다.
https://docs.celeryq.dev/en/latest/django/first-steps-with-django.html

살펴보시고 댓글 남겨주세요. :-)

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

보충하자면, 파이썬에서는 GIL (global interpreter lock)으로 인해, CPU 중심의 계산의 경우 멀티 쓰레드는 효율이 매우 낮습니다.

GIL에 대해서는 아래 발표를 보시면 이해하시는 데에 도움이 되실 것입니다.

https://youtu.be/hj8BnSAalEs?si=792IRk-0OLf5tjRG

대개 별도의 프로세스를 통해 수행하구요. Celery 등의 worker를 활용하시면, 다수의 프로세스, 다수의 머신 Pol에서 탄력적으로 작업을 수행할 수 있어 편리합니다.

pplkjh2님의 프로필 이미지
pplkjh2

작성한 질문수

질문하기