Azure에서 LangSmith 자체 호스팅
Azure에서 LangSmith 자체 호스팅
Microsoft Azure에서 LangSmith를 실행하면 자체 호스팅 모드가 관측성 기능을 갖춘 완전한 LangSmith 플랫폼을 배포해요. 이 페이지는 AKS 배포 초기 설정, Azure 특화 아키텍처 패턴, 컴퓨트/네트워킹 지침, 그리고 보안 및 접근 제어 권장 사항을 다룹니다.
출처: 문서
본문
Microsoft Azure에서 LangSmith를 실행하면 자체 호스팅 모드가 관측성 기능을 갖춘 완전한 LangSmith 플랫폼을 배포합니다.
이 페이지는 다음을 제공합니다:
- AKS에 배포하고, 관리형 서비스를 구성하고, 인증을 설정하는 초기 설정 단계.
- Azure 특화 아키텍처 패턴 및 참조 다이어그램.
- Azure 배포를 위한 컴퓨트 및 네트워킹 지침과 모범 사례.
- Azure 배포를 위한 보안 및 접근 제어 권장 사항.
참고: LangChain은 AKS, Azure Database for PostgreSQL, Azure Managed Redis, Blob Storage, Key Vault를 단일 워크플로우로 프로비저닝하는 프로덕션 준비 Azure용 Terraform 모듈을 게시합니다. Terraform과 Helm 전용 경로 중에서 선택하려면 Terraform 배포 개요로 시작하세요.
초기 설정
1. Kubernetes에 배포
Kubernetes 설치 가이드를 따르세요. LangSmith는 Azure Kubernetes Service(AKS)에서 테스트됩니다.
AKS 특화 메모:
- LangSmith는 표준 AKS 클러스터에서 작동합니다.
- 영구 볼륨에 Azure Disk 저장 클래스 사용.
2. 외부 서비스 구성
프로덕션 배포의 경우 Azure 관리형 서비스에 연결합니다:
- Azure Blob Storage — 트레이스 데이터를 Azure Blob에 저장
- Azure Database — PostgreSQL 데이터베이스
- Azure Cache — 캐싱용 Redis
- ClickHouse Cloud — 분석 데이터베이스
3. 인증 설정
Azure Workload Identity를 사용해 LangSmith 파드를 Azure 서비스에 인증합니다.
주요 페이지:
이 초기 설정 단계를 완료한 후 아래에서 완전한 Azure 아키텍처와 모범 사례를 검토할 수 있습니다.
참조 아키텍처
확장 가능하고 안전하며 탄력적인 플랫폼을 제공하려면 Azure의 관리형 서비스를 사용하는 것을 권장합니다. 다음 아키텍처는 자체 호스팅과 하이브리드 배포에 모두 적용됩니다.
| 구성 요소 | 설치 방법 | |
|---|---|---|
| LangSmith Helm 릴리스 | 프론트엔드, 백엔드, 큐, 플랫폼 백엔드, Playground, ACE, 그리고 선택적으로 LangSmith Deployment 컨트롤/데이터 플레인 | langchain/langsmith 차트에서 한 번의 helm upgrade --install |
| 여러분이 프로비저닝 | AKS, PostgreSQL, Managed Redis, Blob Storage, Key Vault, ingress, ClickHouse | LangSmith 설치 전에 여러분의 IaC 툴링(Terraform, ARM 템플릿 또는 Azure 포털) |

설치 순서: Azure 인프라 프로비저닝 → ClickHouse 프로비저닝/구독 → Entra ID 및 Workload Identity 구성 → helm upgrade --install 실행. LangSmith Deployment, Fleet, Insights, Chat은 별도 설치가 아닌 동일한 Helm 릴리스를 통해 활성화됩니다.
규정 준수 표면: LangSmith 차트와 컨테이너 이미지에 대한 한 번의 애플리케이션 검토, 각 관리형 리소스에 대한 표준 Azure 서비스 검토. ClickHouse Cloud는 타사 SaaS 검토를 한 번 추가합니다.
- 클라이언트 인터페이스: 사용자는 웹 브라우저 또는 LangChain SDK를 통해 LangSmith와 상호작용합니다. 모든 트래픽은 Azure Load Balancer에서 종료되고, 필요에 따라 클러스터 내 다른 서비스로 라우팅되기 전에 AKS 클러스터 내 프론트엔드(NGINX)로 라우팅됩니다.
- 저장 서비스: 플랫폼은 트레이스, 메타데이터, 캐싱을 위한 영구 저장이 필요합니다. Azure에서 권장하는 서비스:
- Azure Database for PostgreSQL (Flexible Server) — 트랜잭션 데이터(예: 런, 프로젝트). Azure의 고가용성 옵션은 다른 영역에 대기 복제본을 프로비저닝합니다; 데이터는 기본 서버와 대기 서버 모두에 동기적으로 커밋됩니다. LangSmith는 PostgreSQL 14 이상이 필요합니다.
- Azure Managed Redis — 큐와 캐싱. 모범 사례는 작은 값 저장, 큰 객체를 여러 키로 분할, 처리량 극대화를 위한 파이프라이닝 사용, 클라이언트와 서버가 같은 지역에 있는지 확인입니다. Azure Cache for Redis를 단일 인스턴스 또는 클러스터 모드로 사용할 수도 있습니다. LangSmith는 Redis OSS 6.2 이상이 필요합니다.
- ClickHouse — 트레이스의 고용량 분석. 외부 관리형 ClickHouse 솔루션을 권장합니다. 보안 또는 규정 준수 사유로 그게 불가능하다면, 오픈 소스 운영자를 사용해 AKS에 ClickHouse 클러스터를 배포합니다. 내구성을 위해 가용 영역 간 복제를 보장하세요. Clickhouse는 하이브리드 배포에 필요하지 않습니다.
- Azure Blob Storage — 큰 아티팩트용. 읽기 접근 지리 중복(RA-GRS) 또는 지리 영역 중복(RA-GZRS) 같은 중복 저장 구성을 사용하고, 중단 중 2차 지역에서 읽도록 애플리케이션을 설계합니다.
Azure의 컴퓨트 및 네트워킹
Azure Kubernetes Service (AKS)
AKS는 프로덕션 배포에 권장되는 컴퓨트 플랫폼입니다. 이 섹션은 설정 계획을 위한 주요 고려 사항을 설명합니다.
네트워크 모델
프로덕션 클러스터에는 Azure CNI 네트워킹을 사용하세요. 이 모델은 클러스터를 기존 가상 네트워크에 통합하고, 각 파드와 노드에 IP 주소를 할당하며, 온프레미스 또는 다른 Azure 서비스로의 직접 연결을 허용합니다. 서브넷에 노드와 파드용 IP가 충분한지 확인하고, 겹치는 주소 범위를 피하며, 스케일 아웃 이벤트를 위한 추가 IP 공간을 할당하세요.
Ingress 및 로드 밸런싱
Kubernetes Ingress 리소스와 컨트롤러를 사용해 HTTP/HTTPS 트래픽을 분배합니다. Ingress 컨트롤러는 레이어 7에서 작동하며 URL 경로에 따라 트래픽을 라우팅하고 TLS 종료를 처리할 수 있습니다. 레이어 4 로드 밸런서보다 공용 IP 주소 수를 줄입니다. Azure DNS와 Key Vault(SSL 인증서용)와 통합된 관리형 NGINX ingress 컨트롤러용 application routing 애드온을 사용하세요.
Web Application Firewall (WAF)
공격에 대한 추가 보호를 위해 Azure Application Gateway 같은 WAF를 배포합니다. WAF는 OWASP 규칙으로 트래픽을 필터링하고 트래픽이 AKS 클러스터에 도달하기 전에 TLS를 종료할 수 있습니다.
네트워크 정책
Kubernetes 네트워크 정책을 적용해 파드 간 트래퇴 be restricted and reduce the impact of compromised workloads. 클러스터 생성 시 네트워크 정책 지원을 활성화하고 애플리케이션 연결에 기반해 규칙을 설계합니다.
고가용성
가용 영역에 걸쳐 노드 풀을 구성하고, 모든 배포에 Pod Disruption Budget(PDB)과 여러 복제본을 사용합니다. 파드 리소스 요청과 한도를 설정합니다. AKS 리소스 관리 모범 사례는 파드가 모든 리소스를 소비하지 않도록 CPU와 메모리 한도 설정을 권장합니다. Cluster Autoscaler와 Vertical Pod Autoscaler를 사용해 노드 풀을 스케일링하고 파드 리소스를 자동으로 조정합니다.
네트워킹 및 정체성
가상 네트워크 통합
AKS를 자체 가상 네트워크에 배포하고, 클러스터, 데이터베이스, Redis, 저장 엔드포인트용 별도 서브넷을 만듭니다. Private Link와 서비스 엔드포인트를 사용해 트래픽을 가상 네트워크 내에 유지하고 공개 인터넷에 대한 노출을 피합니다.
인증
LangSmith를 Microsoft Entra ID(Azure AD)와 통합해 단일 로그온을 지원합니다. Azure AD OAuth2를 bearer 토큰에 사용하고, UI와 API에 대한 접근을 제어하도록 역할을 할당합니다.
저장 및 데이터 서비스
Azure Database for PostgreSQL
고가용성
Flexible Server를 고가용성 모드로 사용합니다. Azure는 같은 가용 영역(zonal) 또는 영역 간(zone-redundant)에 대기 복제본을 프로비저닝합니다. 데이터는 기본 서버와 대기 서버 모두에 동기적으로 커밋되어 커밋된 데이터가 손실되지 않도록 합니다. Zone-redundant 구성은 대기 서버를 다른 영역에 배치해 영역 중단으로부터 보호하지만 쓰기 지연을 추가할 수 있습니다.
백업 및 재해 복구
지리 중복 백업 저장을 구성하고 자동 백업을 활성화해 지역 전체 중단으로부터 보호합니다. 중요 애플리케이션은 보조 지역에 읽기 복제본을 만듭니다.
스케일링
워크로드에 맞는 적절한 SKU를 선택합니다. Flexible Server는 컴퓨트와 저장을 독립적으로 확장할 수 있습니다. Azure Monitor를 통해 메트릭을 모니터링하고 경고를 구성합니다.
Azure Managed Redis
영속성 및 중복
복제와 영속성을 제공하는 계층을 선택합니다. 내구성을 위해 Redis 영속성 또는 데이터 백업을 구성합니다. 고가용성은 계층에 따라 활성 지리 복제 또는 영역 중복 캐시를 사용합니다.
Azure의 ClickHouse
ClickHouse는 분석 워크로드(트레이스 및 피드백)에 사용됩니다. 외부 관리형 솔루션을 사용할 수 없다면 Helm 또는 공식 운영자로 AKS에 ClickHouse 클러스터를 배포합니다. 탄력성을 위해 노드와 가용 영역 간 데이터를 복제합니다. 로컬 저장에 Azure Disks를 사용하고 StatefulSets로 마운트하는 것을 고려하세요.
Azure Blob Storage
중복
복구 목표에 따라 중복 구성을 선택합니다. 읽기 접근 지리 중복(RA-GRS) 또는 지리 영역 중복(RA-GZRS) 저장을 사용하고 기본 지역 중단 시 2차 지역으로 읽기를 전환하도록 애플리케이션을 설계합니다.
명명 및 파티셔닝
파티션 간 로드 밸런싱을 개선하고 최대 동시 클라이언트 수를 계획하는 명명 규칙을 사용합니다. Azure의 확장성/용량 목표 내에 있고, 필요한 경우 여러 저장 계정에 데이터를 파티셔닝합니다.
네트워킹
프라이빗 엔드포인트를 통해 blob 저장에 접근하거나, SAS 토큰과 CORS 규칙을 사용해 클라이언트 직접 접근을 활성화합니다.
보안 및 접근 제어
Azure Key Vault
앱 및 환경별 별도 볼트
데이터베이스 연결 문자열과 API 키 같은 시크릿을 Azure Key Vault에 저장합니다. 각 애플리케이션과 환경(dev, test, prod)마다 전용 볼트를 사용해 보안 침해의 영향을 제한합니다.
접근 제어
RBAC 권한 모델을 사용해 볼트 범위에서 역할을 할당하고 필요한 principal로 접근을 제한합니다. Private Link와 방화벽으로 네트워크 접근을 제한합니다.
데이터 보호 및 로깅
실수로 인한 삭제를 방지하려면 soft delete 및 purge protection을 활성화합니다. Key Vault 접근 이벤트에 로깅을 켜고 경고를 구성합니다.
네트워크 보안
Ingress 격리
Ingress 컨트롤러 또는 WAF를 통해 프론트엔드 서비스만 노출합니다. 다른 서비스는 내부로 유지하고 클러스터 네트워킹으로 통신해야 합니다.
RBAC 및 파드 보안
Kubernetes RBAC로 누가 리소스를 배포, 수정, 읽을 수 있는지 제어합니다. baseline, restricted 또는 privileged 프로필을 적용하려면 pod security admission을 활성화합니다.
시크릿 관리
CSI Secret Store로 Key Vault의 시크릿을 파드에 마운트합니다. 시크릿을 환경 변수나 구성 파일에 저장하지 마세요.
관측성 및 모니터링
LangSmith 인스턴스를 텔레메트리 데이터 내보내기로 구성해 Azure의 서비스로 모니터링할 수 있게 합니다.
Azure Monitor
메트릭, 로그, 경고에 Azure Monitor를 사용합니다. 사전 예방적 모니터링은 노드 CPU/메모리 사용률, 파드 상태, 서비스 지연 시간 같은 핵심 신호에 대한 경고 구성과 관련됩니다. Azure Monitor 경고는 사전 정의된 임계값을 초과하면 알립니다.
관리형 Prometheus 및 Grafana
Kubernetes 메트릭을 수집하려면 Azure Monitor 관리형 Prometheus를 활성화합니다. 시각화를 위해 Grafana 대시보드와 결합합니다. 서비스 수준 목표(SLO)를 정의하고 그에 따라 경고를 구성합니다.
Container Insights
AKS 노드와 파드에서 로그와 메트릭을 캡처하려면 Container Insights를 설치합니다. Azure Log Analytics 워크스페이스로 로그를 쿼리하고 분석합니다.
애플리케이션 로깅
LangSmith 서비스가 stdout/stderr로 로그를 내보내고 Fluent Bit 또는 Azure Monitor 에이전트를 통해 전달하도록 합니다.
지속적 통합
- LangSmith 배포를 관리하는 권장 방법은 Agent Server 이미지를 빌드해 Azure Container Registry로 푸시하는 CI 프로세스를 만드는 것입니다. PR 머지 시 스테이징이나 프로덕션에 새 리비전을 배포하기 전에 풀 리퀘스트용 테스트 배포를 만드세요.
더 알아보기
- Kubernetes 설치 방법은 Kubernetes 문서를 참고하세요.
- 외부 서비스 구성은 Self-host external services 문서를 확인해 보세요.