본문 바로가기
코딩공부/Server

Nginx, Gunicorn, PostGresql 이해하기

by Dong_Devlog 2022. 11. 11.

1. Nginx

Nginx 개요

러시아에서 개발되어 미국에서 운영 중인 오픈 소스 웹 서버 프로그램으로 HTTP와 리버스 프록시, IMAP/POP3 등의 서버 구동이 가능하다. Java 서블릿은 대개 Apache의 톰캣을 연동해서 구동하고, PHP의 경우 PHP-FPM을 연동해서 구동한다.

 

Nginx 역할

- 정적 파일을 처리하는 HTTP 서버로서의 역할

웹서버의 역할은 HTML, CSS, Javascript, 이미지와 같은 정보를 웹 브라우저에 전송하는 역할을 한다.

 

- 응용프로그램 서버에 요청을 보내는 리버스 프록시로서의 역할

두번째 역할로 리버스 프록시이다. 클라이언트는 가짜 서버에 요청을 하면, 프록시 서버가 배후 서버로부터 데이터를 가져오는 역할을 한다. 여기서 프록시 서버가 Nginx, 리버스 서버가 응용프로그램 서버를 의미한다.

 

비동기 처리 방식

Nginx는 비동기 처리 방식(Event-Drive)을 채택하고 있다.

 

- 동기(Synchronous) :  A가 B에게 데이터를 요청했을 때, 이 요청에 따른 응답을 주어야만 A가 다시 작업 처리가 가능 (하나의 요청, 하나의 작업에 충실)

 

- 비동기(Asynchronous) : A의 요청을 B가 즉시 주지 않아도, A의 유휴시간으로 또 다른 작업 처리가 가능한 방식

 

2. Gunicorn

WSGI 란?

파이썬 애플리케이션이 웹 서버와 통신하기 위한 인터페이스이다. 웹 서버에서의 요청을 해석하여 파이썬 애플리케이션 쪽으로 던지는 역할을 수행한다.

 

Gunicorn  개요

Gunicorn은 Python WSGI(Web Server Gateway Interface)로 웹 서버(Nginx)로부터 서버사이드 요청을 받으면 WSGI를 통해 서버 애플리케이션(Django)로 전달해주는 역할을 수행한다. Django의 runserver 역시도 똑같은 역할을 수행하지만 보안적으로나 성능적으로 검증이 되지 않았기 때문에 production 환경에서는 사용할 수 없다. 

 

3. PostgreSQL

PostgreSQL 개요

오픈 소스 데이터베이스로 1996년에 첫 출시되어 전 세계 사용률은 4위로 구인률이 증가하고 있다. MySQL에 비해서 SQL 표준을 더 잘 지원하고 기능이 더 강력하며 쿼리가 복잡해질수록 성능이 더 잘 나오는 편이다. 대신 기본적인 CRUD 성능이 MySQL 등 경쟁 DB에 비해 좋지 않은 편이다.

 

PostgeSQL 특장점

- 라이센스에 대한 비용문제가 전혀 없음

 

- 오래된 오픈소스의 안정성

매우 가볍게 돌아가는 데이터베이스지만, 대용량 데이터의 처리에도 큰 문제점이 발견되지 않고 표준 SQL을 잘 따르고 있다.

 

- 발전중인 데이터베이스

무료 데이터베이스임에도 빠른 속도로 업데이트를 지속하고 있다.

 

- 독창적인 자료형 및 문법

독창적인 자료형, 문법, 함수들을 익힌다면 더욱 효과적이고 파워풀하게 데이터베이스를 활용할 수 있다.

'코딩공부 > Server' 카테고리의 다른 글

AWS EC2 인스턴스 유형에 대해  (0) 2022.12.12
docker-compose.yml 작성을 위한 구성 옵션 정리  (0) 2022.11.21
Docker 기본 명령어 정리  (0) 2022.11.17
Docker란?  (0) 2022.11.09

댓글