오봉이와 함께하는 개발 블로그

BE - 웹 프로그래밍 개요 본문

BE

BE - 웹 프로그래밍 개요

오봉봉이 2021. 12. 27. 19:51
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)
    • 프로세스 방식으로 실행
    • 프로세스 마다 메모리에 로드하는 방식으로 메모리에 과부하 발생하는 문제
  • 프로세스 방식의 문제를 해결하면서 나온 기술들이 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 객체 생성

웹 컨테이너가 사용자의 요청에 응답하는 순서

  1. 클라이언트가 HTTP request를 HTTP service (웹 서버)에게 전송
  2. HTTP service는 요청 데이터를 웹 컨테이너에게 전송
  3. 웹 컨테이너가 HttpServletRequest 객체와 HttpServletResponse 객체를 생성
  4. 웹 컨테이너는 요청된 Servlet 의 서비스 메소드를 호출하여 Servlet 활성화시킴
  5. 웹 컨테이너는 Servlet에 의해 생성된 응답 데이터를 HTTP service (웹 서버)에게 전송
  6. HTTP service (웹 서버)는 HTTP response를 클라이언트에게 전송
  • 클라이언트 요청 -> 웹 서버 -> 웹 컨테이너 (서블릿 활성화) 응답 -> 웹 서버 -> 클라이언트

웹 애플리케이션 서버 (Web Application Server : WAS)

  • 웹 서버로부터 오는 동적인 요청을 처리하는 서버
  • 웹 서버 기능 + 웹 컨테이너 기능
  • 기타 기능
    • 트랜잭션, 보안, 트래픽 관리, DB 커넥션 풀, 사용자 관리 등 다양한 기능 제공
  • Apache Tomcat은 WAS

웹 컨테이너에서 웹 애플리케이션 요청 처리

  • HTML / CSS / 자바스크립트 실습 시 톰캣을 server로 생성해서 사용
  • 서버로 데이터 전송 못했고, 서버로부터 데이터 받지 못한다.
  • 이후 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