Request-Response-Cycle

명훈·2023년 9월 15일
0

Android-Server-DB

목록 보기
1/2
post-thumbnail

안드로이드 개발을 하다가 서버에 있는 DB를 실제로 사용하려고 서버 구성을 하다보니, 전체적인 흐름을 확인해볼 필요가 있어 정리하였음.



1) Web Server(NGINX, Apache, ..)

웹 서버는 클라이언트로부터 http 요청(request)를 받아들이고, 웹 페이지, 이미지, 문서 등의 정적 파일이나 동적 콘텐츠를 제공하는 소프트웨어.

  • 간단하게 말하면 웹 서버는 실제 서버에 저장된 html 파일 등을 요청을 받아서 적절히 꺼내어 보내주는 역할을 수행함 - 정적 웹 페이지를 구현

  • 웹 서버의 모듈(기능 확장을 위한 플러그인 같은 것)을 사용해서 스크립트 언어(주로 PHP, Python 등)로 작성된 코드와 통합하여 동적 웹 페이지도 구현 가능

  • 하지만 웹 서버는 동적 파일 서비스와 보안 및 요청 처리에 대한 기능에 집중하고, 보다 복잡한 동적 웹 페이지 구현을 더 다양한 기능을 구현 가능한 WAS 등에 맡기는 방식으로 역할을 분리하여 보통 사용한다.

2) Web Application Server(Apache Tomcat, ..) - WAS

이후에 언급되는 Web Application을 실행하기 위한 소프트웨어 및 서버 환경을 말한다.
WAS는 클라이언트로부터의 웹 요청을 처리하고, Web Application의 코드를 실행하여 동적 웹 페이지를 생성하며, 데이터베이스와 상호작용 하는 등의 역할을 수행한다.

  • WAS는 Web Server를 통해 요청을 받고, Web Application의 코드를 실행해주는 역할을 한다고 볼 수 있다. Web Application에 작성되는 스크립트 언어 종류에 따라 WAS는 종류도 다르고, 비슷한 역할을 수행하는 것에 대한 이름이 조금 다르다. 즉 정확하게 딱 무엇이다 말하기 애매한 경우가 있다.

  • JAVA의 경우, WAS 역할을 수행하는 것으로 Tomcat이라 불리는 것이 많이 사용된다.
    Python의 경우, uWSGI 혹은 Gunicorn이라 불리는 것이 많이 사용된다.

  • CGI(Common Gateway Interface)와 WSGI(Web Server Gateway Interface)는 WAS가 아니라 Web Server와 Web Application간의 통신에 필요한 규약(프로토콜) 같은 것이다. uWSGI와 Gunicorn은 python Web application에 특화된 WSGI를 사용하여 WAS의 기능을 제공해준다.


3) Web Application

Web Application은 웹 브라우저를 통해 사용자가 인터넷을 통해 접속해서 실행하는 소프트웨어 프로그램으로, 다양한 기능을 제공하는 동적 웹 페이지를 직접적으로 생성하는 기능을 제공한다.

스크립트 언어 진영에 따라서 사용하는 Web Application의 종류가 다른데, Python은 Django를, Java는 Spring이 있다. 구체적으로 어떠한 동적 웹 페이지를 구현할지를 코드로서 작성하게 구현하게 된다.


4) Web Server를 계속 사용하는 이유

WAS는 Web Application과의 상호작용을 통해 정적 뿐만 아니라 동적 웹 페이지를 구현할 수 있다. 그럼에도 보통은 Web Sever - WAS - Web Application - DB 구조가 계속 사용되는데, 그 이유는 아래와 같은 Web server의 기능 때문이다.

1. Reverse proxy

보통 사용자 ip를 직접 들어내지 않고 인터넷을 사용할 수 있게하는 것을 forward proxy 기능이라 한다. Reverse proxy는 반대의 개념으로, 서버를 사용할 때 서버 내부의 구조나 기능의 구체적인 내용이 노출되지 않도록 하는 기능을 말한다.

2. Load Balancing

여러 서버 또는 서버 인스턴스 사이의 작업 부하를 분산시켜 성능을 향상시키고 가용성을 향상시키는 기술이다.

3. Reverse proxy caching

보통 사용자가 같은 사이트에 접속할 경우 이미 불러온 적 있는 일부 데이터를 따로 저장해두었다가 바로 보여줘서 빠르게 웹 페이지가 나오게 하는 기능을 forward proxy caching 기능이라 하는데, 반대로 서버 단에서 자주 전송하게 된 데이터를 따로 저장해두었다가 바로 보여주는 기능을 말한다.


Reference
profile
댕댕이 라이프

0개의 댓글