웹 백엔드

웹 프로그래밍 시작하기

토리쟁이 2022. 10. 5. 00:22

1. 웹 프로그래밍이란 무엇일까?

웹 프로그래밍이란, 말 그대로 웹을 만드는 과정이다.

서버는 클라이언트로부터 요청을 받아 만들어진 웹사이트를 보여준다.

방대한 양의 정보를 제공해주기 위해서는 정보를 저장 및 관리하는 데이터베이스로부터 원하는 정보를 가지고 와서 웹 페이지에 뿌려줘야된다. 이럴 때 사용되기 위한 언어로는 PHP, ASP, Servlet&JSP가 있다.

특히 현업에서 많이 쓰이는 Servlet&JSP에 대해 집중적으로 공부할 것이다.

 

2. 구동 원리

서버는 일반적으로 웹 서버웹 애플리케이션 서버로 이루어져 있다. 

웹 서버는 클라이언트의 요청을 받아 이에 대한 처리를 한 결과 페이지를 응답하는 역할을 한다.

웹 애플리케이션 서버는 요청한 페이지의 로직이나 DB와의 연동을 처리할 수 있는 비즈니스 로직이 구현되는 곳이다.

 

2-1) 서버가 웹 서버와 웹 애플리케이션 서버로 이루어진 이유

웹  서버에서는 클라이언트로부터 받은 요청을 다양한 목적으로 처리하기 위해 다양한 형식의 문서와 웹 애플리케이션을 처리한다. 하지만, 여러 클라이언트로부터 요청을 단독으로 처리한다면 서버의 처리량이 많아지고 속도 및 보안에도 문제가 생길 가능성이 높다. 또한, 웹과 C/S(Client / Server) 환경을 모두 필요로 할 때는 웹 기반의 요청과 C/S 환경 기반의 요청을 각각 개별적으로 처리하도록 구축해야 한다.

 

이러한 여러 가지 이유로 여러 개의 서버를 병렬로 처리하는 방법을 쓰기도 하지만, 웹 서버의 기능을 분리해서 처리하려는 목적으로 웹 애플리케이션 서버(WAS, Web Application Server)를 사용한다. 클라이언트로부터 요청받는 일과 화면에 표현하는 로직까지만 웹서버에서 담당하고, 다양한 기능을 수행하는 로직(Business Logic)은 컨테이너가 담당하도록 WAS에서 일을 나누어 역할을 분담하는 것이다.

 

WAS는 크게 웹서버 기능과 컨테이너 기능으로 구성된다. 대부분 상용화된 WAS는 웹서버나 컨테이너 기능 외에 트랜잭션, 보안, 트래픽 관리, DB 커넥션 풀, 사용자 관리 등의 다양하고 강력한 기능을 제공한다.

 

 

 

톰캣(Tomcat)

아파치 톰캣은 아파치에서 개발한 WAS이다. 일반 상용 WAS 제품처럼 Java EE 스펙을 모두 갖추고 있지는 않고, JSP와 서블릿을 실행하는 컨테이너와 웹서버만 제공한다. 톰캣에서 제공하는 웹서버의 기능은 아주 기본적인 기능만 하므로 일반적으로 독립적으로 웹서버를 설치한 후 톰캣과 연동하여 실행되는 구조로 구축한다.

 

컨테이너

서블릿과 JSP와 같은 웹서버 애플리케이션들은 동적 콘텐츠를 생성하는 웹 컴포넌트이다. 이러한 웹 컴포넌트를 저장하는 저장소 역할, 메모리 로딩, 객체 생성 및 초기화 등 서블릿의 생명주기를 관리하고 JSP를 서블릿으로 변환하는 기능을 수행하는 프로그램이 바로 컨테이너이다.

 

(1) 서블릿 컨테이너

서블릿 컨테이너는 클라이언트의 요청에 따라 서블릿을 수행하는 프로그램이다. 대부분 서블릿 컨테이너는 자바로 구현된 프로그램이다. 서블릿 엔진이라고도 한다.

 

(2) JSP 컨테이너

JSP 컨테이너는 JSP를 서블릿으로 변환하는 프로그램이다. JSP 컨테이너 역시 서블릿으로 구현된 프로그램이다. JSP 컨테이너는 JSP 파일을 서블릿 소스로 변환 및 컴파일까지만 담당하는 프로그램이며, 변환된 서블릿의 수행은 서블릿 컨테이너가 담당한다.

 

 

3. 동작 순서

 

1. 사용자가 브라우저 주소란에 특정 사이트의 주소를 입력하게 되면 브라우저가 해당 웹 서버에 웹 페이지를 요청 

(단, 정적 페이지를 요청했을 경우 웹 서버에서 바로 클라이언트에게 해당 페이지 전송)

 

2. 해당 웹 서버는 들어온 요청을 처리할 수 있는 Servlet을 찾아서 요청을 전달(matching)

 

3. Servlet은 모델 자바 객체의 메서드 호출

 

4. 데이터를 가공하여 값 객체를 생성 or JDBC를 사용하여 DB와의 인터랙션을 통해 값 객체 생성

 

5. 결과 값을 Controller에게 반환

 

6. Controller는 모델로부터 받은 결과 값을 View에게 전달

 

7. JSP는 전달받은 값을 참조하여 출력할 결과 화면을 만들고 Controller에게 전달

 

8. View로부터 받은 화면을 웹 서버에게 전달, 웹 서버는 웹 브라우저에게 응답

 

9. 웹 브라우저는 웹 서버로부터 요청한 결과 값을 응답받으면 그것을 화면에 출력

 

'웹 백엔드' 카테고리의 다른 글

Node.js - 비동기 처리  (1) 2024.01.27
Node.js - Express 모듈과 EJS 템플릿  (1) 2024.01.26
Node.js - API와 HTTP 모듈  (0) 2024.01.25
Node.js  (1) 2024.01.22
서버(Server)와 프로토콜  (0) 2024.01.22