Computer-Science

웹서버를 사용하는 이유

hoya7788 2024. 7. 23. 16:02

수업도중 nginx를 사용하였는데 이걸 왜 사용하는지 궁금하여 검색해보았고 그 결과 다음 내용이 도출되었다.

nginx를 이해하기 위해서는 다음 4가지 용어를 알아둘 필요가 있다.

 

1. 클라이언트

클라이언트란 서비스를 이용하기 위해 네트워크를 통해 요청을 보내는 주체를 말한다. 예를 들어, 인터넷에서 웹페이지를 보기위해 웹 브라우저를 실행하면 웹 브라우저가 클라이언트가 된다. 또한, 이메일을 보내기 위해 이메일 클라이언트를 실행하면 이메일 클라이언트가 된다. 웹 개발 영역에서 보통 클라이언트라 하면 크롬, 사파리, 엣지 등 웹 브라우저를 의미한다고 보면 된다.

우리가 흔히 사용하는 웹 브라우저

2. 웹 서버

 

웹 서버는 클라이언트의 요청에 따라 HTML, CSS, JS, 이미지 파일과 같은 정적 파일을 응답하여 제공하는 소프트웨어를 말한다. 웹 서버는 HTTP 프로토콜을 사용하여 클라이언트와 통신한다. 대표적인 웹 서버로는 Nginx, Apache 등이 있다.

대표적인 웹서버

3. WAS(Web Application Server)

WAS는 클라이언트 요청에 대해 동적인 처리를 담당하는 영역이다. 웹 서버와 달리 애플리케이션 로직을 실행할 수 있도록 구성되어 있다. 예를 들어 회원가입이나 로그인 등의 로직을 처리하는 영역이 WAS이다. 또한 데이터베이스 연동, 트랜잭션 관리, 보안, 로깅 등의 기능도 제공한다. 이를 통해 웹 애플리케이션의 안정성과 성능을 향상시키며, 개발자들은 애플리케이션 개발에 집중할 수있다. 대표적인 WAS로는 Tomcat, JBoss, WebLogic, WebSphere 등이 있다.

 

웹 서버와 WAS는 역할의 차이가 있지만 현업에서는 웹서버와 WAS를 하나로 얘기하고 있다. 참고로 Node.js는 웹서버 또는 WAS로도 사용할 수 있다.

대표적인 WAS

4. DB(데이터베이스)

DB는 조직이나 개인이 필요한 정보를 체계적으로 저장, 관리하고 검색할 수 있는 시스템이다. DB는 일반적으로 다수의 사용자가 공유할 수 있으며, 대규모 데이터의 저장과 검색을 처리할 수 있다. 가장 많이 사용되는 DB유형으로는 관계형(RDBMS), NoSQL등이 있다.

 

관계형은 데이터를 테이블로 구성하고, 테이블 간의 관계를 정의하여 데이터를 저장하는 방식이다. SQL과 같은 쿼리 언어를 사용하여 데이터를 검색, 추가, 수정, 삭제할 수 있다. 데이터베이스 관리 시스템(DBMS, Database Management System)은 이러한 쿼리 언어를 해석하고 실행하여 데이터를 처리한다. PostgreSQL, MySQL, Microsoft SQL Server등이 대표적 관계형 데이터 베이스이다.

 

NoSQL은 "Not only SQL" 또는 Non-Relational"의 줄임말로, 관계형 데이터베이스의 한계를 극복하기 위해 만들어진 데이터베이스이다. NoSQL은 스키마를 자유로운 구조로 데이터를 저장하며, 분산 처리 및 고성능 처리를 위해 설계되었다.

NoSQL은 관계형과는 다르게 데이터를 테이블이 아닌 컬렉션(Colecction)이나 도큐먼트(document)단위로 저장한다.

컬렉션은 테이블과 유사한 개념이며, 도큐먼트는 일반적으로 JSON 또는 BSON 형식으로 저장되는 일정한 구조를 가진 문서이다. 이러한 구조는 데이터를 유연하게 처리할 수 있으며, 확장성이 높다. 

MongoDB, Redis, Firebase 등이 대표적인 NoSQL이다.

 


위의 4가지를 이해했다면 이제 웹이 작동하는 원리를 알아보자.

보통 웹 서비스는 클라이언트 -> 웹 서버 -> WAS -> DB순으로 요청이 되고 DB -> WAS -> 웹 서버 -> 클라이언트 순으로 응답이 된다.

 

그러면 웹 서버를 굳이 사용하는 이유는 무엇일까?

1. WAS 부담을 줄여주기 위해 사용된다. WAS는 로그인, 회원가입, 개인정보 수정 등 동적 작업을 처리하는 것만으로도 작업량이 많다. 이에 HTML, CSS, JS, 이미지 등 정적인 파일을 클라이언트에게 전달하는 역할을 웹서버에게 위임함으로써 WAS 작업 부담을 줄일 수 있다.

 

2. 보안 기능을 제공한다. 웹 서버는 보안 기능을 제공하여 웹 페이지에 대한 접근을 제어할 수 있다. 예를 들어, 웹 서버는 SSL/TLS 프로토콜을 사용하여 데이터를 암호화하고, 액세스 제어, 웹 방화벽 등의 보안 기능을 제공하여 웹 사이트를 보호할 수 있다.

 

3. 높은 성능을 제공한다. 웹 서버는 대부분 비동기 처리 방식을 사용하여 높은 성능을 제공한다. 예를 들어 Nginx, Apache 등의 웹 서버는 이벤트 기반, 멀티 프로세싱, 스레드 풀 등의 기술을 사용하여 수천 대의 클라이언트 요청을 동시에 처리할 수 있다.