C#에서 YARP 소개 - 리버스 프록시 만들기 방법
.NET Core 환경에서 웹 트래픽을 효율적으로 관리하려면 리버스 프록시가 필수적인 도구가 됩니다. YARP(Yet Another Reverse Proxy)는 마이크로소프트가 .NET 생태계를 위해 특별히 개발한 매우 유연하고 맞춤 설정이 가능한 리버스 프록시 프로젝트입니다. 이 글에서는 Tim Corey의 " C#에서 YARP 소개 - 리버스 프록시 생성 방법 "이라는 포괄적인 튜토리얼을 따라 YARP를 시작하는 방법을 자세히 살펴보겠습니다. 이 튜토리얼에서는 .NET Core 웹 애플리케이션에서 YARP를 설정하고 사용하는 방법을 보여줍니다.
먼저 YARP에 대한 소개와 이 프록시 프레임워크를 프로젝트에서 활용하는 방법에 대해 알아보겠습니다.
리버스 프록시란 무엇인가요?
1분 7초에 Tim은 리버스 프록시가 클라이언트(사용자)와 백엔드 서버 사이에 위치하여 들어오는 요청을 관리하고 적절한 대상으로 효율적으로 요청을 라우팅한다고 설명합니다.
Tim은 1분 45초에 프록시가 중요한 이유를 설명합니다. 프록시는 로드 밸런싱뿐만 아니라 요청 헤더를 간소화하고, HTTPS를 통해 연결을 보호하며, 백엔드 서비스가 직접 접근으로부터 격리되도록 하는 데에도 중요합니다. 리버스 프록시를 사용하면 내부 구조를 노출하지 않고도 .NET Core 애플리케이션을 쉽게 확장할 수 있습니다.
YARP 소개
5시 11분에 Tim은 YARP(Yet Another Reverse Proxy)를 소개합니다. Tim은 Microsoft가 다양한 .NET 애플리케이션의 특정 요구 사항에 더 적합한 프록시 프레임워크의 필요성을 인식했고, 그 결과 YARP가 탄생했다고 설명합니다. YARP는 모듈식, 견고성 및 확장성을 갖춘 방식으로 핵심 프록시 기능을 제공하는 라이브러리로 설계되었습니다.

이 라이브러리는 활발하게 개발 중이며, 최신 기능을 포함하고 Linux, Windows 및 클라우드 환경과 같은 최신 기술을 지원합니다.
또한 Tim은 YARP에 대해 잘 관리되고 방대한 양의 문서가 제공되므로 새로운 개발자들이 시작하기가 훨씬 쉽다고 강조합니다.
YARP 기본 프로젝트 설정하기
6시 14분에 Tim은 .NET SDK를 사용하여 Visual Studio에서 새 프로젝트를 시작합니다. 그는 Pessimistic API 라는 이름의 기본적인 ASP.NET Core 웹 API 프로젝트를 만듭니다.

Tim은 7시 2분에 추운 날씨 서비스를 시뮬레이션하는 비관적 API를 만들기 위해 프로젝트를 수정했습니다. 이 간단한 .NET Core 애플리케이션은 나중에 YARP가 프록시할 백엔드 서버입니다.
Tim은 8시 44분에 프로젝트를 진행하기 전에 검증하여 예제 서비스가 /weatherforecast에 대한 요청에 올바르게 응답하는지 확인해야 한다고 제안합니다.
YARP 게이트웨이 생성
9시 4분에 Tim은 YarpGateway 라는 이름의 빈 ASP.NET Core 프로젝트를 생성합니다. 이 프로젝트는 리버스 프록시 역할을 합니다.
Tim은 NuGet 패키지 관리로 이동하여 YARP 설치 패키지를 검색하는 방식으로 필요한 패키지를 설치하는 과정을 설명합니다(10:24). 이렇게 하면 필요한 핵심 프록시 기능을 제공하는 공식 라이브러리인 YARP 리버스 프록시가 불러와집니다.
YARP 구성
12시 2분에 Tim은 Program.cs 파일 내에서 YARP 구성을 연결하는 방법을 다음과 같이 보여줍니다.
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));이 설정은 YARP를 사용하여 요청을 라우팅할 때 필수적인 요소인 경로 및 클러스터를 정의하는 구성 파일을 로드합니다.
경로는 들어오는 경로와 일치하며, 클러스터는 전달할 백엔드 서비스를 정의합니다. 이 모듈식 구성은 속도 제한, 모듈 교체 및 경로 관리 세부 조정과 같은 고급 기능을 추가할 수 있도록 지원합니다.
팀은 이러한 유연한 설계 덕분에 YARP가 실제 프로젝트에 적합한 고도로 맞춤 설정 가능한 리버스 프록시가 되었다고 지적합니다.
기본 프록시 설정 테스트
20시 02분에 Tim은 백엔드 Pessimistic API 와 YarpGateway를 동시에 실행하는 모습을 보여줍니다.
게이트웨이의 URL인 /weatherforecast로 이동하면 YARP는 들어오는 요청을 백엔드 서버로 라우팅하고 응답을 가져와 내부 URL을 노출하지 않고 제공합니다. 이는 프록시 기능과 요청 라우팅이 실제로 어떻게 작동하는지 보여줍니다.
두 번째 백엔드를 추가하여 확장
21시 17분에 Tim은 따뜻한 온도만 반환하는 Optimistic API 라는 새로운 프로젝트를 추가했습니다.
그는 단일 클러스터 내에서 여러 대상을 사용하여 YARP를 구성합니다. 이를 통해 로드 밸런싱, 즉 들어오는 요청을 두 개의 백엔드 서버 간에 무작위로 분산할 수 있습니다.
이후 26분 26초에 Tim은 라운드 로빈이나 요청 속성을 기반으로 한 사용자 지정 로직과 같은 옵션을 포함하여 로드 밸런싱 전략을 더욱 세밀하게 조정할 수 있다고 설명합니다.
YARP를 사용하여 정적 웹사이트 업그레이드하기
28분 12초에 팀은 자신의 웹사이트(iamtimcorey.com)를 업그레이드한 실제 사례를 설명합니다.
그는 모든 트래픽을 캐치올 경로를 사용하여 원래 사이트로 프록시하는 WebsiteUpgrade .NET Core 웹 애플리케이션을 만듭니다.

이 전략을 통해 점진적인 업데이트가 가능합니다. Tim은 기존 시스템에서 제공되는 오래된 콘텐츠를 계속 지원하면서 Razor 사용하여 페이지를 재구축하고 현대화할 수 있습니다. 들어오는 요청은 경로에 따라 원래 사이트 또는 새 콘텐츠로 자동 라우팅됩니다.
Razor Pages를 사용하여 새로운 기능 추가하기
34분 30초에 Tim은 업그레이드 프로젝트에 Razor Pages를 추가합니다. 그는 나머지 모든 페이지는 프록시를 통해 제공되는 반면, 새 애플리케이션에서 직접 제공되는 간단한 페이지(/more)를 추가하는 방법을 보여줍니다.
YARP의 유연성 덕분에 기존 백엔드 서비스를 방해하지 않고 새로운 모듈과 기능을 추가할 수 있습니다.
고급 라우팅 및 경로 변환 구현
39분 3초에 Tim은 경로를 재작성하고 사용자를 세 개의 서로 다른 강좌 페이지 중 하나로 무작위로 리디렉션하는 /random 경로를 생성합니다.
그는 YARP의 변환 기능을 사용하여 프록싱 중에 요청 헤더와 경로를 수정함으로써 개발자가 특정 요구 사항에 맞게 동작을 세밀하게 조정하는 방법을 보여줍니다.
팀은 44분 3초쯤에 오타를 발견하지만, 설정 파일에 세심한 주의를 기울여야 함을 강조하며 이를 수정합니다.
라운드 로빈 로드 밸런싱 설정하기
45분 10초에 Tim은 랜덤 라우팅을 라운드 로빈으로 변경합니다. 이 간단한 설정 변경으로 여러 페이지 간 트래픽 분산의 예측 가능성이 향상됩니다.

이는 YARP의 핵심 특징 중 하나인, 코드 변경 없이 설정만으로 동작을 동적으로 쉽게 사용자 정의할 수 있다는 점을 강조합니다.
결론: YARP를 선택해야 하는 이유는 무엇일까요?
47분 3초에 Tim은 YARP가 최신 .NET Core 애플리케이션에 필수적인 도구인 이유를 요약하며 마무리합니다.
손쉬운 통합을 위해 라이브러리 형태로 설계되었습니다.
개발자에게 필요한 핵심 프록시 기능을 제공합니다.
마이크로소프트에서 활발히 개발 중입니다.
리눅스, 윈도우 및 HTTPS를 기본적으로 지원합니다.
방대한 문서와 체계적으로 관리되는 문서를 보유하고 있습니다.
여러 백엔드 서버로 요청을 유연하게 라우팅할 수 있습니다.
특정 요구사항에 맞춰 손쉽게 맞춤 설정할 수 있습니다.
- 이 제품은 상용 수준의 성능을 제공하며, 확장 가능하고 성능 최적화가 되어 있습니다.
Tim은 시청자들이 공식 문서를 참조하거나 YARP 전체 강좌를 제안함으로써 속도 제한, 모듈 교체, 심층적인 API 게이트웨이 설정과 같은 더 많은 기능을 살펴보도록 권장합니다.
마지막으로
Tim Corey의 YARP 리버스 프록시 설정 전체 영상을 따라하면 어떤 개발자든 또 다른 리버스 프록시를 빠르게 익힐 수 있습니다. 복잡한 로드 밸런싱을 처리하든, 모듈을 교체하든, 사이트를 점진적으로 업그레이드하든, YARP(Yet Another Reverse Proxy)는 .NET Core 환경에 적합한 견고하고 유연한 솔루션을 제공합니다. 더욱 유익한 영상을 보시려면 그의 유튜브 채널을 방문해 보세요.

