오봉이와 함께하는 개발 블로그
BE - 웹 프로그래밍 개요 본문
728x90
웹(Web) 개념
- 웹 서비스
- 인터넷을 기반으로 제공되는 서비스
- 웹 애플리케이션
- 웹을 기반으로 작동되는 프로그램
- 웹 프로그래밍을 통해 구현
- 퓁 프로그래밍
- 기본적으로 클라이언트 / 서버 방식
- 정적인 HTML만으로는 데이터가 실시간으로 변화하는 것을 처리하거나 저장하기에는 불가능
- 동적으로 변화하는 데이터를 처리하고 표시하기 위해서 개발된 것이 CGI, ASP, PHP, JSP, Servlet
정적 웹 프로그래밍
- 웹 서버에서 보여줄 HTML, CSS, 이미지, JavaScript 등의 파일을 미리 저장해 놓고 브라우저에서 요청할 경우 그대로 전달
- 사용자는 페이지가 변경되지 않는 한 고정된 웹 페이지를 보게된다.
- 주로 화면의 디자인을 구성하거나 클라이언트의 이벤트를 처리한다.
- 실시간 또는 데이터베이스를 저장된 데이터를 표시하는데 적합하지 않은 방식
정적 웹 프로그래밍 구성 요소
- 클라이언트
- 네트워크로 서버에 접속한 후 서버로부터 서비스를 제공받는 컴퓨터 및 소프트웨어(웹 브라우저)
- 웹 서버
- 각 클라이언트로부터 요청을 받고 서비스를 제공하는 컴퓨터 및 소프트웨어
- HTTP 프로토콜
- www 서비스를 제공하기 위한 표준 언어
- Hyper Text Transfer Protocol
- www 서비스를 제공하는 통신 규약
- 웹 서버와 클라이언트는 이 프로토콜을 이용해서 정보를 주고 받음
- 자바스크립트
- HTML 웹 페이지의 여러 가지 동적인 기능을 제공하는 스크립트 언어
- CSS
- HTML 페이지의 디자인 관련된 기능 제공 언어
동적 웹 프로그래밍
- 관리자의 역할을 웹 애플리케이션 서버(Web Application Server : WAS)가 수행
- 클라이언트의 요청이 있을 때 데이터베이스에 접근해서 실시간 정보를 얻어와서 클라이언트에게 전송
- 초기 동적 웹 프로그래밍에서 사용하는 방식
- CGI(Common Gate Interface : 공용 게이트웨이 인터페이스)
- 대표적인 CGI 언어 : 펄(Perl)
- 프로세스 방식으로 실행
- 프로세스 마다 메모리에 로드하는 방식으로 메모리에 과부하 발생하는 문제
- CGI(Common Gate Interface : 공용 게이트웨이 인터페이스)
- 프로세스 방식의 문제를 해결하면서 나온 기술들이 JSP, ASP, PHP
- 브라우저 요청 시 스레드 방식으로 실행하기 때문에 CGI보다 효율적으로 기능을 수행
- 클라이언트 요청을 처리하는 기능은 최초 한번만 메모리에 로드
- 동일한 기능 요구 시 기존에 사용한 기능을 재사용
- 따라서 프로세스 방식으로 동작하는 것보다 훨씬 빠르게 수행
동적 웹 프로그래밍 구성 요소
- 웹 브라우저
- 클라이언트. 사용자의 작업 창 (HW/SW)
- 웹 서버
- 웹 브라우저의 요청을 받아들이는 곳 (HW/SW)
- 웹 애플리케이션 서버 (WAS)
- 요청된 페이지의 비즈니스 로직 및 데이터베이스와의 연동을 처리
- Apache Tomcat
- 데이터베이스
- 데이터 저장소
웹 서비스 구조 및 처리 순서
웹 서버
- 웹에서 서버 기능을 수행하는 프로그램
- HTTP 프로토콜 기반으로
- 웹 클라이언트(웹 브라우저)로부터 요청을 서비스하는 기능 담당
- 정적인 컨텐츠(HTML, CSS 등) 제공
- 동적인 컨텐츠 요청은 웹 컨테이너에게 보내고
- 웹 컨테이너가 처리한 결과를 클라이언트에게 응답
- 웹 서버 종류
- Apache
- IIS (Internet Information Server) : MS
웹 컨테이너 (Web Container)
- 웹 애플리케이션을 실행할 수 있는 컨테이너
- JSP와 서블릿(Servlet)을 실행시킬 수 있는 소프트웨어
- 서블릿 컨테이너라고도 함
- 웹 서버가 서블릿 자체를 실행하지 못하므로 JVM을 내장한 컨테이너라고 하는 서블릿 실행 환경이 필요
- 서블릿과 JSP 대한 실행 환경 제공
- 정적 페이지(static page)에 대한 요청도 처리 가능
- 웹 서버에서 JSP를 요청하면 톰캣(웹서버+컨테이너)에서 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고
- 서블릿 수행 결과를 웹 서버에게 전달
- 서블릿의 생명주기 관리
- Web Application 당 한 개의 Servlet Context 객체 생성
웹 컨테이너가 사용자의 요청에 응답하는 순서
- 클라이언트가 HTTP request를 HTTP service (웹 서버)에게 전송
- HTTP service는 요청 데이터를 웹 컨테이너에게 전송
- 웹 컨테이너가 HttpServletRequest 객체와 HttpServletResponse 객체를 생성
- 웹 컨테이너는 요청된 Servlet 의 서비스 메소드를 호출하여 Servlet 활성화시킴
- 웹 컨테이너는 Servlet에 의해 생성된 응답 데이터를 HTTP service (웹 서버)에게 전송
- HTTP service (웹 서버)는 HTTP response를 클라이언트에게 전송
- 클라이언트 요청 -> 웹 서버 -> 웹 컨테이너 (서블릿 활성화) 응답 -> 웹 서버 -> 클라이언트
웹 애플리케이션 서버 (Web Application Server : WAS)
- 웹 서버로부터 오는 동적인 요청을 처리하는 서버
- 웹 서버 기능 + 웹 컨테이너 기능
- 기타 기능
- 트랜잭션, 보안, 트래픽 관리, DB 커넥션 풀, 사용자 관리 등 다양한 기능 제공
- Apache Tomcat은 WAS
웹 컨테이너에서 웹 애플리케이션 요청 처리
- HTML / CSS / 자바스크립트 실습 시 톰캣을 server로 생성해서 사용
- HTML 파일 입력하고 서버 실행
- 웹 브라우저에서결과 확인
- http://localhost:8080/HTML01/start.html
- 서버로 데이터 전송 못했고, 서버로부터 데이터 받지 못한다.
- 이후 JSP와 서블릿, DB 연동을 통해 서버 페이지와 데이터 주고 받는다.
728x90
'BE' 카테고리의 다른 글
Github Actions & AWS를 이용한 CI/CD - 2 (1) | 2023.10.25 |
---|---|
Github Actions & AWS를 이용한 CI/CD - 1 (0) | 2023.10.24 |
Comments