안녕하세요. 까치입니다.
최근 django 애플리케이션을 구축하던 중 WSGI(Web Server Gateway Interface) 서버로 gunicorn을 사용하게 되었는데 갑자기 문득..
--bind 0:8000 vs --bind unix:/tmp/gunicorn.sock
뭔 차이지..?? 가 궁금해져서 내용을 정리하게 되었습니다.
아는 내용이라면 넘어가셔도 무방합니다.
TCP
UDP
Network socket
Unix socket
UNIX 소켓 --bind unix:/tmp/gunicorn.sock
은 동일한 시스템에서 프로세스 간의 양방향 데이터 통신을 허용하는 메커니즘입니다.
네트워크 소켓 --bind 0:8000
은 네트워크(ex. TCP/IP)를 통해 프로세스 간의 통신을 허용하는 메커니즘입니다.
UNIX 소켓은 컴퓨터가 동일한 시스템에서 실행되고 있음을 알고 있으므로 라우팅과 같은 일부 검사 및 작업을 피하고 훨씬 가볍게 통신할 수 있습니다.
따라서 리눅스 시스템상의 프로그램에서 프로세스 간 로컬 통신이 필요할 경우 네트워크 소켓보다 유닉스 소켓을 사용하는 것이 속도 등에 유리한 이점을 가질 수 있습니다.
진짜 딱 제가 궁금한 내용이었는데 잘 정리해주셔서 감사해요!