Gunicorn을 사용해서 3-tier architecture을 구축하던 중, 네트워크 소켓(포트 방식) 방식과 유닉스 소켓을 사용하는 방식이 있다는 걸 알게 되었다.
포트 방식보다 유닉스 소켓을 사용하면 더 빠르고 효율적이라고 해서 유닉스 소켓 방식으로 스크립트를 짰는데...
3-tier 구축은 WEB과 WAS 서버간의 통신이 필요하기 때문에 네트워크 소켓 방식을 사용해야 했다.
두 방식의 차이점에 대해 알아본 후 왜 네트워크 소켓 방식을 사용해야 하는지 알아보자.
Network Socket vs Unix Socket
Network Socket (Port)
- 네트워크 상에서 처리되는 커뮤니케이션
- TCP/UDP 프로토콜을 사용해서 통신한다.
Unix Socket
- IPC (Inter Process Communication) Socket
- 머신 내부의 프로세스들끼리 통신하기 위해 사용되는 양방향 통신 소켓
결론
Unix socket 방식은 한 서버 내에서 프로세스끼리 통신할 때 사용되는 소켓이다.
IPC 설비는 프로세스 간에 통신이 필요할때 사용하게 되는데, Unix socket이 이 종류의 하나인 것이다.
따라서 한 서버에 애플리케이션 전체를 배포할 때는 Unix socket이 빠를 수 있지만, 3-tier로 구축해 각각 서버를 따로 두는 경우에는 네트워크를 거쳐야 하기 때문에 Port 방식을 사용해야하는 것이다.
스크립트 수정
기존에 작성한 스크립트(Unix socket)은 다음과 같다.
ExecStart의 bind 방식이 유닉스 소켓으로 되어있는 것을 볼 수 있다.
ExecStart의 bind 방식을 포트로 수정하였다.
service를 재시작해주고 상태를 확인해보면 포트방식으로 바뀌어 제대로 작동하는 것을 확인할 수 있다.
'네트워크' 카테고리의 다른 글
Ubuntu에 NFS 구성하기 (0) | 2023.08.17 |
---|---|
TCP 프로토콜의 기능과 특징 (0) | 2023.04.22 |
IP주소의 종류와 할당 방법 및 NAT (0) | 2023.04.22 |
IP주소와 서브넷 마스크 (0) | 2023.04.22 |
[OSI 7-Layer] 응용 계층 (0) | 2023.04.22 |