본문 바로가기
CS

[CS] 웹 서버와 WAS

by 육빔 2024. 8. 22.
728x90
반응형

개발 중 웹 서버와 WAS를 상당히 자주 들었는데 단순히 종류, 단순 기능만 알고 있었는데 개발자가 되려는 사람으로써 좀 더 자세히 알아야될 것 같아서 정리를 하고자 한다.

 

우선 웹은 무엇일까?

 

월드 와이드 웹 (World Wide Web):

  • 웹은 월드 와이드 웹(WWW) 또는 간단히 "웹"이라고도 불립니다. 이는 인터넷에 연결된 문서와 리소스의 거대한 네트워크를 의미합니다.
  • 웹은 1989년에 팀 버너스-리가 제안하고 개발한 개념으로, 초기에는 학술 정보를 공유하는 목적으로 시작되었지만, 현재는 전 세계적으로 사용되는 정보 및 서비스 제공 시스템이 되었습니다.

이러한 웹을 이루기 위해선 아래 요소가 필요하다.

 

 

웹 브라우저 (Web Browser)

웹 서버 (Web Server)

URL (Uniform Resource Locator)

HTTP/HTTPS (Hypertext Transfer Protocol)

HTML, CSS, JavaScript

 

 

웹 서버 (Web Server)

  • 역할:
    • 웹 서버는 정적인 콘텐츠(HTML, CSS, JavaScript, 이미지 등)를 클라이언트(주로 웹 브라우저)에게 제공하는 역할을 합니다.
    • 주로 HTTP 요청을 처리하며, 클라이언트가 요청한 리소스를 반환하거나, 동적 콘텐츠가 필요할 경우 이를 처리할 수 있는 서버(WAS)로 요청을 전달합니다.
  • 특징:
    • 웹 서버는 빠르고 가벼운 구조를 가지고 있으며, 정적 파일 제공에 최적화되어 있습니다.
    • 일반적으로 리버스 프록시로도 사용될 수 있으며, 여러 대의 WAS로 요청을 분배하는 로드 밸런서 역할을 하기도 합니다.

 

  • 예시:
    • Apache HTTP Server, Nginx, Microsoft IIS 등.
  • 작동 방식:
    • 클라이언트가 웹 서버에 HTTP 요청을 보내면, 웹 서버는 해당 요청에 맞는 정적 파일을 찾아 응답합니다.
    • 만약 요청이 동적 콘텐츠에 관한 것이라면, 이를 WAS에 전달하여 결과를 받아 클라이언트에게 응답합니다.

 

하지만 웹 서버만 이용할 경우 이미 가지고 있는 정적인 자료만 볼 수 있다. 한마디로 우리가 로그인, 글쓰기, 글삭제 등 동적인 기능을 하지 못하고 이미 주어진 html 밖에 못본다는 점이다. 이러한 문제를 해결하고자 WAS가 나오게 된다.

 

WAS (Web Application Server)

  • 역할:
    • WAS는 동적인 콘텐츠(데이터베이스와 연동된 웹 페이지, 비즈니스 로직을 수행하는 애플리케이션 등)를 생성하고 제공하는 역할을 합니다.
    • 웹 서버와 달리, WAS는 Java, PHP, Python, Ruby 등 다양한 프로그래밍 언어로 작성된 애플리케이션을 실행하여 요청을 처리합니다.
  • 특징:
    • WAS는 동적인 비즈니스 로직을 처리하고, 데이터베이스와의 연동, 트랜잭션 관리, 세션 관리, 보안 등 다양한 기능을 제공합니다.
    • 종종 애플리케이션 서버라고도 불리며, 자바 서블릿, JSP, EJB 등 다양한 기술을 사용하여 애플리케이션을 실행합니다.
  • 예시:
    • Apache Tomcat, JBoss (WildFly), WebSphere, WebLogic 등.

웹 서버와 웹 컨테이너를 결합한 형태이고 데이터베이스와 연동하여 동적인 웹사이트를 제공할 수 있다. 

 

근데 왜 웹서버와 WAS를 분리했을까?? 분리하면 생기는 이점은 다음과 같다.

 

1. 성능 및 효율성

  • 정적 콘텐츠와 동적 콘텐츠의 분리:
    • 웹 서버는 정적 콘텐츠(HTML 파일, 이미지, CSS, JavaScript 등)를 빠르고 효율적으로 처리하는 데 최적화되어 있습니다.
    • 반면, WAS는 동적 콘텐츠(사용자의 요청에 따라 생성되는 페이지, 데이터베이스 조회 결과 등)를 처리하는 데 중점을 둡니다.
    • 두 서버를 분리하면 웹 서버는 정적 콘텐츠만 처리하고, WAS는 동적 콘텐츠만 처리하게 되어 각각의 장점을 최대한 활용할 수 있습니다. 이로 인해 전체적인 성능이 향상됩니다.
  • 로드 밸런싱:
    • 웹 서버를 프론트엔드에 두고, 여러 대의 WAS로 요청을 분산시킬 수 있습니다. 이를 통해 트래픽이 많은 경우에도 웹 서버가 로드 밸런서를 통해 각 WAS에 균등하게 요청을 분배할 수 있습니다.
    • 이렇게 하면 특정 WAS에 트래픽이 집중되지 않도록 하여 전체 시스템의 안정성과 성능을 높일 수 있습니다.

2. 확장성

  • 수평적 확장:
    • 웹 서버와 WAS를 분리하면, 두 컴포넌트를 독립적으로 확장할 수 있습니다. 예를 들어, 트래픽이 증가할 경우 웹 서버나 WAS 중 특정 부분만 추가로 확장하면 됩니다.
    • 정적 콘텐츠 제공이 주로 필요하다면 웹 서버 인스턴스를 추가하고, 동적 콘텐츠 처리에 더 많은 자원이 필요하다면 WAS 인스턴스를 추가하는 방식으로 확장할 수 있습니다.
  • 유연한 인프라 구성:
    • 웹 서버와 WAS를 독립적으로 운영함으로써, 특정 웹 서버에서 여러 WAS를 연결하거나, 특정 WAS를 여러 웹 서버와 연결할 수 있습니다. 이로 인해 더욱 유연한 시스템 구성이 가능합니다.

3. 보안

  • 네트워크 분리:
    • 웹 서버와 WAS를 물리적 또는 네트워크적으로 분리하여, 보안을 강화할 수 있습니다. 예를 들어, 웹 서버는 외부 네트워크에 공개되지만, WAS는 내부 네트워크에서만 접근 가능하도록 설정할 수 있습니다.
    • 이 경우, 웹 서버는 외부로부터의 직접적인 공격을 차단하는 방화벽 역할을 하며, WAS는 더 안전한 환경에서 동작하게 됩니다.
  • 보안 설정 분리:
    • 웹 서버와 WAS를 분리하면, 각 서버에 대한 보안 설정을 개별적으로 관리할 수 있습니다. 웹 서버는 주로 접근 제어, SSL/TLS 설정 등을 담당하고, WAS는 애플리케이션 계층에서의 인증, 권한 부여 등을 처리하게 됩니다.

4. 유지보수 및 관리 편의성

  • 업데이트 및 재시작 관리:
    • 웹 서버와 WAS를 분리하면, 각각을 독립적으로 업데이트하거나 재시작할 수 있습니다. 예를 들어, 웹 서버의 설정 변경 후 재시작이 필요할 때, WAS는 계속 동작할 수 있어 애플리케이션 가용성에 영향을 주지 않습니다.
    • 이는 시스템의 가용성을 높이고, 유지보수 시에도 서비스를 중단 없이 제공할 수 있게 해줍니다.
  • 로그 및 모니터링:
    • 웹 서버와 WAS의 로그를 분리하여 관리하면, 트러블슈팅 시에 특정 문제의 원인을 쉽게 파악할 수 있습니다. 예를 들어, 정적 파일의 제공 문제는 웹 서버 로그에서 확인하고, 애플리케이션 오류는 WAS 로그에서 확인할 수 있습니다.

5. 전문화된 역할

  • 웹 서버:
    • 정적 콘텐츠 제공에 최적화되어 있고, 리버스 프록시 및 로드 밸런서 역할을 수행합니다.
  • WAS:
    • 비즈니스 로직 처리, 데이터베이스와의 연동, 트랜잭션 관리, 세션 관리 등을 담당합니다.
    각 서버가 자신의 역할에 최적화된 환경에서 동작할 수 있게 되므로, 시스템 전체의 효율성과 안정성이 향상됩니다.

 

짧게 얘기하면 서버 부하 분산, 보안, 유지보수, 확장할때 용이하기에 분리를 해서 사용한다고 생각하면 편할 것 같다.

 

728x90
반응형