🧐TIL
[다시하는 백엔드 기초 공부] WAS와 백엔드 프레임워크
WAS (Web Application Server)
WAS는 웹에서 요청을 받아서 동적 콘텐츠(Dynamic Content)를 생성하고 응답하는 프로그램이다. 즉, 클라이언트의 요청에 따라 코드를 실행하고** **그 결과를 HTML이나 JSON으로 만들어 돌려주는 역할을 한다. 이 과정에서 프로그래밍 언어가 실행된다는 점이 웹서버와의 가장 큰 차이이다.
특징 요약
- 처리 대상: 동적 콘텐츠 (코드 실행 결과)
- 실행 방식: 언어 런타임 위에서 코드 실행
- 속도: 웹서버 보다 느리지만 유연함
- 예시: Tomcat, Jetty, Gunicorn, Uvicorn
WAS의 역할
- HTTP 요청을 받아서 애플리케이션 코드 실행
- 스레드/프로세스 관리
- 세션 관리, 트랜잭션 관리
- 데이터베이스 연결 및 리소스 풀 관리
백엔드 프레임워크 (Backend Framework)
흔히 Spring 서버를 개발한다거나 FastAPI 서버를 개발한다는 말은 해당 프레임워크를 사용해서 어플리케이션 코드를 작성한다는 것이지 프레임워크 자체가 서버가 되는 것은 아니다. 그렇다면 백엔드 프레임워크를 사용해서 개발을 한다는 것은 WAS를 만드는 것인가? 라고 질문한다면 그것 또한 아니다.
WAS는 요청에 대한 처리를 담당하는 어플리케이션의 실행 환경으로, WAS 라는 프로세스 안에서 개발자가 작성한 비즈니스 로직이 동작하는 것이라고 보면 된다. 백엔드 프레임워크는 말그대로 웹 서비스의 비즈니스 로직을 코드로 구현하기 위한 뼈대일 뿐이다.
모든 백엔드 프레임워크가 동일한 기능을 가지는 것은 아니지만 일반적으로 프레임워크를 사용하여 다음과 같은 기능들을 어플리케이션에 구현할 수 있다.
- 라우팅 (URL → 함수 매핑)
- 요청(Request)/응답(Response) 처리
- 데이터베이스 ORM
- 인증, 인가, 세션, JWT
- 미들웨어 및 의존성 주입
언어별 주요 프레임워크
- Python: Django, FastAPI, Flask
- Java: Spring
- JavaScript: Express.js, Nest.js
- Go: Gin, Echo
웹서버, WAS, 어플리케이션의 관계
[사용자 브라우저]
↓
[웹서버 (Nginx)]
↓
[WAS (Gunicorn / Uvicorn)]
↓
[어플리케이션 (FastAPI / Django)]
↓
[데이터베이스, 외부 API]
- 웹서버: 요청을 받고 정적 파일 처리 또는 WAS로 전달
- WAS: 요청을 처리할 어플리케이션의 실행 환경 제공
- 어플리케이션: 전달받은 요청에 따라 비즈니스 로직 수행