NGINX 로 훌륭한 대규모 앱 제공하기
오늘날의 비즈니스는 이전에 경험하지 못한 규모의 혼란과 기회에 직면해 있습니다. 개발자와 기술 전문가로서 우리는 이 폭풍의 중심에 서 있습니다. 최고의 개발팀이 다른 팀과 차별화되는 점은 혁신과 적응력을 갖추고 경쟁사보다 빠르게 새로운 제품과 경험을 구축하고 제공할 수 있는 능력입니다. NGINX 를 사용하면 이를 경험하실 수 있습니다.

“훌륭한 애플리케이션을 구축하는 것은 전투의 절반에 불과합니다. 훌륭한 애플리케이션을 제공하는 것이 나머지 절반입니다.”
아무리 정교하고 기능적이며 아름다운 애플리케이션이라도 실제 사용자들에게 제대로 작동하지 않는다면 성공하지 못한 것입니다.
목차
1. 애플리케이션을 제공하는 것이 왜 그렇게 어려운가요?
2. 내 애플리케이션을 프로덕션 준비 상태로 만들려면 어떻게 해야 할까?
3. NGINX와 NGINX Plus는 어떻게 도움이 되나요?
4. 다음 단계는 무엇인가요?
5. 마지막으로, 미래를 위한 NGINX를 사용한 애플리케이션 혁신
1. 애플리케이션을 제공하는 것이 왜 그렇게 어려운가요?
실제 배포에서는 애플리케이션이 개발 단계에서 경험하지 못한 스트레스와 부담을 받게 됩니다:
- 느린 클라이언트 트래픽은 서버 리소스를 묶어두고 실험실에서 측정하기 매우 어려운 방식으로 성능에 영향을 미칩니다.
- 예측할 수 없는 트래픽 급증은 애플리케이션 플랫폼을 압도할 수 있습니다.
- 검색 엔진, 화면 스크래핑, 공격 트래픽은 리소스를 제어할 수 없을 정도로 소모하고 민감한 데이터를 유출할 수 있습니다.
- 여러 네트워크 유형에 걸친 클라이언트 유형은 애플리케이션 스택을 최적화하려는 시도를 무력화할 수 있습니다.
- 최신 가속 및 보안 프로세스가 애플리케이션 프레임워크에서 제대로 지원되지 않을 수 있습니다.
Ruby-on-Rails, Grails, Python/Django, 심지어 J2EE와 같은 최신 애플리케이션 플랫폼은 성능이나 확장성이 아닌 개발자의 생산성을 최우선으로 고려하여 설계되었습니다. 프로덕션 환경에서 발생할 트래픽 폭주에 대비하여 애플리케이션을 강화하고 준비하려면 어떻게 해야 할까요?
2. 내 애플리케이션을 프로덕션 준비 상태로 만들려면 어떻게 해야 할까?
애플리케이션을 프로덕션 준비 상태로 만들기 위해 취할 수 있는 모범 사례와 단계는 매우 많습니다. caching, load balancing, HTTP optimizations, request scrubbing, compression and encryption과 같은 offload 작업 등은 모두 성능, 복원력 및 제어를 개선하는 데 기여합니다:
- Caching – 애플리케이션 부하를 줄이고 최종 사용자에게 콘텐츠를 더 빠르게 전송합니다.
- Load balancing – 애플리케이션 인스턴스 간에 트래픽을 분산하여 성능을 최적화하고 서버의 장애 또는 성능 저하를 방지합니다.
- HTTP optimizations – 느린 클라이언트 트래픽을 빠른 로컬 트랜잭션으로 변환하여 애플리케이션이 벤치마크에서와 같이 최고 효율로 작동하도록 합니다.
- Request scrubbing – 트래픽을 정리하고 잘못된 요청이 애플리케이션에 영향을 미치기 전에 삭제합니다.
- Compression and encryption offload – 애플리케이션 서버의 작업을 덜어주어 애플리케이션 서버가 가장 잘하는 일, 즉 애플리케이션 실행에 집중할 수 있도록 합니다.
NGINX와 NGINX Plus는 이러한 모범 사례 기능을 단일 웹 가속 및 애플리케이션 전송 플랫폼으로 산업화합니다. 1억 3천만 개가 넘는 웹사이트의 트래픽이 가장 먼저 접속하는 소프트웨어가 바로 NGINX입니다. 인터넷에서 가장 바쁜 10,000개 사이트 중 40% 이상이 웹 애플리케이션을 전송하는 데 NGINX를 사용합니다.
3. NGINX 와 NGINX Plus는 어떻게 도움이 되나요?
NGINX는 인프라 앞에 웹 가속기 및 웹 서버로 배포되는 가볍고 안정성이 뛰어난 리버스 프록시이며, NGINX Plus는 보다 정교한 로드 밸런싱, 애플리케이션 전송 및 모니터링 기능으로 이를 확장합니다. 10년 이상 프로덕션 배포를 통해 입증되었으며, 확장성이 뛰어나고(최소한의 메모리와 CPU 사용), 매우 빠릅니다. 다음과 같은 이유로 사용자 트래픽의 첫 번째 계층으로 배포되는 경우가 많습니다:
- 고성능 SSL 및 SPDY termination – 현존하는 가장 진보된 SSL 프록시 중 하나이자 SPDY 트래픽에 가장 널리 사용되는 서버입니다. 애플리케이션 스택에서 SSL 및 SPDY를 offload하여 성능을 개선하고 더 많은 기능을 제공하세요. (현재 SPDY는 Google에서 더 이상 지원하지 않습니다.)
- 여러 애플리케이션을 위한 단일 진입점 – 외부 클라이언트로부터 내부 애플리케이션 인프라를 숨기면서 여러 웹 애플리케이션으로 트래픽(HTTP, WebSocket, Tcp-based protocols)을 종료하고 라우팅합니다. 구성 언어를 통해 애플리케이션(호스트 헤더) 및 URL 별로 트래픽을 분류하는 구조화된 형식으로 요청 라우팅을 쉽게 할 수 있습니다.
- Load balancing, visibility, health check – 로드 밸런싱 정책, 성능 측정, health check를 통해 들어오는 트래픽을 여러 애플리케이션 인스턴스에 균등하게 분산합니다. 결과적으로 장애가 발생하거나 성능이 저하된 서버로부터 트래픽을 분산시켜 애플리케이션 성능을 최적화할 수 있습니다.
- Caching – 확장성이 뛰어난 하이브리드 디스크 및 메모리 저장소를 HTTP 캐싱에 사용합니다. 캐시는 중복 요청을 처리하여 애플리케이션의 부하를 줄이고, 이러한 요청에 직접 응답하여 최종 사용자에게 전송 속도를 높입니다. 뉴스 피드나 블로그처럼 빠르게 변화하는 애플리케이션의 경우에도 한 번에 몇 초씩 캐싱(마이크로캐싱)하면 엄청난 성능 개선 효과를 거둘 수 있습니다.
- 정적 콘텐츠 offload – 정적 콘텐츠를 NGINX 또는 NGINX Plus 프론트엔드로 이동하여 직접 제공합니다. 단순한 가속 프록시가 아니라 본격적인 웹 서버이기도 합니다. 콘텐츠가 로컬에 있는지 추측성 검사(try_files 지시문)를 수행하고 그렇지 않은 경우 요청을 업스트림 서버로 배포할 수 있습니다.
- HTTP optimizations – NGINX 및 NGINX Plus는 HTTP 요청을 업그레이드하고 지속적인(keepalive) HTTP 연결의 동적 풀을 유지합니다. 최적화는 필요한 최소한의 서버 리소스를 사용하도록 신중하게 크기가 조정되므로 성능이 향상되고 트래픽 급증에 대한 복원력이 향상됩니다.

NGINX 및 NGINX Plus는 거칠고 예측할 수 없는 인터넷 트래픽으로부터 애플리케이션을 보호하는 충격 흡수 장치로 간주할 수 있으며, 애플리케이션의 최상의 성능을 발휘할 수 있도록 부드러운 사용 환경을 제공합니다.
4. 다음 단계는 무엇인가요?
NGINX Plus는 애플리케이션을 강화하여 프로덕션 트래픽에 대비하는 데만 도움이 되는 것이 아닙니다. 애플리케이션을 하나의 개발 인스턴스에서 여러 프로덕션 인스턴스로 확장할 때 NGINX Plus는 제어할 수 있는 하나의 지속적인 요소입니다.
“컴퓨터 과학의 모든 문제는 다른 차원의 간접적 방법으로 해결할 수 있습니다.”
– David Wheeler, FRS –
위키피디아에서는 지시문을 “값 자체 대신 이름, 참조 또는 컨테이너를 사용하여 무언가를 참조하는 기능”으로 정의합니다.

NGINX Plus를 사용하면 사용자가 애플리케이션 인스턴스를 직접 참조하지 않고 NGINX Plus를 통해 참조합니다. NGINX Plus는 사용자에게 제어권을 부여하는 수준의 간접 지시입니다:
- 더 빠른 배포 – 애플리케이션을 프로비저닝한 라우팅 규칙(및 인증 옵션)을 NGINX Plus 트래픽 관리 계층에 추가하지만 하면 애플리케이션을 사용할 수 있게 하고 트래픽 모니터링을 시작할 수 있습니다.
- 정교한 요청 라우팅 – 단순한 로드 밸런싱 장치만으로는 충분하지 않은 경우, NGINX Plus의 고급 로드 밸런싱, 세션 지속성 및 health check를 통해 트래픽이 라우팅되는 위치를 완벽하게 제어할 수 있습니다.
- A/B 테스트 – NGINX Plus의 split_clients 지시문을 사용하여 대체 애플리케이션 버전을 안전하게 테스트하고, 일부 사용자를 새 버전으로 이동시켜 나란히 테스트할 수 있습니다.
- 원활한 애플리케이션 업그레이드 – 애플리케이션의 새 인스턴스를 배포할 때, 서비스 중단이나 트래픽 손실 없이 세션이 완료됨에 따라 사용자를 점진적으로 이동할 수 있도록 NGINX Plus를 사용할 수 있습니다.
- 서버 서비스 중단 – 업스트림 그룹에서 제거하려는 애플리케이션 인스턴스에 대한 새 요청 전송을 중지하고 기존 세션은 완료하도록 NGINX Plus에 지시할 수 있습니다. 이를 ‘draining‘이라고 하며, 사용자 세션을 중단하거나 영향을 주지 않고 서버를 중단할 수 있는 안전한 방법을 제공합니다.
NGINX Plus는 신뢰할 수 있는 게이트키퍼(Gatekeeper)로서 애플리케이션에 허용하는 트래픽, 속도 제한(Rate Limit), 인증 및 보안 방법, 트래픽 라우팅 위치를 완벽하게 제어할 수 있습니다.
5. 마지막으로, 미래를 위한 NGINX 를 사용한 애플리케이션 혁신
조직은 복잡한 애플리케이션 변경을 헤쳐 나가고 있습니다. 비용보다는 전송 속도를 최적화하려는 열망으로 인해 개발팀이 최신 웹 애플리케이션을 구축하는 방식이 크게 변화하고 있습니다.
“Nordstrom은 IT 비용 최적화에서 제공 속도 최적화로 전환했습니다.”
– Courtney Kissler, VP of ecommerce and store technologies –
애플리케이션 인프라와 개발 프로세스는 큰 격변을 겪게 될 것입니다. big‑bang waterfall‑driven 릴리스 대신 지속적 배포(CD)와 DevOps를 도입하면 프로세스가 달라집니다. 모놀리식 웹 애플리케이션 대신 마이크로서비스를 도입하면 아키텍처가 바뀔 것입니다. 조직이 클라우드 기반 서비스형 플랫폼을 채택하고 온프레미스 소프트웨어 및 하드웨어 인프라에 대한 의존성을 줄이면 배포 방식이 바뀔 것입니다.
이러한 지속적인 격변에 직면하여 일관된 고품질 애플리케이션을 제공해야 합니다. NGINX Plus는 믿을 수 없는 한 가지 상수입니다. 애플리케이션을 배포하는 위치나 선택한 언어 및 플랫폼에 관계없이 “백그라운드”에서 어떤 일이 발생하는 NGINX Plus는 여러분과 수백만 명의 다른 개발자가 의존하고 있는 일관되고 안정적인 고성능 애플리케이션 전송 플랫폼입니다.
훌륭한 애플리케이션 구축을 NGINX가 제공합니다.
지금 바로 NGINX Plus 30일 무료 체험판을 시작하거나 NGINX STORE에 문의하여 사용 사례에 대해 논의하세요.
NGINX에 대한 최신 정보들을 빠르게 전달받고 싶으시다면, 아래의 뉴스레터를 구독하세요.
댓글을 달려면 로그인해야 합니다.