먼저, hoog님의 지식 공유 덕분에 스스로 성장함을 지속적으로 느끼고 있어 너무 감사합니다! 다름이 아니라 정적 파일 서빙이 웹서버의 주요 기능 중 하나라고 알고 있습니다. 정적 파일의 대표적인 예시로 html, css, js로 예시를 들어주셨습니다. 그러면 해당 파일의 서빙으로 성능적 이점을 얻기 위해서는 프론트와 백엔드가 하나의 서버에 위치해 있을 때만 적용되는 사항일까요?
누구보다 빠르게 배우는 Nginx + Docker + Springboot 서버 무중단 배포
강의에선 컨테이너 이미지를 DockerHub에 등록해서 사용하셨고, 리버스 프록시를 위해 EC2에 Nginx를 띄워서 사용하셨는데요! AWS 인프라를 활용하는 환경이라면 AWS ALB나 AWS ECR을 쓰고, Terraform 같은 IaC 기술을 활용하면 인프라 구축에 필요한 비용을 많이 줄일 수 있을 것 같다는 생각이 들었습니다. 그럼에도 Docker Hub나 Nginx 인프라를 추가하여 사용한다면 어떤 장점이 있는지 궁금합니다. 실무에선 주로 인프라 구성을 어떻게 하는지도 궁금합니다!
학습 관련 질문을 남겨주세요 성실히 답변해드립니다! 강의와 관련이 없어도 유사한 학습 질문도 괜찮습니다 강의에서 나오는대로 따라 모두 설치를 했습니다. 근데 제 vscode에서는 강의처럼 자동 완성을 강의처럼 제공해주지 않고 있어요... 혹시 어떤 익스텐션인지 알 수 있을까요? 그리고 fastapi와 react에서 더 유용한 익스텐션들이 있다면 알고 싶어요!
안녕하세요. 섹션 7의 "35. Nginx, Certbot이 작성한 HTTPS 관련 코드 해석하기" 강의를 들으면서 궁금한 점이 생겨서 질문 남깁니다. server { # 2. 들어온 요청의 주소의 Host가 jscode.p-e.kr일 경우 (ex. http://jscode.p-e.kr/about) # https://jscode.p-e.kr/...(ex. https://jscode.p-e.kr/about)로 리다이렉트(301) 처리 if ($host = jscode.p-e.kr) { return 301 https://$host$request_uri; } # managed by Certbot # 1. jscode.p-e.kr 주소로 들어온 요청이면서 # 80번 포트(http)로 들어오는 요청일 때 # 이 server 블럭에서 처리하도록 설정 listen 80; server_name jscode.p-e.kr; # 3. 그 이외의 경우에는 404(Not Found)로 응답 return 404; # managed by Certbot } 강의자료에서 제공해주시는 /etc/nginx/conf.d/default.conf 파일의 일부 코드입니다. 이미 server_name에서 jscode.p-e.kr 주소로 들어온 요청인지 확인하니깐, if( $host = jscode.p-e.kr ) 는 없어도 되는거 아닌가요? 코드가 존재하는 다른 의도가 있는건지 궁금합니다.
로드 밸런싱 대상 서버들을 upstream이라는 그룹으로 묶는 코드에 질문이 있습니다. upstream backend { server localhost:8080; server localhost:8081; } 위 코드에서는 사실 서버는 1대이고, 포트번호만 8080과 8081로 로드밸런싱한 것 아닌가요? 실제로 서버 2대로 로드밸런싱을 하려면 localhost:8080과 localhost:8081 자리에 서버 도메인 주소가 들어가면 되는 건가요? 또한, 제가 말한 것이 맞다면 /health에 요청할 때마다 나타나는 Server ID는 같아야 하는 것인데, 왜 다르게 나오는 건가요?
'도커 기반 HTTPS 보안 서버 구축과 서브 도메인 리버스 프록시 설정법' 강의 보고 있습니다. 자세히 설명해주셔서 감사합니다. (저는 생초보인데도 이정도면 잘따라하는거 같아요) 다만 Nginx Proxy Manager - SSL Certificates 메뉴를 누르는 부분 (강의 11:30) 이 홈페이지 UI 가 바뀐것 같습니다 (아니면 제 설정값 예를들면 docker-compose.yml 내용같은? 것이 변하면 저 UI가 바뀔수 있나요?) SSL Certificates -> Certificates 로 메뉴가 변경된것 같고 "Add SSL Certificate" 분홍색 버튼이 없고 아래 스크린샷 처럼 나옵니다. 변경된 UI 에 대해서 설명을 한번 확인해주실 수 있나요? 복잡한 내용을 간략하게 지름길만 설명해주셔서 감사합니다.
안녕하십니까 선생님, 35번 강의에서 /etc/nginx/conf.d/default.conf 이 경로에 default.conf 파일이 존재하지 않습니다. Certbot, HTTPS 인증서는 모두 정상적으로 받았습니다. 강의 놓친 부분은 없는데 어디서 문제인 지 모르겠습니다..
강의 진행을 위해 처음으로 AWS에 e2를 등록하고 진행 중인데요. 이 강의를 따라 도메인 구매를 진행하려 하니까. 실패했는데 아무래도 최소 한 번의 결제 내역이 필요한 것 같습니다. (당시 제가 aws에 문의하여 받은 답변은 이렇습니다 " 본 계정은 비교적 최근 생성된 계정으로 도메인 등록을 위해 지속적인 AWS 서비스 사용을 통한 안정적이고 충분한 결제 내역이 필요합니다. AWS 사용 이력이 더욱 쌓이면 고객님의 필요사항을 재검토할 수 있습니다." ) 한달 지나서 e2에 대한 결제가 이뤄지니까. 도메인 구매에 성공했는데 비슷한 문제가 있으신 분들 참고하면 좋을 것 같습니다.
안녕하세요. 제가 집에서 Nginx 성능 테스트를 진행해보았습니다. 먼저, Windows 환경(로컬 컴퓨터) 에서 직접 Nginx를 설치 후 실행했고, WSL2 환경(리눅스 커널 기반) 위에서도 Nginx를 설치해 실행해보았습니다. 그런데 ChatGPT에 문의해보니, Nginx의 sendfile() 을 통한 커널 레벨 zero-copy 최적화 를 제대로 체감하려면 Windows가 아닌 리눅스 환경 에서 실행해야 한다고 하더군요. Windows 커널에서는 해당 기능을 완전히 지원하지 않는다고 합니다. 또한, WSL2 위에서 Nginx를 실행하고 Windows 브라우저로 접속할 경우 , WSL2(리눅스 커널)와 Windows(호스트 OS) 간 통신 과정에서 지연이 발생할 수 있다는 설명도 들었습니다. 그래서 “그럼 도커를 쓰면 되나?” 싶어서 예전에 구매했던 강사님의 Docker 강의를 참고하려고 했습니다. 마침 강의 내용 중 Nginx 설치 및 설정 실습 파트 가 있어서 그대로 따라보려 했는데요, ChatGPT의 설명에 따르면 Docker도 결국 WSL2 위에서 동작 한다고 합니다. 즉, WSL2에서 직접 실행하는 것보다는 최적화되어 있지만, Windows 브라우저에서 요청을 보낼 때는 여전히 변환 과정이 존재 해서 원하는 수준의 “커널 레벨 I/O 성능 비교”를 얻기는 어렵다는 답변을 받았습니다. 제가 확인하고 싶은 부분은 단순히 Tomcat과 Nginx 간의 정적 콘텐츠 처리 성능 차이 입니다. (참고로, Nginx는 이벤트 드리븐 I/O 모델(epoll 등)을 기반으로 동작하며, 리눅스에서는 sendfile() 시스템 콜을 통해 커널 수준에서 파일을 소켓으로 직접 전송하는 zero-copy 최적화를 지원한다고 합니다. 이 기능은 리눅스 커널에서 가장 효율적으로 동작하며, Windows 환경에서는 동일한 수준의 최적화가 적용되지 않는다고 합니다. ChatGPT를 통해 얻은 정보이며, 이 부분을 실제로 테스트해보고 싶었습니다.) 그래서 궁금한 점이 있습니다. 👉 이러한 sendfile() 기반 zero-copy 최적화를 직접 체감하려면, 강사님께서 강의에서 보여주신 것처럼 AWS 리눅스 서버(EC2) 위에서 Nginx를 띄워 테스트하는 것이 가장 정확한 방법일까요? 즉, Windows나 WSL2 환경이 아닌, AWS 리눅스 환경에서 Nginx를 실행해야만 커널 수준 I/O 성능을 정확히 확인할 수 있는지 궁금합니다 ㅠㅠㅠㅠ Nginx에 대해 공부해보고 싶은데 환경 세팅부터 막히니까 조금 답답합니다.. ㅠㅠ ㅠㅠ ㅠㅠ
안녕하세요, Nginx 성능 테스트를 진행 중인데 궁금한 점이 있어 질문드립니다. 현재 아래 두 가지 환경에서 정적 콘텐츠 처리 성능 비교 실험을 진행 중입니다. (Tomcat이라고 표현한 것은 Spring Boot 내부 톰캣을 의미합니다!) Windows 환경 : 로컬에 Tomcat과 Nginx 모두 설치 후 실행 WSL2 환경 : WSL2에 Nginx 설치, 로컬(Windows)에 Tomcat 설치 저는 당연히 Nginx의 특성(이벤트 드리븐 구조, 커널 수준 I/O 등) 덕분에 Nginx가 Tomcat보다 정적 콘텐츠 처리 속도가 빠를 것이라 예상했습니다. 하지만 실제로는 Tomcat 단독 과 Nginx + Tomcat 조합 간의 성능 차이가 거의 없었습니다. 또한 WSL2에서 실행한 경우 로컬보다 성능이 더 떨어지는 결과 가 나왔습니다. 이후 원인을 분석해보니 다음과 같은 문제점이 있었습니다. 로컬 vs WSL2 비교 자체가 부적절 했습니다. 비교를 하려면 동일한 환경(예: Docker 컨테이너, VirtualBox, AWS EC2 등) 위에서 실행해야 유의미할 것 같습니다. Windows에서의 Nginx 성능 한계 를 간과했습니다. Windows에서는 Nginx가 리눅스처럼 sendfile() 등의 커널 레벨 통신 최적화를 제대로 활용하지 못한다고 합니다. 이 때문에 Nginx의 주요 성능 이점을 살리지 못한 것으로 보입니다. 제가 궁금한 점은 다음과 같습니다. Nginx와 Tomcat 간 정적 콘텐츠 처리 속도 차이 를 제대로 비교하려면 어떤 환경 구성이 적절할까요? 이후에는 단순한 정적 처리 속도뿐 아니라, 정적/동적 서버 분리 구조 vs 통합 구조 간의 대규모 트래픽 처리 성능 차이 도 테스트하고 싶습니다. 마지막으로, HTTPS(SSL 인증서) 적용 시 성능 차이 도 함께 측정해보고 싶습니다. 혹시 다른 분들은 회사가 아닌, 개인적으로 이런 성능 테스트를 하실 때, 어떤 환경(예: Docker, EC2, VM 등)에서 비교를 진행하시는지 조언을 부탁드립니다 🙏
누구보다 빠르게 배우는 Nginx + Docker + Springboot 서버 무중단 배포
노션 강의자료에서는 # 2. 앱 JAR 파일 복사 COPY *.jar app.jar 이렇게 되어 있는데 강의 영상에서는 COPY build/libs/*.jar app.jar 로 되어 있습니다. 강의 영상이 맞는거 같고, 아무 생각 없이 노션 자료로 복붙하다가 안되서, 둘을 자세히 비교해보니 빌드된 jar 파일 경로를 제대로 명시되지 않은 걸 발견했어요. 노션 파일 수정 부탁드려용
누구보다 빠르게 배우는 Nginx + Docker + Springboot 서버 무중단 배포
안녕하세요 무중단 배포 해보려고 강의 열심히 듣고 있는 수강생입니다. 저는 보통 업데이트 엔드포인트 제공할 때, PUT으로만 구현합니다. PATCH를 제공하면, 받아야할 값들이 null인지 아닌지를 다 따지느라 번거롭더라고요. 지식공유자께서는 실무에서도 PUT 보다는 PATCH를 더 많이 사용하시는지 궁금하네요.