작성
·
18
0
강의에서 설명하지 않으신 내용인데요 가능한지 궁금하여 여쭈어봅니다.
Conda-forge 내에 postgresql package가 있습니다. (Postgresql | Anaconda.org)
물론 서비스 시에는 database 서버를 따로 두는게 좋다는건 수업 때 설명으로 이해하였습니다. 그러나 실 서비스 시 postgresql를 사용할 것이라면 개발 시에 sqlite 대신 위 package를 사용하는게 만약 더 적합할까요?
배포 과정 설명 시에 로드 밸런서가 작업을 서버에 할당해준다고 설명해 주셨는데, 보아하니 각 작업을 싱글 쓰레드로 할당하는 것 처럼 보였습니다. 장고의 경우 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에서 탄력적으로 작업을 수행할 수 있어 편리합니다.