WEB/WAS 구조 정리

HappyLoop·2026년 10월 11일

Network

목록 보기
3/3
post-thumbnail

1. 전체 구조부터


클라이언트 (리액트/브라우저)
          HTTP
Web Server (nginx)          ← 정적 처리
         
WAS - 톰캣                  ← 동적 처리
  ├── JVM
  ├── 스프링부트
  └── JDBC
          SQL
DB (MySQL)

2. Web Server vs WAS 차이

Web Server (nginx, Apache)

정적 리소스만 처리
→ 클라이언트가 index.html 요청
→ 파일을 그대로 읽어서 반환
→ 연산, DB 조회 같은 건 불가능

동적 처리 요청이 오면
→ WAS로 넘김 (프록시)
  • 정적 리소스만 처리
    • 클라이언트가 index.html 요청
    • 파일 그대로 읽어서 반환
  • 동적 처리 요청이 오면 WAS로 넘김(프록시)

WAS (Web Application Server)

  • 동적 처리 전담 서버
    • 비즈니스 로직 실행
    • DB 조회/연산/인증 처리
      • 결과를 HTTP 응답으로 반환
  • 역할
    • HTTP 요청 수신 및 파싱
    • Servlet 컨테이너로서 Java 코드 실행
    • DB 연동(JDBC)
    • HTTP 응답 생성 및 반환

3.JVM

Java를 위해서 소프트웨어로 구현된 CPU

  1. 개발자가 Java 코드 작성 (.java)
  2. javac 컴파일러가 바이트코드로 변환(.class)
  3. JVM이 바이트 코드를 읽어서 실행
  • 특징
    • OS 위에서 동작하는 가상머신
    • WAS인 톰캣 자체도 Java로 만들어졌기 떄문에 JVM 위에서 실행
    • 스프링부트 구조도 JVM 위에서 실행

4. 톰캣이 WAS로서 하는 일.

톰캣의 핵심은 Servelt 컨테이너

Servlet이란?

  • Java로 HTTP 요청을 처리하는 클래스
  • WAS가 이 Servlet을 관리하고 실행
    • 스프링에선 DispatcherServlet이 어느 컨트롤러에 HTTP 요청을 보낼지 결정

5.JDBC

Java 코드가 MySQL에 접근하려면 MySQL 전용 통신 프로토콜을 알아야 하는데 DB마다 통신 방식이 다름

JDBC는 Java 표준 DB 인터페이스로

  • DB 종류에 관계없이 동일한 코드로 접근
  • DB 벤더가 JDBC Driver 구현체를 제공

6. 프레임워크란?

반복되는 작업을 대신 처리해주는 뼈대로써 대표적으로 스프링이 있음

  • DispatcherServlet
    • 개발자가 서블릿 직접 만들 필요 없음
  • 역할을 레이어로 분리
    • Controller
    • Service
    • Repository
  • 공통 기능은 프레임워크가 처리
    • 인증,로깅,트랜잭션

7. 스프링의 문제점

  • 톰캣 별도 설치
    • 서버에 톰캣 설치, 버전 맞추기, war파일로 배포
  • web.xml 수동 설정
    • DispatcherServlet 등록
    • URL 매핑 설정
    • 인코딩 설정
  • JDBC 설정 수동
    • DB URL, 계정, 드라이버
    • 커넥션 풀 설정
      • 커넥션 풀이란?
        • 서버 시작할 때 미리 DB 연결을 N개 만들어놓고 요청 올 때마다 꺼내 쓰고 반납하는 방식
  • 의존성 충돌
    • 라이브러리 버전을 개발자가 직접 맞춰야 함

8. 스프링부트

스프링부트 = 스프링 + 자동설정 + 내장톰캣

  • 톰캣 내장
    • 별도 설치 x
    • jar 파일 하나로 실행
  • Auto Configuration
    • 설정 파일 최소화
    • application.yml에 DB 정보만 적으면 나머지 설정은 자동
  • 의존성 자동 관리
    • spring-boot-starter-web만 추가하면 관련 라이브러리 버전까지 자동으로 맞춰줌

profile
A developer who codes with joy, never boring!

0개의 댓글