바니시 (소프트웨어)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
바니시는 노르웨이 타블로이드 신문 '베르덴스 강'의 온라인 부서에서 시작된 HTTP 가속기 소프트웨어이다. 덴마크의 독립 컨설턴트 폴-헤닝 캄프가 아키텍트이자 수석 개발자이며, BSD 라이선스 하에 무료 및 오픈 소스로 배포된다. Varnish Configuration Language (VCL)를 사용하여 유연한 구성을 제공하며, 캐시 성능, 스레드, 백엔드 관련 지표를 모니터링할 수 있는 도구를 제공한다. 라운드 로빈 및 랜덤 디렉터를 통한 부하 분산, VMOD를 통한 플러그인 지원 등의 기능을 제공한다.
더 읽어볼만한 페이지
- 리버스 프록시 - Nginx
Nginx는 이고르 시소예프가 개발한 웹 서버 소프트웨어로, 높은 성능과 안정성을 바탕으로 웹 서버, 리버스 프록시, 로드 밸런서 등으로 활용되며 대규모 트래픽 처리에 강점을 보이지만, F5 Networks 인수 후 포크 프로젝트가 등장하기도 했다. - 리버스 프록시 - 아파치 HTTP 서버
아파치 HTTP 서버는 아파치 소프트웨어 재단에서 관리하는 오픈 소스 웹 서버 소프트웨어로, 다양한 운영체제 지원, 모듈을 통한 기능 확장, 가상 호스팅 등의 기능을 제공하며 전 세계적으로 널리 사용된다. - 자유 웹 서버 소프트웨어 - Nginx
Nginx는 이고르 시소예프가 개발한 웹 서버 소프트웨어로, 높은 성능과 안정성을 바탕으로 웹 서버, 리버스 프록시, 로드 밸런서 등으로 활용되며 대규모 트래픽 처리에 강점을 보이지만, F5 Networks 인수 후 포크 프로젝트가 등장하기도 했다. - 자유 웹 서버 소프트웨어 - 아파치 HTTP 서버
아파치 HTTP 서버는 아파치 소프트웨어 재단에서 관리하는 오픈 소스 웹 서버 소프트웨어로, 다양한 운영체제 지원, 모듈을 통한 기능 확장, 가상 호스팅 등의 기능을 제공하며 전 세계적으로 널리 사용된다. - 유닉스 네트워크 관련 소프트웨어 - Rlogin
rlogin은 네트워크를 통해 다른 서버에 로그인하는 응용 계층 프로토콜이자 명령어로, 보안 취약성으로 인해 SSH로 대체되고 있다. - 유닉스 네트워크 관련 소프트웨어 - 아파치 HTTP 서버
아파치 HTTP 서버는 아파치 소프트웨어 재단에서 관리하는 오픈 소스 웹 서버 소프트웨어로, 다양한 운영체제 지원, 모듈을 통한 기능 확장, 가상 호스팅 등의 기능을 제공하며 전 세계적으로 널리 사용된다.
| 바니시 (소프트웨어) - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발자 | 폴 헤닝 캄프, Redpill-Linpro, 바니시 소프트웨어 |
| 최신 버전 | 7.4.1 |
| 최신 버전 발표일 | 2024년 2월 20일 |
| 프로그래밍 언어 | C |
| 운영 체제 | BSD, Linux, Unix |
| 종류 | HTTP 가속기 |
| 라이선스 | two-clause BSD license |
| 유형 | 리버스 프록시 |
| 추가 정보 | |
| 영어 이름 | Varnish |
2. 역사
이 프로젝트는 노르웨이 타블로이드 신문 ''베르덴스 강''의 온라인 부서에서 시작되었다. 아키텍트이자 수석 개발자는 덴마크의 독립 컨설턴트 폴-헤닝 캄프(잘 알려진 FreeBSD 개발자)이며,[1] 관리, 인프라 및 추가 개발은 원래 노르웨이의 리눅스 컨설팅 회사인 린프로에서 제공했다. Varnish의 지원, 관리 및 개발은 나중에 별도의 회사인 Varnish Software로 분사되었다.
Varnish는 두 조항의 BSD 라이선스에 따라 사용 가능한 무료 및 오픈 소스 소프트웨어이다. 상업적 지원은 특히 Varnish Software에서 제공된다.
| 버전 | 출시일 |
|---|---|
| Varnish 1.0 | 2006년[2][3] |
| Varnish 2.0 | 2008년[4] |
| Varnish 3.0 | 2011년[5] |
| Varnish 4.0 | 2014년[6] |
| Varnish 5.0 | 2016년[7] |
| Varnish 6.0 | 2018년 3월[8] |
| Varnish 7.0 | 2021년 9월[9] |
바니시는 데이터를 가상 메모리에 저장하며, 메모리에 무엇을 저장하고 디스크로 페이징할지 결정하는 작업은 운영 체제에 맡긴다. 이는 운영 체제가 애플리케이션에 의해 데이터가 디스크로 이동되는 동안 데이터를 캐싱하기 시작하는 상황을 피하는 데 도움이 된다.
3. 아키텍처
바니시는 각 클라이언트 연결이 별도의 작업자 스레드에 의해 처리되도록 스레드를 광범위하게 사용한다. 활성 작업자 스레드 수에 대한 구성된 제한에 도달하면 들어오는 연결이 오버플로우 대기열에 배치되며, 이 대기열이 구성된 제한에 도달하면 들어오는 연결이 거부된다.
3. 1. Varnish Configuration Language (VCL)
Varnish의 주요 구성 메커니즘은 ''Varnish Configuration Language''(VCL)이며, 이는 각 요청 처리의 중요한 시점에 호출되는 훅을 작성하는 데 사용되는 도메인 특화 언어(DSL)이다. 대부분의 정책 결정은 VCL 코드에 맡겨져 Varnish를 다른 대부분의 HTTP 가속기보다 더 구성 가능하고 적응성이 뛰어나게 만든다. VCL 스크립트가 로드되면 C로 변환되어 시스템 컴파일러에 의해 공유 객체로 컴파일되고 가속기에 직접 로드되므로, 다시 시작하지 않고도 재구성할 수 있다.
3. 2. 런타임 매개변수
여러 런타임 매개변수는 최대 및 최소 작업자 스레드 수, 다양한 시간 초과 등을 제어한다. 명령줄 관리 인터페이스를 통해 가속기를 다시 시작하지 않고도 이러한 매개변수를 수정하고, 새 VCL 스크립트를 컴파일, 로드 및 활성화할 수 있다.
3. 3. 로그 데이터
바니시는 빠른 경로에서 시스템 호출 수를 최소화하기 위해 로그 데이터를 공유 메모리에 저장하며, 로그 데이터를 모니터링, 필터링, 형식 지정 및 디스크에 쓰는 작업은 별도의 애플리케이션에 위임한다.
4. 성능 지표
바니시 캐시는 정보 전달 속도를 수백 배 향상시킬 수 있다. 적절한 작동과 성능을 보장하기 위해 바니시는 다음과 같은 영역에서 모니터링할 수 있는 지표를 제공한다.[10]
- '''클라이언트 지표''': 클라이언트 연결 및 요청
- '''캐시 성능''': 캐시 적중, 제거
- '''스레드 지표''': 스레드 생성, 실패, 큐
- '''백엔드 지표''': 백엔드 연결의 성공, 실패 및 상태
5. 모니터링 도구
Varnish Cache는 모니터링 및 로깅 도구를 함께 제공한다. 가장 많이 사용되는 도구 중 하나는 varnishstat인데, Varnish의 현재 성능에 대한 자세한 정보를 제공하며, 캐시 적중 및 미스, 리소스 소비, 생성된 스레드 등과 같은 메모리 내 통계에 접근할 수 있다.[11]
5. 1. varnishstat
명령줄에서 `varnishstat`를 실행하면 사용 가능한 모든 Varnish 메트릭 목록이 지속적으로 업데이트되어 반환된다. `-1` 플래그를 추가하면 `varnishstat`는 목록을 한 번 인쇄한 후 종료된다.[12] `varnishstat`는 캐시의 상태를 점검하는 독립형 도구로 사용할 수 있다. 시간 경과에 따른 메트릭을 그래프로 표시하고, 인프라 전반의 다른 통계와 상관관계를 분석하며, 발생할 수 있는 문제에 대한 알림을 설정하기 위해 모니터링 서비스는 Varnish와 통합하여 `varnishstat` 메트릭을 수집할 수 있다.5. 2. varnishlog
Varnishlog는 Varnish의 설정을 디버깅하거나 튜닝하는 데 사용되는 도구로, 각 개별 요청에 대한 자세한 정보를 제공한다.6. 부하 분산
라운드 로빈과 랜덤 디렉터를 사용하여 부하 분산을 지원한다. 기본적인 백엔드 헬스(health) 검사도 사용할 수 있다.[19] 각 백엔드 가중치를 갖는 라운드 로빈 및 임의 디렉터 방식을 모두 사용하며, 백엔드에 대한 기본적인 상태 확인도 가능하다.[13]
7. 기타 기능
바니시 캐시는 다음과 같은 기능을 제공한다.
- VMOD라고도 하는 바니시 모듈을 통한 플러그인 지원[14]
- 압축된 ESI 조각을 함께 묶는 것을 포함한 엣지 사이드 인클루드 지원
- gzip 압축 및 압축 해제
- DNS, 랜덤, 해싱 및 클라이언트 IP 기반 디렉터
- HTTP 스트리밍 패스 & 페치
- LRU 제거 없이 지속적인 스토리지에 대한 실험적 지원
- 세인트[15] 및 그레이스[16][17] 모드
- 서버가 오작동하여 HTTP 상태 코드 500을 반환하는 경우 그레이스 모드는 만료 헤더를 무시하고 캐시된 버전을 계속 반환한다. 세인트 모드는 로드 밸런싱 시에 사용되며, 여기서 실패한 서버는 격리 기간 동안 차단되고 서버 풀에서 제외된다.
참조
[1]
웹사이트
1. What Is Varnish Cache? - Getting Started with Varnish Cache [Book]
https://www.oreilly.[...]
2023-10-22
[2]
웹사이트
Catalyst Advent Calendar - Day 14
http://www.catalystf[...]
2020-09-04
[3]
웹사이트
Varnish 1.0 released
https://varnish-cach[...]
2020-09-04
[4]
웹사이트
Varnish 2.0 released!
https://varnish-cach[...]
2020-09-04
[5]
웹사이트
Varnish 3.0.0 released
https://varnish-cach[...]
2020-09-04
[6]
웹사이트
Varnish 4.0.0 released
https://varnish-cach[...]
2020-09-04
[7]
웹사이트
Varnish Cache 5.0.0 — Varnish HTTP Cache
http://varnish-cache[...]
2020-09-04
[8]
웹사이트
Varnish 6.0 Released
https://varnish-cach[...]
2018-05-15
[9]
웹사이트
Varnish Cache 7.0.0 released
https://varnish-cach[...]
2022-08-09
[10]
웹사이트
Top Varnish performance metrics
https://www.datadogh[...]
2020-09-04
[11]
웹사이트
How to collect Varnish metrics
https://www.datadogh[...]
2020-09-04
[12]
웹사이트
varnishstat(1): HTTP accelerator statistics - Linux man page
https://linux.die.ne[...]
2020-09-04
[13]
웹사이트
BackendPolling – Varnish
https://www.varnish-[...]
Varnish-cache.org
2014-07-18
[14]
웹사이트
VMODs Directory (Varnish Modules and Extensions) | Varnish Community
https://www.varnish-[...]
Varnish-cache.org
2014-07-18
[15]
웹사이트
Saint Mode
https://www.varnish-[...]
[16]
웹사이트
Grace Mode
https://www.varnish-[...]
[17]
서적
Getting Started with Varnish Cache: Accelerate Your Web Applications
O'Reilly Media, Inc
[18]
웹인용
How popular is Varnish
http://royal.pingdom[...]
2018-11-13
[19]
웹인용
BackendPolling – Varnish
https://www.varnish-[...]
Varnish-cache.org
2014-07-18
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
