웹 개발 기술의 발전(정적 서버 ~ 스프링)

sith-call.dev·2022년 3월 24일
0

WEB

목록 보기
4/6

주의

100퍼센트 완벽하지 않을 수 있습니다. 개인적인 생각도 함께 들어있음을 염두해주세요.

웹 서버(정적 처리)

처음의 웹 서버는 정적 처리만을 해주었다.

예를 들면, 아파치와 같은 프로그램이 웹 서버의 역할을 하였다.

그러나 점점 웹이 발전해나가면서 동적 처리에 대한 수요가 생겼고 이로 인해 WAS 서버가 생긴다.

CGI

처음의 동적 처리 프로그램은 다양한 언어로 작성되었다. 그래서 이것에 대한 약속이 필요했는데 그것이 바로 CGI(Common Gateway Interface)이다.

그러나 이러한 방식에는 문제점이 있었는데, 동적 처리 프로그램이 프로세스 단위로 생성되고, 처리 이후에는 재사용 없이 소멸된다는 것이다. 이로 인해서 다양한 사용자가 접속하였을 시에는 처리하는데 문제가 발생한다.

Servlet & Servlet Container (WAS)

CGI 방식의 문제점을 해소하기 위해 나온 것이 Servlet이다. Servlet은 스레드 단위로 실행시킬 수 있다. 그래서 기존의 프로세스 단위로 사용했던 CGI 구현체의 단점을 해소시킨다.

그리고 이러한 서블릿은 서블릿 컨테이너가 관리한다. 유명한 서블릿 컨테이너 오픈소스로는 톰캣이 있다.

아래는 대략적인 서블릿과 서블릿 컨테이너의 모습이다.

서블릿 컨테이너 또한 자바 클래스이다.

이 클래스는 싱글톤 패턴으로 생성된 서블릿들을 관리한다. 서블릿 안에는 어떤 URL에 필요한 GET, POST 등의 메소드마다 처리해야할 로직들이 서술되어 있다.

그리고 요청이 서블릿 컨테이너로 들어오게 되면, 서블릿 컨테이너는 HTTP 메세지를 해석하고 이 요청마다 스레드를 할당하여 그 스레드가 해당 요청을 해결하게 한다. 그리고 그 요청에 필요한 로직은 서블릿의 service 메소드를 호출함으로써 사용한다.

Spring Framework

스프링은 서블릿 컨테이너가 진화한 형태이다.

따라서 위의 서블릿 컨테이너와는 구조가 다르지만 서블릿의 개념을 계속하여 사용한다.

이는 디스패처 서블릿에서 확인할 수 있다.

profile
lim (time -> inf) life(time) = LOVE

0개의 댓글