[SW정글][나만무 준비]Nginx & AWS S3

JST·2023년 10월 27일

나만무 준비

목록 보기
3/3

Nginx

Nginx는 웹 서버이다.

웹 서버와 웹 어플리케이션 서버(WAS) 의 차이

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

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

웹 서버를 이용하는 이유

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

  2. 보안 기능을 제공.

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

Nginx의 장점

  1. 높은 성능과 적은 메모리 사용

  2. 리버스 프록시(Reverse Proxy) 사용이 가능
    프록시(Proxy)의 사전적 정의는 "대리"입니다. 인터넷 접속을 할 때 보안상의 문제로 직접 통신을 주고받을 수 없을 때 그 사이의 중계기로서 대리로 통신을 수행하는 기능을 프록시라고 말합니다. 이렇게 중계를 기능하는 것을 우리는 프록시 서버라고 부릅니다. 프록시는 크게 포워드 프록시, 리버스 프록시로 구분됩니다.

    • 포워드 프록시는 클라이언트와 인터넷 그 사이에 있는 영역을 말합니다. 클라이언트가 어떠한 정보를 요청하면 포원드 프록시가 이를 대신 받아서 서버에게 전달을 합니다. 이후 서버의 응답 또한 포워드 프록시가 대신 받아 클라이언트에게 전달합니다.

      포워드 프록시를 사용하면 클라이언트의 IP 주소가 웹 서버에 노출되지 않습니다. 따라서, 클라이언트의 위치나 신원을 식별하는 것이 어려워져 보안이 강화됩니다. 또한 접근 제어를 수행할 수 있습니다. 포워드 프록시를 사용하여 특정 IP 주소, 도메인 또는 URL에 대한 접근을 제한할 수 있습니다.

      마지막으로 미디어 스트리밍을 지원할 수 있습니다. 미디어 파일은 일반적으로 큰 용량을 가지고 있기 때문에, 웹 서버에서 직접 전송하는 것은 효율적이지 않습니다. 포워드 프록시를 사용하여 미디어 파일을 캐시하고, 클라이언트에게 빠르게 제공할 수 있습니다.
    • 리버스 프록시는 인터넷과 백엔드 그 사이에 있는 서버 영역을 말합니다. 예를 들어 WAS로 사용하고 있는 서버가 여러 대 있다고 가정을 해보겠습니다. 클라이언트가 https://example/blog1, https://example/blog2으로 접근을 했다면 blog1은 A 서버로 전달, blog2는 B 서버로 전달하여 요청에 해당하는 웹 서버로 길을 분배할 수 있습니다. 이것을 로드 밸런싱이라고 합니다.
    • 그리고 캐싱 서버로도 이용이 가능합니다. 예를 들어 클라이언트가 이미지를 요청했을 때 처음에는 서버에서 가져오지만 이후에 동일한 요청이 있는 경우에는 캐시 서버에서 가져와 클라이언트게 전달해 줍니다. 이것으로 사이트의 접속 속도가 빨라지게 됩니다.
    • 마지막으로 보안 효과도 있습니다. WAS가 데이터를 응답할 때는 기기의 명칭이나 주소 등 실제로는 민감이 정보들이 담겨져 있습니다. 이러한 정보들을 중간에서 숨겨줌으로써 보안을 높일 수가 있습니다.
  3. ssl 지원 - 보안

  4. 데이터 압축

  5. 비동기 처리
    Nginx는 이벤트 루프 방식을 사용하여 높은 성능을 제공합니다. 이를 통해 동시에 여러 요청이 들어왔을 때도 많은 트래픽을 동시에 처리할 수 있어 빠른 응답 시간을 보장합니다.

AWS S3

Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스다. 일반적인 파일서버는 트래픽이 증가함에 따라서 장비를 증설하는 작업을 해야 하는데 S3는 이와 같은 것을 대행한다. 트래픽에 따른 시스템적인 문제는 걱정할 필요가 없어진다. 또 파일에 대한 접근 권한을 지정 할 수 있어서 서비스를 호스팅 용도로 사용하는 것을 방지 할 수 있다.

특징

  • 많은 사용자가 접속을 해도 이를 감당하기 위해서 시스템적인 작업을 하지 않아도 된다.
  • 저장할 수 있는 파일 수의 제한이 없다.
  • 최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스 할 수 있다.
  • 파일에 인증을 붙여서 무단으로 엑세스 하지 못하도록 할 수 있다.
  • HTTP와 BitTorrent 프로토콜을 지원한다.
  • REST, SOAP 인터페이스를 제공한다.
  • 데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원한다.
  • 버전관리 기능을 통해서 사용자에 의한 실수도 복원이 가능하다.
  • 정보의 중요도에 따라서 보호 수준을 차등 할 수 있고, 이에 따라서 비용을 절감 할 수 있다. (RSS)

0개의 댓글