해당 내용은 내가 정리한 웹서비스 개발에 대한 개요 정리 게시글에서 이어지는 내용이다.
https://warmice8226.tistory.com/66
웹 서비스 개발에 대한 개요 정리
해당 글은 전문가가 작성한게 아니라 개인이 생성형AI와 인터넷 검색, 실제 그렇게 작동되는지 검수하는 과정을 기록하는 내용이다. 따라서 보증되지 않은 한 때의 상황으로 받아들여주면 좋겠
warmice8226.tistory.com
여기서 웹서버에 대한 부분이 궁금했는데 Spring boot에서는 Tomcat 서버가 내장되어 별도의 웹서버를 설치하지 않아도 서버가 실행되었기 때문에 해당 부분을 공부하지 않았기 때문이다.
따라서 현재 Apache와 NginX에 대한 차이점을 알아보고 해당 내용을 정리해보기로 한다.
1. Apache
- 요청에 대한 1:1 대응 방식으로 작동
- 요청이 많아질수록 메모리를 많이 잡아먹는 상황이 발생. (C10K 문제)
2. NginX(엔진X)
- 웨이터 처럼 자신이 받은 요청을 백엔드로 넘김
- 응답 대기가 줄어들고 요청이 계속해서 처리되고 있기에 메모리를 적게 쓰고 속도가 빠름.
| 구분 | Apache HTTP Server | Nginx (Engine X) |
| 탄생 배경 | 1995년. 안정성과 호환성 중시 | 2004년. 동시 접속 처리를 위한 성능 중시 |
| 구조 | 스레드/프로세스 방식 (동기) | 이벤트 구동 방식 (비동기) |
| 성능 (속도) | 동시 접속자가 늘어나면 급격히 느려짐 | 접속자가 많아도 성능 저하가 거의 없음 |
| 정적 파일 처리 | 보통 | 매우 빠름 (이미지, CSS 등) |
| 설정 편의성 | .htaccess 파일로 폴더별 설정 가능 (재시작 X) | 중앙 설정 파일(nginx.conf)만 사용 (수정 시 재로드 필요) |
| 동적 콘텐츠 | PHP 모듈 등을 내장하여 직접 처리 가능 | 직접 처리 불가. (WAS나 PHP-FPM으로 넘겨주는 역할만 함) |
| 주 사용처 | 공유 호스팅, 레거시 시스템, PHP 호환성 중시 | 고성능 서버, 리버스 프록시, 로드 밸런싱 |
과거 아파치를 쓰던 이유
1. LAMP 스택의 유행 : Linux + Apache + MySQL + PHP 조합이 웹개발의 표준이었음.
2. 편리한 설정 : 서버 전체의 설정을 바꾸지 않아도 .htaccess 파일을 이용해서 특정 설정만 변경할 수 있음.
3. 모듈의 다양성 : 많은 종류의 모듈이 있음.
Nginx를 추천하는 이유
1. 압도적인 성능 : 스파트폰 보급으로 접속자 수가 많이 늘어 아파치로는 감당이 안되는 순간이 생김.
2. 리버스 프록시 최적화 : 서버를 분리해서 요청을 받는 서버와 해당 데이터를 처리하는 서버(WAS)를 분리시킴. 그 과정에서 데이터를 전달하는 역할을 Nginx가 굉장히 잘함.
3. Spring Boot와 궁합 : Spring Boot는 Tomcat(WAS)을 내장하고 있음. 따라서 요청을 받아주는 Nginx를 앞에 두고 실제 데이터 처리를 SpringBoot에서 한다면 데이터 처리에 대해서 서버 부하를 획기적으로 줄일 수 있음.
생각 정리
Nginx가 요즘 추세인 이유는 압도적인 성능 때문인것 같다. 최적화가 잘 되니 도커를 이용해서 서버를 나눌 때도 Nginx는 용량을 조금 주고 데이터 처리를 조금 더 크게 준다면 데이터의 처리속도가 병렬로 이루어지기 때문에 무척 빨라질 것이기 때문이다.
이런 구조를 생각해 볼 때 내가 만들 웹 프로젝트의 구조에 대해서 생각해봐야겠다.
'IT 공부내용 정리 > 배포(docker, 젠킨스)' 카테고리의 다른 글
| yml 파일과 properties파일의 차이 (0) | 2025.12.01 |
|---|---|
| 도커를 이용한 웹서비스의 마이크로서비스(MSA) 구현 (0) | 2025.12.01 |
| 리눅스(ubuntu) 도커(docker) 최신 버전 설치 및 기본설정 방법 (0) | 2025.12.01 |
| 웹 서비스 개발에 대한 개요 정리 (0) | 2025.12.01 |