https://ydontustudy.tistory.com/207
이 글에 이어서 CGI를 Servlet 과 비교 해본다.
해당 글을 요약하자면, CGI는 웹 서버와 외부 프로그램 간의 통신을 위한 표준 인터페이스이다. 각각의 요청마다 새로운 프로세스가 fork 되는데 이는 서버 리소스가 많이 들고, 동시처리가 어려운 치명적인 단점이 있다. 그래서 이를 개선한 Fast CGI 가 나와서 프로세스 재사용이 가능해졌다. 그러나 여전히 부족한 부분이 많아서 각 플랫폼마다 각자의 웹 서버 기술을 가지게 된다.
CGI는 동적인 웹 서비스를 할 수 있게 하는 새로운 페러다임을 소개한다. 그러나 단점이 존재하고 이를 보완하기 위해 Fast CGI라는게 나왔지만 일부만 해결된 정도이다. 그래서 각 플랫폼에서 CGI 의 아이디어를 딴 웹서버가 탄생한다. 이 중에서 CGI와 JAVA의 Servlet을 비교 해보겠다.
프로세스 vs 쓰레드
CGI의 가장 큰 단점은 매 요청마다 새로운 프로세스를 생성하는데 반면 Servlet은 멀티스레딩을 사용한다. 하나의 프로세스 내에서 여러 스레드를 생성하여 요청을 처리한다. 이는 CGI에 비해 훨씬 적은 시스템 리소스를 사용하며, 더 빠른 응답 시간을 제공한다.
생명주기 관리 측면
CGI 프로그램은 요청이 들어올 때마다 실행되고 종료된다. Servlet은 한 번 로드되면 메모리에 상주하며, 여러 요청을 처리할 수 있다. 이는 Servlet의 초기화 시간을 줄이고 성능을 향상시킨다.
이식성
Servlet은 자바의 "Write Once, Run Anywhere" 철학을 따른다. 따라서 다양한 플랫폼에서 실행될 수 있다. 반면 CGI는 플랫폼에 종속적일 수 있다. 자바의 Servlet은 JVM 위에서 돌아가기 때문에 플랫폼에 독립적이라 클라우드 환경에서도 쉽게 적용이 가능하다. 반면 CGI는 스크립트 작성방식, 프로세스 생성방식 등 플랫폼에 종속적이다.
'서버 > 네트워크' 카테고리의 다른 글
CGI (Common Gateway Interface) (7) | 2024.10.31 |
---|---|
비 연결형(connectionless) 서비스를 할 때 역다중화가 어떻게 처리되는가 (1) | 2021.03.30 |
역 다중화가 어떻게 작동하는가 (0) | 2021.03.30 |
Multiplexing/demultiplexing (네트워크 4주차) (0) | 2021.03.30 |
network of networks (0) | 2021.03.24 |