웹서버, WAS, 웹 프레임워크

허진혁·2024년 1월 28일
0

인터넷에서 웹사이트를 이용할 때, 그 배후에는 다양한 기술들이 상호작용하고 있어요. 이 기술 중 웹서버, WAS, 그리고 웹 프레임워크는 웹 개발의 핵심을 이루고 있는데, 이들이 정확히 무엇을 하는지, 어떻게 동작하는지 궁금해서 공부했어요. 이 블로그에서는 웹의 '마법사'들인 웹서버, WAS, 웹 프레임워크에 대해 알아봐요 !

웹 서버(Web Server)

웹 개발의 핵심을 이루는 웹서버는 우리가 인터넷에서 다양한 정보와 서비스를 즐길 수 있게 도와주는 핵심적인 역할을 수행해요. 웹서버는 간단히 말해, 클라이언트(사용자의 웹 브라우저)로부터 요청을 받아 해당하는 웹 페이지나 자원을 제공하는 소프트웨어에요.

웹서버 기능

  • 정적 데이터를 클라이언트에 제공
    • 클라이언트(웹 브라우저 등)으로부터 들어오는 HTTP 요청을 받아 해석한다.
    • 요청된 리소스(HTML, 이미지, CSS 등)을 찾아 클라이언트에 직접 제공한다.
    • 정적 파일은 서버에서 미리 생성되어 저장되기에(캐싱) 동적 처리없이 바로 전송한다.
  • 로그 기록
    • 클라이언트의 요청과 서버의 응답에 대한 로그를 기록한다.
  • 보안 기능
    • SSL/TLS를 통한 암호화, 액세스 제어, DoS 공격 방어 등 보안 기능을 제공한다.
  • Reverse Proxy
    • (주소 또는 경로 기반) 라우팅 역할로 클라이언트로 들어온 요청을 알맞은 서버로 전달한다.
    • 다양한 서버 사이에서 효과적으로 트래픽을 분배하고 서버 간 부하를 균등하게 분산한다.
  • 로드 밸런싱
    • 여러 WAS 서버 사이에서 트래픽을 고르게 분배해 각 서버의 성능을 최적화한다.
    • 서버의 작업 부하가 불균형하게 분포되지 않도록 조절하며, 시스템의 전반적인 안정성을 향상시킨다.

주요 웹서버 소개

Apache HTTP Server

Apache는 웹 서버 중 가장 오랜 역사를 가지고 있으며, 안정성과 확장성 면에서 강점을 보이고 있어요. 이 오픈 소스 웹 서버는 다양한 운영 체제에서 동작하며, 모듈 시스템을 통해 기능을 쉽게 확장이 가능해요. 또한, 가상 호스트를 통해 여러 도메인을 한 서버에서 운영할 수도 있어요.

💡 C10K: Concurrent Connection 10K Problem
Apache HTTP 서버에서 1초에 10,000번의 요청이 넘어가는 순간 서버는 더이상 커넥션을 형성하지 못해 연결이 끊어지고 만다. 해당 문제는 하드웨어의 성능은 충분헀으나 Apache의 구조 때문에 메모리 부족, 무거운 프로그램, CPU 부하 지나친 증가로 인한 문제가 발생한다. 이를 해결하기 위해 Nignx, Apache MPM 같은 웹 서버가 등장했다.

Nginx

Nginx는 경량화된 구조와 뛰어난 성능으로 유명한 웹 서버입니다. 특히 이벤트 기반 아키텍처를 통해 높은 동시 접속 처리 능력을 제공하며, 리버스 프록시 기능을 활용하여 부하 분산, SSL 종료, 캐싱 등을 효과적으로 수행해요. Nginx는 현대적인 웹 서비스에서 널리 사용되고 있어요.

두 웹 서버는 대립 관계가 아니라, 각각의 목적에 맞게 등장한 기술이에요.
Apache HTTP Server는 안정성과 확정성에 초점을 맞추었고, Nginx는 동시 커넥션 문제(특히 C10K)를 보완하는 것에 초점을 맞추어 당시 상황에 문제를 해결하기 위해 만들었던 것이에요.

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

웹 애플리케이션 서버(WAS)는 동적 데이터를 처리하기 위해 데이터베이스 연동, 스레드 처리 등 서버 자원 관리 및 비지니스 로직 처리를 위한 환경을 제공하는 소프트웨어에요.

WAS 기능

  • 서블릿 컨테이너: 서블릿을 실행하고 관리하여 동적 웹 페이지를 생성한다.
  • 트랜잭션 관리: 데이터베이스와 트랜잭션 처리를 담당하여 데이터 일관성을 유지한다.
  • 미들웨어로서 요청과 응답전 공통 처리를 담당한다.(보안, 세션 관리 등)

주요 WAS 소개

Apache Tomacat

Apache Tomacat은 오픈 소스이며, Java Servlet, JSP 등을 실행하는 WAS에요. 가볍고 유연한 특징으로 많이 사용되며, 이 기술을 통해 Java 기반의 웹 애플리케이션을 구동할 수 있어요.

Netty

비동기 이벤트 기반의 네트워크 애플리케이션을 위한 프레임워크이자 WAS에요. 다양한 프로토콜을 지원하고, 대용량 데이터를 효과적으로 처리하는 데 강점이 있어요.

웹 서버와 WAS의 협업 방식

웹서버와 WAS는 주로 협업하여 클리이언트의 요청에 응답해요. 전형적으로 웹 서버는 정적 콘텐츠를 처리하고, 동적 컨텐츠는 WAS가 담당하는 구조에요. 웹 서버와 WAS 사이에 Connector를 통해 효과적인 통신이 이루어지며, 이를 통해 클라이언트가 원하는 데이터를 볼 수 있게 되는 것이죠.

웹 프레임워크(Web Framework)

웹 프레임워크는 웹 애플리케이션 개발을 위한 구조와 규칙을 제공하는 소프트웨어에요. 개발자들이 효과적으로 웹 애플리케이션을 디자인하고 개발할 수 있게 도와주며, 일반적으로 모듈화, 보안, 데이터베이스 연동, URL 라우팅 등을 제공하여 개발자의 생산성을 향상시키고 있어요. 대표적으로 Django, Nest.JS, Spring Framework가 있어요.

웹 프레임워크 기능

  • 템플릿 엔진: 동적으로 생성되는 HTML 페이지를 작성할 수 있도록 도와주는 템플릿 엔진을 제공한다.
  • 데이터 검증 및 변환: 클라이언트에서 전송된 데이터의 검증 및 변환을 수행하여 안정적인 데이터 처리를 보장한다.
  • 요청에 대한 구체적인 로직(비지니스 로직)을 처리한다.
  • 예외처리, 보안 등에 따른 데이터 처리가 가능하다.
  • 테스팅을 지원: 테스트 케이스를 작성하고 실행할 수 있는 도구를 제공하여 소프트웨어 품질을 향상시킨다.

웹서버와 웹 프레임워크의 협업 방식

1. 역할 분담

  • 웹서버 역할: 정적 파일 제공, SSL/TLS 처리, 리버스 프록시 등의 역할 수행한다.
  • 웹 프레임워크 역할: 동적 데이터 처리, 비즈니스 로직 실행, MVC 아키텍처를 통한 웹 어플리케이션 구현한다.

2. 리버스 프록시를 통한 연동

  • 웹서버가 클라이언트로부터의 요청을 받으면, 웹 프레임워크로 해당 요청을 전달하는 리버스 프록시 역할을 웹서버가 수행한다.
  • 리버스 프록시를 통해 클라이언트는 직접적으로 웹 프레임워크에 접근하지 않고, 웹서버를 통해 간접적으로 상호작용한다.

3. 동적 데이터 처리

  • 웹 프레임워크는 동적 데이터 요청에 대한 비즈니스 로직을 실행하고, 결과를 생성한다.
  • 웹서버는 이 결과를 받아 클라이언트에게 전송하여 동적인 콘텐츠를 제공한다.

4. URL 매핑 및 라우팅

  • 웹서버가 클라이언트의 요청을 받으면, URL을 특정 웹 프레임워크의 컨트롤러로 매핑한다.
  • 웹 프레임워크는 매핑된 컨트롤러에서 해당 요청에 대한 비즈니스 로직을 수행한다.

5. 정적 파일 제공

  • 웹서버는 정적 파일(css, 이미지 등)을 직접 제공하므로, 웹 프레임워크는 이러한 파일에 대한 처리가 필요하지 않는다.
  • 웹 프레임워크는 동적 데이터 처리에만 집중하며, 웹서버의 정적 파일 제공 기능을 활용한다.

6. 보안 강화

  • 웹서버는 SSL/TLS를 통해 암호화를 담당하고, 웹 프레임워크는 사용자 입력값의 검증, 보안 취약점 방어, 권한 관리 등의 보안 기능을 수행한다.

웹서버와 웹 프레임워크는 각자의 강점을 살려 협업함으로써 안정적이고 성능 향상된 웹 어플리케이션을 구축할 수 있어요.

결론

웹 개발에서 핵심적인 역할을 하는 웹 서버, WAS, 그리고 웹 프레임워크에 대해 간단히 알아보았어요. 웹 서버는 클라이언트의 정적 데이터 요청을 처리하고, WAS는 동적 데이터 처리와 비지니스 로직 실행을 담당하며, 웹 프레임워크는 효율적인 웹 애플리케이션 개발을 위한 구조와 규칙을 제공해줘요.

대규모 트래픽을 효율적으로 처리하기 위해 웹 서버, WAS, 웹 프레임워크를 조합하여 사용하는 것이 점점 더 중요해지고 있어요. 각 도구가 특화된 역할을 담당함으로써 빠른 응답속도, 보안, 확장성, 안정성을 향상시키며, 인프라 도구들을 효과적으로 활용하여 웹 애플리케이션 성능을 최적화해야 새 유저들을 유입시키면서 기존 유저들의 이탈을 방지할 수 있어요. 개념 정의도 중요하지만 각 도구가 제공하는 이점을 더 알아보면 좋을 것 같아요 !!

참고자료

[10분 테코톡] 👩‍🦰희봉의 웹서버 vs WAS

[10분 테코톡] 🤫 피케이의 Nginx

웹서버, WAS, 웹 프레임워크란

profile
Don't ever say it's over if I'm breathing

0개의 댓글