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

웹 개발의 핵심을 이루는 웹서버는 우리가 인터넷에서 다양한 정보와 서비스를 즐길 수 있게 도와주는 핵심적인 역할을 수행해요. 웹서버는 간단히 말해, 클라이언트(사용자의 웹 브라우저)로부터 요청을 받아 해당하는 웹 페이지나 자원을 제공하는 소프트웨어에요.
Apache는 웹 서버 중 가장 오랜 역사를 가지고 있으며, 안정성과 확장성 면에서 강점을 보이고 있어요. 이 오픈 소스 웹 서버는 다양한 운영 체제에서 동작하며, 모듈 시스템을 통해 기능을 쉽게 확장이 가능해요. 또한, 가상 호스트를 통해 여러 도메인을 한 서버에서 운영할 수도 있어요.
💡 C10K: Concurrent Connection 10K Problem
Apache HTTP 서버에서 1초에 10,000번의 요청이 넘어가는 순간 서버는 더이상 커넥션을 형성하지 못해 연결이 끊어지고 만다. 해당 문제는 하드웨어의 성능은 충분헀으나 Apache의 구조 때문에 메모리 부족, 무거운 프로그램, CPU 부하 지나친 증가로 인한 문제가 발생한다. 이를 해결하기 위해 Nignx, Apache MPM 같은 웹 서버가 등장했다.
Nginx는 경량화된 구조와 뛰어난 성능으로 유명한 웹 서버입니다. 특히 이벤트 기반 아키텍처를 통해 높은 동시 접속 처리 능력을 제공하며, 리버스 프록시 기능을 활용하여 부하 분산, SSL 종료, 캐싱 등을 효과적으로 수행해요. Nginx는 현대적인 웹 서비스에서 널리 사용되고 있어요.
두 웹 서버는 대립 관계가 아니라, 각각의 목적에 맞게 등장한 기술이에요.
Apache HTTP Server는 안정성과 확정성에 초점을 맞추었고, Nginx는 동시 커넥션 문제(특히 C10K)를 보완하는 것에 초점을 맞추어 당시 상황에 문제를 해결하기 위해 만들었던 것이에요.
웹 애플리케이션 서버(WAS)는 동적 데이터를 처리하기 위해 데이터베이스 연동, 스레드 처리 등 서버 자원 관리 및 비지니스 로직 처리를 위한 환경을 제공하는 소프트웨어에요.
Apache Tomacat은 오픈 소스이며, Java Servlet, JSP 등을 실행하는 WAS에요. 가볍고 유연한 특징으로 많이 사용되며, 이 기술을 통해 Java 기반의 웹 애플리케이션을 구동할 수 있어요.
비동기 이벤트 기반의 네트워크 애플리케이션을 위한 프레임워크이자 WAS에요. 다양한 프로토콜을 지원하고, 대용량 데이터를 효과적으로 처리하는 데 강점이 있어요.
웹서버와 WAS는 주로 협업하여 클리이언트의 요청에 응답해요. 전형적으로 웹 서버는 정적 콘텐츠를 처리하고, 동적 컨텐츠는 WAS가 담당하는 구조에요. 웹 서버와 WAS 사이에 Connector를 통해 효과적인 통신이 이루어지며, 이를 통해 클라이언트가 원하는 데이터를 볼 수 있게 되는 것이죠.
웹 프레임워크는 웹 애플리케이션 개발을 위한 구조와 규칙을 제공하는 소프트웨어에요. 개발자들이 효과적으로 웹 애플리케이션을 디자인하고 개발할 수 있게 도와주며, 일반적으로 모듈화, 보안, 데이터베이스 연동, URL 라우팅 등을 제공하여 개발자의 생산성을 향상시키고 있어요. 대표적으로 Django, Nest.JS, Spring Framework가 있어요.
웹서버와 웹 프레임워크는 각자의 강점을 살려 협업함으로써 안정적이고 성능 향상된 웹 어플리케이션을 구축할 수 있어요.
웹 개발에서 핵심적인 역할을 하는 웹 서버, WAS, 그리고 웹 프레임워크에 대해 간단히 알아보았어요. 웹 서버는 클라이언트의 정적 데이터 요청을 처리하고, WAS는 동적 데이터 처리와 비지니스 로직 실행을 담당하며, 웹 프레임워크는 효율적인 웹 애플리케이션 개발을 위한 구조와 규칙을 제공해줘요.
대규모 트래픽을 효율적으로 처리하기 위해 웹 서버, WAS, 웹 프레임워크를 조합하여 사용하는 것이 점점 더 중요해지고 있어요. 각 도구가 특화된 역할을 담당함으로써 빠른 응답속도, 보안, 확장성, 안정성을 향상시키며, 인프라 도구들을 효과적으로 활용하여 웹 애플리케이션 성능을 최적화해야 새 유저들을 유입시키면서 기존 유저들의 이탈을 방지할 수 있어요. 개념 정의도 중요하지만 각 도구가 제공하는 이점을 더 알아보면 좋을 것 같아요 !!