Post

웹서비스 이해와 설계

웹서비스의 개념, 구성 요소, 통신 방식, 웹서버와 WAS 차이, HTTP/HTTPS 프로토콜, API와 REST 설계까지 폭넓게 정리한 글입니다.

웹서비스 이해와 설계

1. 웹서비스란?

  • 인터넷을 통해 데이터를 주고받는 서비스
  • 웹 브라우저, 모바일 앱 등 다양한 클라이언트가 접근
  • HTTP, HTTPS 프로토콜 기반

네거시 시스템(Legacy System): 이전 세대의 기술이나 설계로 만들어졌고, 현재 환경이나 요구사항에 잘 맞지 않는 시스템을 말합니다.


2. 웹서비스의 기본 구조

  • 클라이언트 (Client)

    • 사용자 요청 전송
    • 예: 웹 브라우저, 모바일 앱
  • 서버 (Server)

    • 요청 처리 및 응답 반환
    • 예: 웹 애플리케이션 서버, 데이터베이스 서버
  • 네트워크

    • 클라이언트와 서버 간 연결
    • 인터넷, LAN 등

게이트웨이(MCI): 외부와 내부 네트워크를 연결해주는 역할을 합니다.


3. 요청과 응답 (Request & Response)

  • Request

    • 클라이언트 → 서버
    • 메서드: GET, POST, PUT, DELETE 등
  • Response

    • 서버 → 클라이언트
    • 상태 코드: 200(성공), 404(없음), 500(서버 오류) 등

4. 웹서비스의 구성 요소

  • 웹 서버

    • 정적 컨텐츠 제공 (HTML, CSS, 이미지)
  • 애플리케이션 서버(WAS)

    • 동적 컨텐츠 처리 (비즈니스 로직)
  • 데이터베이스(DB)

    • 사용자 정보, 게시물 등 데이터 저장
  • API

    • 시스템 간 데이터 통신을 위한 인터페이스

설계 흐름

  • 클라이언트(웹브라우저) → 웹서버(Apache, Nginx) → 애플리케이션 서버(WAS) → DB
  • 사용자 정보 전송 시 HTTP 헤더와 바디를 통해 전송
  • WAS는 DB와 연동해 비즈니스 로직 처리
  • Tomcat(무료 WAS) → 여러 인스턴스 + 로드밸런싱
  • 웹서버는 DMZ 구간에 배치

5. 클라이언트-서버 모델

  • 클라이언트: 요청 전송
  • 서버: 요청 처리 및 응답 전송
  • Stateless(무상태): 요청 간 상태 유지하지 않음

메모

  • 클라이언트와 서버의 역할이 명확
  • 복잡한 서비스는 P2P나 메시징큐 방식도 사용

6. 웹서비스 통신 방식

  • 동기 통신

    • 요청 후 응답을 기다림
    • 예: 대부분의 웹 요청
  • 비동기 통신

    • 응답을 기다리지 않고 다른 작업 가능
    • 예: AJAX, fetch API

웹서버란?

  • 정의: HTTP 요청을 처리해 정적 콘텐츠(HTML, CSS, 이미지)를 전달하는 서버
  • 역할: 정적 파일 제공, 요청 라우팅
  • 예시: Apache, Nginx

WAS(Web Application Server)란?

  • 정의: 동적 콘텐츠를 생성하고 제공
  • 역할: 비즈니스 로직 처리, DB 연동
  • 예시: Tomcat(Java), JBoss, WebLogic

웹서버 vs WAS 비교

구분웹서버WAS
주 역할정적 콘텐츠 제공동적 콘텐츠 처리
예시Nginx, ApacheTomcat, JBoss
처리 범위HTTP 요청 응답로직 처리 + DB 연결
속도빠름상대적으로 느림

왜 분리할까?

  • 역할 분리로 성능, 보안 향상
  • 웹서버가 정적 파일을 빠르게 처리 → WAS 부하 감소
  • 로드밸런싱 구성 시 유연성 확보

동작 흐름 예시

  1. 사용자 요청 → 웹서버

  2. 정적 파일이면 웹서버 응답

  3. 동적 요청이면 WAS로 전달

  4. WAS가 DB와 통신 후 결과 생성

  5. 결과를 웹서버 → 클라이언트로 전달


구성 예시

1
2
3
4
5
6
7
[Client]
  │
[웹서버(Nginx)]
  │
[WAS(Tomcat)]
  │
[DB Server]

요약

  • 웹서버: 정적 리소스 처리
  • WAS: 비즈니스 로직과 DB 연동 처리
  • 역할 분리로 효율성과 확장성 향상

HTTP vs HTTPS

HTTP

  • 포트 80
  • 평문 전송 → 보안 취약
  • 메서드: GET, POST, PUT, DELETE, PATCH

HTTPS

  • 포트 443
  • SSL/TLS 암호화 → 데이터 기밀성, 무결성, 인증 제공
항목HTTPHTTPS
보안없음암호화 제공
속도빠름암호화 오버헤드 있음
용도공개 페이지로그인, 결제 등 민감정보

HTTP 메시지 구조

1
2
3
4
<시작 라인>
<헤더>
<빈 줄>
<바디>

시작 라인

  • 요청: GET /index.html HTTP/1.1
  • 응답: HTTP/1.1 200 OK

헤더

  • 메타데이터 정보 전달
  • 예: Content-Type, Content-Length, Cookie

바디

  • 실제 데이터 전달 (HTML, JSON, 이미지 등)

예시 요청 메시지

1
2
3
4
5
6
7
8
POST /api/data HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "John",
  "age": 30
}

예시 응답 메시지

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Content-Type: application/json

{
  "status": "success",
  "message": "OK"
}

API란?

  • Application Programming Interface
  • 시스템 간 데이터와 기능을 주고받는 통신 창구

RESTful API 특징

  • HTTP 기반 설계 원칙
  • URL로 리소스 식별
  • 무상태성

예시

  • /users/1 → GET: 사용자 정보 조회
  • /products → POST: 상품 생성

REST API 설계 예시 (도서 관리)

메서드URL설명
GET/books도서 목록 조회
GET/books/{id}특정 도서 조회
POST/books새 도서 등록
PUT/books/{id}도서 정보 수정
DELETE/books/{id}도서 삭제

요약

  • 웹서비스 = 클라이언트-서버 모델 기반
  • 웹서버/WAS 역할 분리로 효율성 향상
  • HTTP/HTTPS → 통신의 뼈대
  • API/REST → 서비스 간 통합 핵심 인터페이스
This post is licensed under CC BY 4.0 by the author.