가) Nginx란?

Nginx란 무엇인가요?

엔진엑스는 가장 널리 사용되는 웹 서버입니다. 이전에는 아파치와 같은 웹서버를 많이 사용했으나 아파치와 비교해 더 빠르고 가볍습니다.


웹서비스의 구성 요소

클라이언트, 웹서버, WAS(Web Application Server), DB

  1. 클라이언트는 네트워크를 통해 요청을 보내는 주체로, 일반적으로 사용자가 사용하는 웹 브라우저(크롬, 사파리, 익스플로러 등)를 의미합니다.
  2. 웹서버는 클라이언트가 보낸 요청을 받아 HTML, CSS, JavaScript, 이미지 파일과 같은 정적 콘텐츠를 응답하는 소프트웨어입니다. 웹서버는 HTTP 프로토콜을 사용하여 클라이언트와 통신하며, 클라이언트의 요청을 처리해 결과를 반환합니다. 대표적인 웹서버로는 Nginx와 Apache가 있습니다.
  3. WAS는 웹서버와 협력하여 클라이언트의 동적 요청을 처리하는 역할을 합니다. 웹서버가 정적 파일을 제공하는 반면, WAS는 애플리케이션 로직을 처리하고, 데이터베이스와 연동하여 회원가입, 로그인 등의 동적 기능을 수행합니다. Tomcat과 같은 WAS는 웹서버와 함께 사용되며, Node.js와 같은 서버는 웹서버와 WAS 기능을 동시에 수행할 수 있습니다.
  4. DB는 정보를 체계적으로 저장, 관리하고 검색하는 시스템으로 관계형 데이터베이스(RDBMS)와 NoSQL 유형이 있습니다.
    1. RDBMS : SQL과 같은 쿼리 언어를 사용해 데이터를 검색, 추가, 수정, 삭제할 수 있습니다. 대표적으로 PostgreSQL, MySQL이 있습니다.
    2. NoSQL : Not only SQL 또는 Non-relational의 줄임말로 관계형 데이터베이스의 한계를 극복하기 위해 만들어진 데이터베이스입니다. 스키마가 자유로운 구조로 관계형과는 다르게 데이터를 테이블이 아닌 컬렉션, 도큐먼트 단위로 처리합니다. 대표적으로 MongoDB, Redis, Firebase가 있습니다.

웹서비스는 클라이언트 > 웹서버 > WAS > DB 순으로 요청이 되고 응답은 그 역순입니다.

Nginx란?

image

나) 웹서버를 왜 이용하나요?

  1. WAS는 로그인, 회원가입 같은 동적 작업을 처리하는데, 이러한 작업들은 서버 자원을 많이 소모합니다. 따라서 HTML, CSS, JavaScript, 이미지와 같은 정적 파일은 웹서버가 처리하여 WAS의 부담을 줄입니다. 즉, 정적 리소스는 웹서버에서 빠르게 제공하고, 복잡한 비즈니스 로직이 필요한 요청만 WAS가 처리하게 함으로써 서버 자원의 효율성을 높입니다.
  2. 웹서버는 SSL/TLS 프로토콜을 사용하여 클라이언트와 서버 간의 데이터를 암호화합니다.
  3. 웹서버는 대부분 비동기 처리 방식을 사용하여, 많은 클라이언트의 요청을 동시에 처리할 수 있습니다. 또한 이벤트 기반 처리 및 멀티 프로세싱, 스레드 풀 같은 기술을 통해 서버의 성능을 최적화합니다. 이를 통해 수천 대의 클라이언트 요청을 동시에 처리할 수 있어, 대규모 트래픽을 원활하게 처리하는 데 유리합니다.

댓글남기기