MSA 트레이닝 센터

NGINX Unit 새로운 기능

이 트레이닝 영상에서는 NGINX Unit 프로젝트 팀이 우리의 범용 웹 앱 서버에서 조용히 진행해 온 내용을 업데이트합니다. NGINX Unit은 스택의 단일 구성 요소로 Static File을 제공하고, Backend로 Proxy하고, 애플리케이션 코드를 실행할 수 있습니다. 이 기조 연설에서 NGINX의 제품 관리 선임 이사인 Liam Crilly는 Unit의 새로운 기능에 대해 업데이트하고 NGINX와 Unit의 근본적인 차이점을 설명하며 Unit이 애플리케이션 스택을 단순화하는 방법을 보여줍니다.

NGINX Unit 새로운 기능

NGINX Unit은 현대 웹 애플리케이션 개발과 운영을 위해 설계된 범용 웹 애플리케이션 서버로, 단일 구성 요소로서 다양한 역할을 수행할 수 있는 강력한 도구입니다. 정적 파일을 고성능으로 제공하는 기능부터 백엔드 서비스로의 프록시 역할, 여러 언어로 작성된 애플리케이션 코드를 직접 실행할 수 있는 기능까지, NGINX Unit은 다재다능한 서버 역할을 수행합니다. 이 가이드에서는 최근 NGINX Unit 프로젝트에서 발표된 새로운 기능과 업데이트 사항을 중심으로, NGINX와 Unit의 차별화된 설계 철학 및 활용 방안을 심도 있게 살펴보겠습니다. 또한, NGINX Unit이 어떻게 복잡한 애플리케이션 스택을 간소화하고 개발 및 운영 효율성을 극대화할 수 있는지에 대해 구체적으로 설명합니다.

NGINX Unit의 개요와 주요 특징

단일 구성 요소로 다양한 역할 수행

NGINX Unit은 기존의 여러 서버 구성 요소를 하나로 통합하여, 다음과 같은 다양한 역할을 수행합니다:

  • 정적 파일 제공: 고속 콘텐츠 배포를 위한 정적 파일 서빙 기능이 내장되어 있으며, 별도의 정적 파일 서버를 구성할 필요가 없습니다.
  • 백엔드 프록시: HTTP 요청을 백엔드 서비스로 전달하는 기능을 통해 동적 애플리케이션과 정적 콘텐츠를 모두 지원합니다.
  • 애플리케이션 실행: 단일 서버에서 다중 언어로 작성된 애플리케이션을 직접 실행하여 추가적인 애플리케이션 서버 설정을 간소화합니다.

이 모든 역할을 NGINX Unit은 동적으로 관리할 수 있어, 기존의 서버 환경에서 필수적이었던 복잡한 설정 작업을 크게 줄입니다.

다중 언어 지원

NGINX Unit 은 다양한 언어와 런타임 환경을 기본적으로 지원하여, 팀 내에서 사용하는 언어와 도구에 제한을 두지 않습니다. 현재 지원되는 언어와 환경은 다음과 같습니다:

  • 인터프리터 기반 언어: Python, PHP, Perl, Ruby
  • 컴파일 언어: Go, Java, .NET Core
  • 자바스크립트 런타임: Node.js

이로 인해, 서로 다른 언어로 작성된 마이크로서비스를 동일한 플랫폼에서 실행하고 관리할 수 있는 유연성을 제공합니다.

NGINX와 NGINX Unit 의 근본적인 차이점

NGINX와 NGINX Unit 은 비슷한 이름을 공유하지만, 설계 철학과 사용 목적에서 명확히 구분됩니다. 아래 표는 이 두 제품의 차이점을 요약합니다:

NGINXNGINX Unit
주로 리버스 프록시와 로드 밸런싱에 사용애플리케이션 실행과 서버 역할을 모두 포함하는 범용 웹 서버
고정된 설정 파일로 구성 관리동적 JSON API를 통해 실시간으로 설정 변경 가능
특정 기능에 최적화된 구조멀티-롤(Server, Proxy, Application Server)을 통합한 구조

NGINX는 고성능 로드 밸런싱과 리버스 프록시를 중심으로 설계된 반면, NGINX Unit 은 개발과 운영 과정을 단순화하여 범용 애플리케이션 서버로의 역할을 수행하는 데 초점을 맞추고 있습니다

새로운 기능 업데이트

NGINX Unit의 최신 릴리스에서는 다음과 같은 주요 기능과 개선 사항이 추가되었습니다:

HTTP/3 및 QUIC 지원

  • NGINX Unit은 최신 HTTP 프로토콜인 HTTP/3와 QUIC을 지원하여 사용자 경험을 더욱 향상시킵니다.
  • 데이터를 더 빠르게 전송할 수 있으며, TLS 통합으로 보안성과 성능을 동시에 강화합니다.

고급 라우팅 기능

  • 요청의 헤더, 쿠키, 쿼리 파라미터와 같은 다양한 속성을 기반으로 세밀한 라우팅 규칙을 정의할 수 있습니다.
  • 이를 통해 복잡한 애플리케이션 워크플로를 단순하게 구성할 수 있으며, API 게이트웨이로서 활용도가 높아졌습니다.

JSON 기반 구성 API 개선

  • NGINX Unit은 기존 JSON API에 비해 더욱 유연하고 사용하기 쉬운 설정 인터페이스를 제공합니다.
  • 실시간 설정 변경이 가능하며, YAML 및 JSON 포맷을 모두 지원하여 설정 관리에서 발생하는 제약을 최소화했습니다.

NGINX Unit 이 애플리케이션 스택을 단순화하는 방법

통합 서버 아키텍처

기존의 애플리케이션 스택에서는 정적 파일 서버, 리버스 프록시, 애플리케이션 서버가 각각 별도의 구성 요소로 관리되었습니다. NGINX Unit은 이 모든 역할을 하나의 구성 요소로 통합하여, 개발 및 운영 과정에서 발생하는 복잡성을 효과적으로 제거합니다.

개발 환경 간소화

NGINX Unit은 모든 설정을 JSON API를 통해 동적으로 관리할 수 있어, 변경 사항을 즉시 적용할 수 있습니다. 이는 지속적 통합 및 배포(CI/CD) 파이프라인과의 통합을 단순화하여 개발자 경험을 크게 개선합니다.

유연한 배포 모델

NGINX Unit은 컨테이너 기반 환경에서 최적화되어 있으며, Kubernetes와 같은 오케스트레이션 플랫폼과 원활히 통합됩니다. 이를 통해 다양한 배포 모델을 지원하며, 확장성이 높은 애플리케이션 환경을 구축할 수 있습니다.

NGINX Unit 활용 사례 및 베스트 프랙티스

마이크로서비스 아키텍처에서의 활용

NGINX Unit 은 다중 언어로 작성된 마이크로서비스를 하나의 플랫폼에서 호스팅할 수 있어, 서비스 간 통합과 관리가 훨씬 용이해집니다.

단일 페이지 애플리케이션(SPA)

정적 파일 제공과 동적 API 백엔드 프록시 역할을 모두 수행할 수 있어, SPA 환경에서의 요청 처리 속도와 성능을 극대화합니다.

API Gateway로의 활용

고급 라우팅 기능과 통합적인 보안 설정을 통해 API 요청을 적절한 백엔드 서비스로 분배하며, 대규모 API 워크플로에서도 안정적입니다.

결론

NGINX Unit 새로운 기능

NGINX Unit 은 현대 웹 애플리케이션 스택의 복잡성을 효과적으로 줄이고, 개발 및 운영 환경의 효율성을 대폭 향상시키는 도구로 자리 잡고 있습니다. 새로운 기능과 개선 사항을 통해 NGINX Unit은 단순한 서버를 넘어 통합 애플리케이션 플랫폼으로 진화하고 있으며, 다양한 환경에서 그 진가를 발휘합니다. 조직의 요구 사항에 맞춰 NGINX Unit을 적절히 활용하여, 더욱 효율적이고 간소화된 애플리케이션 환경을 구축하세요.