Spring MVC와 Servlet
Computer Science/Spring Boot
서버에서 수행해야 하는 일서버는 사용자의 HTTP 요청을 받고 해당 요청에 따른 응답을 내려준다. 하지만 우리가 코드를 작성할 땐 HTTP 요청을 받기 위한 TCP소켓을 열고, HTTP 메세지를 파싱하고 응답 메세지를 작성하고 하는 번거로운 일을 하지 않고 "어떤 요청에서는 어떤 로직이 수행된다"라는 코드만 작성한다.어떻게 이렇게 간단하게 할 수 있을까?그 이유는 해당 작업들을 WAS가 수행해주기 때문이다. 흔히 사용하는 Tomcat에서는 서블릿 컨테이너를 통해 서블릿 스펙을 지원한다. Tomcat이 아니더라도 다른 이전 포스팅에서 말했던 다른 서블릿 컨테이너들은 모두 서블릿 스펙을 지원한다. 그럼 서블릿 스펙을 지원하지 않는 다른 WAS들은 HTTP 파싱부터 다 해야하나요? 라는 생각이 들 수도 있지만..
서버란?
Computer Science/Server
우리가 말하는 백엔드(API) 서버란 무엇인가?흔히 백엔드 서버라고 자주 얘기하지만 무엇을 두고 백엔드 서버라고 말하는지 정의해보자. 그동안은 API만 개발하다보니 이런 정의가 헷갈리기 시작해졌다.내가 생각하기에 백엔드(API) 서버란 애플리케이션이 HTTP 요청을 수신하고 응답할 수 있는 실행 환경을 말하는 것 같다. 그 안에 우리가 구현한 api와 비즈니스 로직이 존재한다.백엔드 개발자가 만든 API(순수 자바 코드)는 HTTP 요청을 수신할 능력이 없다. 따라서 사용자가 보낸 HTTP 요청이 API까지 닿을 수 있도록 요청을 받는 런타임이 필요하다. WAS와 서블릿 컨테이너가 해당 역할을 한다.이 런타임은 사용자가 TCP 소켓 + HTTP 프로토콜로 보낸 요청을 수신해서 파싱(헤더/바디), 라우팅(..