Team Internet, AWS에서 NGINX Plus 채택
Team Internet 은 온라인 광고 분야의 선도적인 서비스 제공업체입니다.
이 회사는 광고주에게는 높은 가치의 타겟 트래픽을, 인터넷 사용자에게는 관련성 있고 유용한 콘텐츠를 제공하기 위해 광고주와 온라인 게시자를 매칭하는 다양한 광고 유형을 제공합니다.
목차
1. Team Internet 의 도전과제
1-1. NGINX 오픈소스에서의 Health Checks
2. 해결책 – NGINX Plus
3. NGINX Plus를 채택한 Team Internet
3-1. On-the-Fly 재구성을 사용한 Auto Scaling
3-2. Built-In Application Health Checks를 통한 시간 절약
3-3. 빠른 시간 내에 실행 가능한 Team Internet 프로세스
3-4. Team Internet에 뛰어난 Performance 제공
1. Team Internet 의 도전과제
Team Internet 의 제품 중 하나인 TONIC은 광고주가 관련성이 높은 트래픽을 웹사이트로 유도할 수 있는 트래픽 마켓플레이스입니다.
광고주는 광고의 관련성을 극대화하기 위해 다양한 세부 타겟팅 옵션을 설정할 수 있습니다.
복잡하지만 입찰부터 광고 게재까지 전체 프로세스가 100~200밀리초 내에 이루어져야 합니다.
Team Internet 의 고객인 광고주와 인터넷 사용자 모두를 만족시키기 위해서는 플랫폼의 성능이 매우 중요합니다.
“저희는 지연 시간에 매우, 매우 민감합니다. 요청에 매우 빠르게 응답해야 하며, 초당 25,000건 이상의 요청을 받는 경우가 많습니다. 각각의 요청에 100~200밀리초 이내에 응답해야 합니다. 저희에게는 모든 밀리초가 중요합니다.”
– Markus Ostertag, Team Internet 개발 책임자
1-1. NGINX 오픈소스에서의 Health Checks
Team Internet 은 AWS에서 호스팅되는 오픈소스 NGINX를 사용하여 TONIC의 트래픽을 관리하기 시작했습니다.
몇 년 동안 이 방식은 잘 작동했습니다. 팀은 자체 오픈소스 NGINX 소프트웨어와 Health Check를 위한 별도의 타사 플러그인을 컴파일하고 패키징했습니다.
하지만 오픈소스 NGINX의 맞춤형 버전을 컴파일하는 데 시간이 많이 소요되었습니다.
게다가 기존에 사용하던 타사 플러그인은 최신 버전의 NGINX에서 사용할 수 없었습니다.
가장 안전한 최신 버전의 오픈소스 NGINX로 업그레이드하고 싶었지만, 컴파일 중이던 타사 상태 확인 플러그인에는 사용할 수 있는 패치가 없었습니다.
직접 패치를 작성할 수도 있었지만 많은 작업이 필요하고 비용이 들며 자체 패치로 인해 잠재적인 보안 문제가 발생할 위험이 있습니다.
NGINX에서 근무하는 엔지니어에게 테스트 및 패키징하고 Health Check 기능이 내장되어 있으며 자체 오픈소스 배포를 만들고 유지 관리 해달라고 요청하는 것보다 NGINX Plus를 채택하는 비용적으로 저렴한 방법이 있었습니다. 라고 Ostertag는 설명합니다.
거의 동시에 TONIC 플랫폼의 채택이 증가하고 있었습니다.
새로운 게시자를 온보딩하면 몇 분 안에 초당 수천 건의 요청이 트래픽 부하에 추가될 수 있으며, 때로는 백엔드 서버 용량을 갑자기 늘려야 할 수도 있습니다.
필요한 유연성을 확보하기 위해 Team Internet 은 나머지 인프라와 함께 NGINX 인스턴스를 자동 확장할 수 있어야 했습니다.
“실행 중인 NGINX 로드 밸런서의 수를 늘리고 Auto Scaling해야 하는 시점에 이르렀습니다.
Auto Scaling을 위해서는 백엔드 서버를 추가하고 제거할 수 있는 중앙 집중식 방법이 필요했습니다.
전체 nginx 프로세스를 재시작하거나 reload할 필요 없이 이 작업을 수행할 수 있는 방법을 찾으려고 노력했습니다.
그러던 중 손쉽게 Auto Scaling하고 목표를 달성하는 데 도움이 되는 NGINX Plus의 DNS Service Discovery 기능을 우연히 발견하고 더 자세히 살펴보기로 결정했습니다.” 라고 Ostertag는 설명합니다.
2. 해결책 – NGINX Plus
Team Internet 은 NGINX Plus의 30일 무료 평가판을 시작했습니다.
NGINX Plus는 배포하기 쉬운 하나의 소프트웨어 패키지에 상태 확인, 자동 확장 지원, 추가 엔터프라이즈 지원 기능을 모두 갖춘 완벽한 애플리케이션 전송 플랫폼입니다.
Team Internet 은 새로운 AMI(Amazon 머신 이미지)를 생성하고 오픈소스 인스턴스와 함께 두 개의 NGINX Plus 인스턴스를 병렬로 실행했습니다.
단 며칠 만에 AWS에 배포된 NGINX Plus는 오픈소스 NGINX를 기반으로 하는 기존 아키텍처보다 더 많은 요청을 더 효율적으로 처리했습니다.
“우리에게 필요한 기능이 이미 깔끔하게 패키징되어 있고, 백엔드에 대한 상태 확인을 더 잘 수행할 수 있으며, 쉽게 자동 확장할 수 있고, 성능이 더 뛰어나다는 점의 조합은 강력했습니다. 이러한 기능 덕분에 CTO가 NGINX Plus를 구매하도록 설득하는 데 도움이 되었습니다.”
– Markus Ostertag, Team Internet 개발 책임자
현재 Team Internet 은 NGINX Plus를 Amazon Elastic Load Balancer(ELB), Datadog, AWS Lambda와 함께 사용하여 Node.js 애플리케이션을 자동 확장하고 제공합니다.
개발팀은 NGINX Plus 서버를 ELB에 연결된 자동 확장 그룹으로 설정했습니다. 트래픽이 급증하면 ELB가 이를 감지하고 추가 부하를 처리하기 위해 새로운 NGINX Plus 인스턴스를 자동으로 불러옵니다.
트래픽 급증이 줄어들면 추가 인스턴스가 종료되어 Team Internet의 비용을 절약할 수 있습니다.
또한 NGINX Plus는 확장 상태 API를 통해 트래픽 흐름에 대한 정보를 제공하여 백엔드 인스턴스를 확장 및 축소할 시기를 결정하는 데 도움을 줍니다.
확장 상태 API는 백엔드 인스턴스의 성능에 대한 다양한 메트릭을 제공합니다.
Team Internet 은 NGINX팀에서 제공한 사전 구축된 플러그인을 사용하여 이 데이터를 Datadog에 공급합니다.
트래픽 부하가 특정 임계값을 초과하면 알림이 트리거되고 트래픽을 처리하기 위해 추가 Node.js 서버가 시작됩니다.
NGINX Plus Tier와 마찬가지로 트래픽 수준이 줄어들면 추가 인스턴스가 정상적으로 제거되어 비용을 절감할 수 있습니다.
3. NGINX Plus를 채택한 Team Internet
3-1. 동적 재구성을 사용한 Auto Scaling
트래픽 흐름이 매일 크게 달라질 수 있기 때문에 Auto Scaling 기능은 Team Internet의 비즈니스에 필수적입니다.
NGINX Plus로 업그레이드하고 동적 재구성 기능을 활용하면 부하 분산 서버 그룹에서 백엔드 인스턴스를 동적으로 추가 및 제거할 수 있습니다.
특히, Team Internet은 DNS A 레코드의 정보를 사용하여 업스트림 서버 그룹의 구성을 변경합니다.
개발팀은 NGINX Plus 구성을 직접 수정하지 않고도 업스트림 그룹의 서버를 관리할 수 있으므로 수동 개입 없이 쉽게 자동 확장할 수 있다는 이점이 있습니다. 무엇보다도 NGINX Plus로 Auto Scaling 인프라를 설정하는 데 단 2시간의 작업 시간밖에 걸리지 않았습니다.
“NGINX Plus의 동적 재구성 기능은 우리에게 정말 큰 도움이 됩니다. 비즈니스를 지원하기 위해 로드 밸런싱 레이어에서 원하는 유연성을 확보할 수 있게 해줍니다.”라고 Ostertag는 말합니다.
3-2. Built-In Application Health Checks를 통한 시간 절약
NGINX Plus를 통해 Team Internet은 내장된 지능형 애플리케이션 Health Checks 기능을 활용할 수 있습니다.
Health Checks 기능이 내장되어 있어 Team Internet 의 시간을 절약할 수 있을 뿐만 아니라, NGINX Plus의 Health Checks 기능은 과거에 사용했던 오픈소스 Health Checks 패키지보다 훨씬 더 잘 작동합니다.
“NGINX Plus를 사용하면 소스에서 자체 NGINX 버전을 컴파일하는 번거로움이 없습니다. 시간이 많이 걸리고 누군가는 이를 관리해야 하죠. 저희는 운영 overhead를 매우 낮게 유지하려고 노력합니다.
NGINX Plus를 사용하면 필요한 모든 기능이 내장된 완전한 기능을 갖춘 제품과 NGINX 전문가의 경험과 지원을 받을 수 있기 때문에 더 이상 NGINX를 구축하고 사용자 지정하는 데 시간과 리소스를 들이지 않아도 됩니다.”
라고 Team Internet 의 Ostertag는 말합니다.
3-3. 빠른 시간 내에 실행 가능한 Team Internet 프로세스
Team Internet 의 개발자들은 NGINX Plus로 전환할 때 AWS 배포에 대한 완전한 제어를 원했기 때문에 사전 구축된 NGINX Plus AMI를 사용하는 대신 자체 AMI에 NGINX Plus를 설치했습니다. 그럼에도 불구하고 전체 프로세스는 6시간도 채 걸리지 않았습니다.
“새로운 AMI를 생성하고 설치하는 데 몇 시간이 걸렸습니다. NGINX 팀에서 설치 방법에 대한 훌륭한 설명서를 제공했기 때문에 매우 쉬웠습니다.
지침에 따라 직접 AMI를 시작했더니 이전 설정보다 훨씬 더 나은 성능으로 바로 작동했습니다.
테스트 기간이 끝나고 평가판 라이선스에서 정식 NGINX Plus 라이선스로 전환한 다음 Auto Scaling 그룹을 설정하는 데 두어 시간이 더 걸렸습니다.
따라서 NGINX Plus를 사용한 새 AMI, 새 구성, 새 라이선스, 자동 확장 등 모든 것을 전환하는 데 총 4~6시간이 걸리지 않았습니다.” 라고 Ostertag는 설명합니다.
3-4. Team Internet 에 뛰어난 Performance 제공
TONIC 플랫폼은 15,000개 이상의 내부 광고주에게 트래픽을 판매하는 30개 이상의 퍼블리셔가 함께 100,000개 이상의 캠페인을 실행하고 수백만 개의 다양한 입찰을 집행합니다.
이를 위해서는 수많은 서버 간 호출과 데이터베이스 요청이 필요합니다. Team Internet 은 NGINX Plus를 사용하면서 이전보다 서버당 더 많은 요청을 처리할 수 있게 되었습니다.
“NGINX Plus의 성능에 만족하고 있습니다. NGINX Plus가 무거운 작업을 대신 처리해주기 때문에 새로운 기능 개발, 시스템 모니터링, 경쟁사보다 더 나은 성능을 지속적으로 개선할 수 있는 방법을 찾는 등 비즈니스의 다른 부분에 집중할 수 있습니다.”
Team Internet 의 NGINX Plus 사용 사례와 같이 Application Health Checks, Auto Scaling 확장이 필요하시다면 NGINX Plus의 30일 무료 체험판으로 시작해보세요.
NGINX STORE에 문의하여 다양한 사용 사례에 대해 상담 받아볼 수 있습니다.