본문 바로가기
728x90

nginx7

Rolling deployment를 위한 nginx 설정 프로젝트를 진행하면서 무중단 배포를 적용하기 위해 이리저리 찾아보면서 Nginx를 활용해 로드밸런싱을 해야 한다는 것을 알게 되었다. 그리고 이번 프로젝트에 적용하기 가장 적합해 보이는 Rolling 배포 방식을 간단히 구현해 보았다. 현재 AWS EC2를 사용 중이기 때문에 Blue-green을 사용할 거면 인스턴스를 종료하고 시작하는 방법이 필요하다. 이 부분을 자동화시키고 싶어서 AWS 람다를 고려했으나 람다 권한이 없어서 적용하지 못했다. 결국 추가 인스턴스가 필요 없는 Rolling이 가장 적합하다 판단했다. 간단한 서버 세팅 Nginx 설정이 중점이므로 express로 정말 간단한 서버 두대만 띄웠다. 코드는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .. 2022. 10. 3.
[번역] Thread Pools in NGINX Boost Performance 9x! Nginx가 비동기, 이벤트 드리븐을 사용한다. 따라서 전통적인 서버 아키텍처처럼 매 요청마다 그에 상응하는 프로세스나 스레드를 생성하는 대신 여러 커넥션과 요청들을 하나의 워커 프로세스에서 처리한다. 이런 동작 과정을 위해 Nginx는 non-blocking 형태의 소켓과 epoll, kqueue와 같은 효율적인 방법을 사용한다. Nginx는 프로세스 갯수가 적고 정적이기 떄문에 메모리 낭비가 적고 CPU 주기가 컨텍스트 스위칭으로 낭비되지 않는다. 이러한 접근법의 이점은 Nginx로 증명되었다. Nginx는 수백만개의 동시 요청과 스케일을 무리없이 감당한다. 하지만 비동기, 이벤트 드리븐 방식도 문제가 존재한다. 바로 blocking이다. 안타깝게도 많은 서드파티 모듈들은 blocking call을 .. 2022. 8. 14.
[번역]Inside NGINX: How We Designed for Performance & Scale Nginx는 설계 방식 덕분에 우수한 웹 퍼포먼스를 보이고 있다. 수 많은 WS와 WAS가 스레드 또는 프로세스 기반 아키텍처를 사용하는 반면, nginx는 접속을 수백 수천개의 동시 접속으로 확장할 수 있는 정교한 event-driven 아키텍처를 사용하고 있다. Inside NGINX 는 고수준 프로세스 아키텍처부터 저수준으로 내려가면서 Nginx가 여러개의 커넥션을 싱글 프로세스로 처리하는 과정을 서술하고 있다. 이 글은 한발 더 나아가 더 디테일하게 Nginx의 동작 과정을 서술하려 한다. Setting the Scene - The NGINX Process Model Nginx의 설계를 이해하기 위해선 Nginx가 어떻게 동작하는지 알아야 한다. Nginx는 하나의 마스터 프로세스와 워커프로세스,.. 2022. 8. 11.
learning code refactoring production 2020년 1학기 부터 끌고온(?) 프로젝트가 드디어 끝났다. 정확히는 1학기때 끝냈으나 여름 방학때 리액트를 배우면서, docker, nginx를 배우면서 이 기술들을 적용해볼 프로젝트가 필요했고 1학기때 했던 프로젝트를 리팩토링해 프론트를 react로 하고 docker, nginx, https를 적용했다. 리팩토링을 하면서 배우게 된거는 다음 링크에 적어 두었다. https://iskull-dev.tistory.com/183?category=911357 learning code refactoring 올해 여름 방학때 리액트를 시작하고 리액트를 좀 더 숙련되게 사용하기 위해 시작한 프로젝트이다. 그런데 중간에 멋사 플잭으로 인해 도커, 쿠버네티스를 공부해야 하는 상황이 되었고 이 프 iskull-dev.. 2021. 11. 1.
728x90