Programming/ETC

Apache, NginX, Tomcat의 개념(+ 웹서버, WAS, 로드밸런싱, 프록시)

리버김 2023. 6. 25. 23:45

웹 서버

  • Apache, NginX, IIS가 대표적인 제품
  • 웹사이트를 위한 서버를 만들어 주는 소프트웨어
  • 웹에 필요한 자원들을 특정 폴더들에 저장하여 서버에 지정된 웹사이트 주소로 접속하면 이것들을 받아갈 수 있도록 하는 역할
  • Tomcat, Node.js, Django 내장 서버 등과 클라이언트 사이에서 매니징을 담당하기도 한다. 왜냐하면 웹 서버 만으로도 PHP 동적 웹 정도는 처리할 수 있지만, 더 전문적으로 동적 웹을 처리하기 위해서다.
  • reverse proxy 제공: 서버의 정보를 감추어 준다. 보안 측면에서 웹 서버를 앞에 내세우는 것이 크다.
    • 캐시 제공: 클라이언트들이 자주 쓸 법한 자원들을 저장해준다.
  • 로드밸런싱: 이용자가 몰릴 때 여러 개의 Tomcat에 고루 배정해준다.
  • WAS에 대한 헬스 체크
  • Apache: 다중 프로세스
    • 오랜 기간 사용되어 안정성이 높다.
    • 클라이언트마다 따로 프로세스를 만든다.
  • NginX: 이벤트 기반
    • 컴퓨터에 부담이 덜하다.

 

Tomcat

  • 요즘은 Springboot에 내장되어 있어 직접 접할 일은 많이 없다.
  • Java와 JSP로 만든 웹 또는 API 애플리케이션을 실행할 때 Tomcat같은 Web Application Server(WAS)가 사용된다.
  • Spring으로 코딩한 웹앱을 war 파일로 빌드하면 그 안에 .class, JSP, 이미지, CSS, JS 파일들이 압축되어 있다.
  • Tomcat을 다운받으면 여러 폴더들 + 파일들이 들어있는 하나의 폴더로 되어 있다.
  • 그 중 특정 폴더에 war 파일을 넣고 명령어를 실행하면 Spring 서비스가 Tomcat을 통해 돌아간다.
  • 요즘은 반대로 Spring을 Tomcat이 들어 있는 jar 파일로 빌드해서 배포하곤 한다.
  • Java 외의 진영에서는 배포 구조가 달라 WAS가 아닌 다른 방식으로 정의된다.
  • 공통적인 것은 우선 웹 서버를 앞단에 두고, 그 뒤에서 WAS가 요리를 하는 것이다.

 

 

 

반응형