프로젝트에서 사용하는 워커가 도커로 관리되고 있지만 외부 라이브러리를 사용하기 위해서 PHP를 혼용해서 사용하고 있습니다. 문제는 해당 라이브러리의 버전이 주기적으로 자주 업데이트되는데 빌드 후에 모든 워커에 배포까지 약 3시간 정도 걸립니다. (인터넷 속도가 느린 환경이라 어쩔수 없는 경우입니다. 고치는것도 불가능합니다.ㅠㅠ) 위의 이유로 최대...
회사에서 multi-thread 기반인 코드가 있었습니다. multiprocessing 모듈로 바꾸는 과정 및 경험 그리고 결과를 공유하는 포스팅입니다. 왜 multiprocessing을 사용하나요? Python에서 multi-thread를 지원을 하지만, GIL라는 거대한 제약 덕분에 생각하는 것 만큼의 성능을 내지 못하는 경우가 있습니다. G...
종종 파이썬으로 코딩을 하게되면 무의식적으로 print() 문을 사용하는 경우가 있습니다. 개인적인 사이드 프로젝트에서는 크게 문제되지 않지만 회사, 팀 프로젝트 단위에서는 필요한 데이터를 print()문 하나에 의존해 남기는 것은 매우 위험하다고 생각합니다. print()는 단지 stdout을 통해 모니터에 출력되기만 하는것이며 다음에 필요할 때...
회사에서 많은 양의 API를 처리해야하는 서버를 구축해야하는 경우가 생겼습니다. 프로젝트 셋업에 있어 빠른 처리를 위해 Sanic 프레임워크를 사용하기로 했습니다. 다만, celery를 호출해야하는 경우가 생겨 asyncio와 호환성을 찾다가 결국 발견하지 못해 asyncio를 이용한 해결방안을 포스팅합니다. 찾아본 방법 celery 자체에...
파이썬을 꽤나 오래 사용햇지만, 파이썬이 VM 위에서 돌아가는 언어라는걸 올해 초 알게 되었습니다. 회사, 우선순위 높은 공부 등의 이유로 미루어 왔던 내용을 정리해서 올려봅니다. 해당 글은 500 Lines or Less | A Python Interpreter Written in Python을 번역한 글입니다. Interperter란 in...
해당글은 What Is the Python Global Interpreter Lock (GIL)? – Real Python을 번역 및 정리한 포스팅입니다. GIL이란 Global Interpreter Lock의 약자입니다. 한 쓰레드만을 사용해 파이썬 인터프리터를 제어하게 하는 mutex(or lock) 입니다. 어느 시점에서든 하나의 스레드 만 ...
해당 글은 celery를 이용하여 코드를 잘 작성하는것에 비중을 둔 글이 아니라 간단한 celery 소개 및 특징과 broker에 대해 공부하기 위해 작성한 글입니다. Celery는 python 동시성 프로그래밍에서 가장 많이 사용되는 방법 중 하나입니다. 몇 가지 설정만 한다면 간단하게 python 코드를 실행하는 worker를 만들 ...
python - How does asyncio actually work? - Stack Overflow 해당글을 번역한 글입니다. 파이썬에서 asnyc는 coroutine을 기반으로 동작합니다. coroutine의 동작을 이해하기 전 generator의 개념을 알고가면 이해하기 쉽기 때문에 먼저 generator 개념 부터 설명하겠습니다. Gen...
Docker RabibtMQ Clustering 하기 왜 스케일 업 대신 클러스터링? 회사에서 rabbitmq를 사용하는데 해당 작업들이 매우 느려 rabbitmq의 메모리가 부족한 현상이 가끔 발견되었습니다. 따라서 스케일링과 클러스터링을 고려하게 되었습니다. 클러스터링을 하게된 4가지 이유가 아래와 같습니다. 무중단 스케일링이 힘들다. ...