[LG CNS 6기] 4일차 TIL - 웹 서비스 이해 2강

윤현일·2026년 7월 20일

LGCNS

목록 보기
5/43

[Web] Web Server와 WAS, 데이터베이스 연결 구조

참고 영상: 웹 서비스 이해 02

지난 강의에서는 웹 서비스가 다음과 같은 구조로 동작한다는 것을 배웠다.

사용자 → 프론트엔드 → 백엔드 → 데이터베이스

이번 강의에서는 백엔드 영역을 조금 더 자세히 살펴보고, Web Server와 WAS의 차이 및 데이터베이스 연결 방법을 알아보았다.

Web Server란?

Web Server는 클라이언트의 요청을 받아 HTML, CSS, JavaScript, 이미지와 같은 정적 리소스를 제공하는 서버다.

대표적인 Web Server는 다음과 같다.

  • Apache
  • Nginx

정적 리소스는 사용자나 요청에 따라 내용이 바뀌지 않는 파일을 의미한다.

브라우저
   ↓ 정적 파일 요청
Web Server
   ↓
HTML, CSS, JavaScript, 이미지 반환

Web Server는 정적 파일을 빠르게 제공하는 데 적합하다.

WAS란?

WAS는 Web Application Server의 약자로, 프로그램을 실행하여 동적인 결과를 만들어내는 서버다.

예를 들어 로그인한 사용자마다 다른 정보를 보여주거나, 데이터베이스에서 게시글을 조회하려면 단순히 저장된 파일을 반환하는 것만으로는 부족하다.

이때 WAS가 요청에 맞는 코드를 실행한다.

클라이언트 요청
      ↓
WAS에서 프로그램 실행
      ↓
데이터베이스 조회
      ↓
동적으로 결과 생성
      ↓
클라이언트에 응답

Java 기반 웹 애플리케이션에서는 JSP와 Servlet 등이 WAS에서 실행될 수 있으며, 대표적으로 Tomcat이 있다.

Web Server와 WAS 비교

구분Web ServerWAS
주요 역할정적 리소스 제공동적 요청 처리
처리 대상HTML, CSS, JS, 이미지로그인, 게시글 작성, 데이터 조회
대표적인 예Apache, NginxTomcat
데이터베이스 연동일반적으로 직접 처리하지 않음애플리케이션 로직을 통해 처리

실제 서비스에서는 두 서버를 함께 사용하기도 한다.

사용자
  ↓
Web Server
  ├── 정적 요청 → 바로 응답
  └── 동적 요청 → WAS로 전달
                      ↓
                 데이터베이스

Web Server가 정적 파일을 처리하고, 프로그램 실행이 필요한 요청은 WAS에 전달하는 방식이다.

백엔드의 계층 구조

백엔드 애플리케이션은 모든 코드를 한곳에 작성하지 않고 역할에 따라 여러 계층으로 나눈다.

Controller
    ↓
Service
    ↓
Repository
    ↓
Database

Controller

클라이언트의 요청을 받고 응답을 반환한다.

Service

서비스의 핵심 비즈니스 로직을 처리한다.

Repository

데이터베이스에 접근하여 데이터를 조회하거나 저장한다.

이렇게 역할을 분리하면 코드 관리와 테스트가 쉬워지고, 특정 부분을 수정했을 때 다른 코드에 미치는 영향을 줄일 수 있다.

JDBC란?

Java 애플리케이션에서 데이터베이스에 접근하려면 데이터베이스와 통신할 방법이 필요하다.

JDBC는 Java Database Connectivity의 약자로, Java에서 데이터베이스에 접근할 수 있도록 제공되는 표준 API다.

Java 애플리케이션
        ↓
      JDBC
        ↓
데이터베이스

JDBC를 사용하면 SQL을 실행하고 결과를 받아올 수 있다.

다만 JDBC만 직접 사용하면 연결 관리, SQL 실행, 결과 변환 등의 코드를 반복해서 작성해야 한다.

이러한 불편함을 줄이기 위해 JPA나 MyBatis 같은 기술을 사용한다.

JPA란?

JPA는 Java Persistence API의 약자로, Java 진영의 표준 ORM 인터페이스다.

ORM은 객체와 관계형 데이터베이스 테이블을 연결하는 기술이다.

데이터베이스 테이블 → Java 클래스
테이블의 컬럼       → 객체의 필드
테이블의 행         → 하나의 객체

JPA를 사용하면 SQL을 직접 작성하는 작업을 줄이고 객체 중심으로 데이터를 다룰 수 있다.

userRepository.findById(1L);

JPA 자체는 인터페이스이며, 대표적인 구현체로 Hibernate가 있다.

JPA의 특징

  • 객체 중심으로 데이터를 처리한다.
  • 반복적인 SQL 작성을 줄일 수 있다.
  • SQL을 자동으로 생성한다.
  • 데이터베이스 테이블과 객체를 매핑한다.

MyBatis란?

MyBatis는 SQL Mapper 성격이 강한 데이터 접근 기술이다.

개발자가 SQL을 직접 작성하고, 조회 결과를 Java 객체와 연결한다.

SELECT *
FROM member
WHERE member_id = 1;

MyBatis의 특징

  • SQL을 직접 작성한다.
  • 복잡한 쿼리를 세밀하게 제어하기 좋다.
  • SQL 실행 결과를 객체에 매핑해 준다.
  • 데이터베이스에 특화된 기능을 사용하기 쉽다.

JPA와 MyBatis 비교

구분JPAMyBatis
중심객체 중심SQL 중심
SQL 작성대부분 자동 생성개발자가 직접 작성
추상화 수준높음상대적으로 낮음
장점반복 코드 감소, 생산성SQL 제어가 자유로움
적합한 상황일반적인 CRUD복잡한 조회와 SQL 최적화

두 기술 중 하나가 무조건 더 좋은 것은 아니다.

프로젝트의 구조와 요구사항에 따라 적절한 기술을 선택해야 한다.

데이터베이스의 종류

데이터베이스는 크게 관계형 데이터베이스와 NoSQL로 구분할 수 있다.

관계형 데이터베이스

데이터를 테이블 형태로 저장하고 SQL을 사용한다.

대표적인 제품은 다음과 같다.

  • MySQL
  • PostgreSQL
  • Oracle Database
  • Microsoft SQL Server
  • DB2

NoSQL

고정된 테이블 구조보다 유연한 형태로 데이터를 저장한다.

대표적인 제품은 다음과 같다.

  • MongoDB
  • Redis
  • Cassandra

서비스에서 다루는 데이터의 형태와 처리 방식에 따라 적절한 데이터베이스를 선택한다.

전체 구조 정리

이번에 배운 내용을 연결하면 다음과 같다.

사용자
  ↓
Web Server
  ├── 정적 파일 반환
  └── 동적 요청 전달
           ↓
          WAS
           ↓
Controller → Service → Repository
                         ↓
                  JPA 또는 MyBatis
                         ↓
                       JDBC
                         ↓
                    Database

Web Server는 정적 리소스를 제공하고, WAS는 프로그램을 실행해 동적인 요청을 처리한다.

백엔드 애플리케이션 내부에서는 계층별로 역할을 분리하며, JPA나 MyBatis를 통해 데이터베이스에 접근한다.

오늘 배운 내용

  • Web Server는 HTML, CSS, 이미지 등의 정적 리소스를 제공한다.
  • WAS는 프로그램을 실행하여 동적인 요청을 처리한다.
  • 백엔드는 역할에 따라 여러 계층으로 나눌 수 있다.
  • JDBC는 Java와 데이터베이스를 연결하는 표준 API다.
  • JPA는 객체 중심, MyBatis는 SQL 중심으로 데이터를 처리한다.
  • 데이터베이스는 관계형 데이터베이스와 NoSQL 등으로 구분할 수 있다.

이번 강의를 통해 사용자의 요청이 서버 내부에서 어떤 단계를 거쳐 데이터베이스까지 전달되는지 조금 더 구체적으로 이해할 수 있었다.

profile
개발자

0개의 댓글