소개
네트워크 OSI Layer 7에 대해 간략한 설명을 적었다.
기본 구조
| 계층 | 이름 | 주요 역할 | 주요 프로토콜/기술 | 실무적 포인트 (SaaS/AI) |
|---|---|---|---|---|
| L7 (Application) | 응용 | 사용자 인터페이스, 데이터 형식 정의 | HTTP/HTTPS, WebSocket, gRPC | API 설계, Token 최적화, 인증(JWT) |
| L6 (Presentation) | 표현 | 데이터 암호화, 압축, 인코딩 | SSL/TLS, JSON, JPEG | 비용 절감을 위한 데이터 압축 및 보안 |
| L5 (Session) | 세션 | 통신 세션 유지 및 복구 | NetBIOS, RPC | Redis를 활용한 세션 관리 및 상태 유지 |
| L4 (Transport) | 전송 | 포트 간 데이터 전송 및 신뢰성 | TCP, UDP | Load Balancing, 성능 최적화 |
| L3 (Network) | 네트워크 | 최적의 경로 설정 (라우팅) | IP, ICMP | VPC 설정, 서브넷 구성, 클라우드 보안 |
| L2 (Data Link) | 데이터 링크 | 물리적 매체 간 데이터 전송 | Ethernet, MAC 주소 | 스위칭, 로컬 네트워크 통신 |
| L1 (Physical) | 물리 | 전기적 신호 전송 | 케이블, 허브, 리피터 | 하드웨어 인프라 (클라우드에서는 추상화됨) |
Load Balancer
| 구분 | L4 Load Balancer | L7 Load Balancer |
|---|---|---|
| 동작 계층 | Transport Layer (TCP/UDP) | Application Layer (HTTP/HTTPS 등) |
| 판단 기준 | IP + Port | URL, Header, Cookie 등 |
| 요청 이해 | ❌ 불가능 (데이터 내용 모름) | ✅ 가능 (요청 내용 해석) |
| 라우팅 방식 | 단순 분산 (Round Robin 등) | Path / Host / Header 기반 |
| 성능 | 🔥 매우 빠름 (오버헤드 적음) | ⚡ 상대적으로 느림 (파싱 필요) |
| 확장성 | 매우 좋음 | 로직 복잡도에 영향 받음 |
| TLS 처리 | 보통 passthrough | TLS termination 가능 |
| Sticky Session | 제한적 | 다양하게 지원 (Cookie 등) |
| 보안 기능 | 거의 없음 | WAF, Rate Limit, 인증 가능 |
| 주요 사용처 | DB, 게임 서버, TCP 서비스 | 웹 서비스, API Gateway |
L4
L4는 데이터의 내용을 보지 않고 목적지 IP와 포트만 보고 던져줍니다.
- 장점: 데이터 복호화 과정이 없어서 부하가 적고 빠릅니다. TCP/UDP 프로토콜 기반이라면 무엇이든 처리 가능합니다.
- 단점: 패킷 내용을 모르기 때문에 사용자별 맞춤형 서비스나, 특정 URL(예:
/api/ai-inference)만 따로 떼어서 관리하기 어렵습니다.
L7
- 콘텐츠 기반 라우팅:
/v1/chat요청은 GPU 서버로, 단순 이미지 정적 리소스는 S3/CDN으로 보내는 식의 정교한 분기가 가능합니다. - 보안성 강화: HTTP 헤더의 조작 여부를 확인하거나, 특정 패턴의 공격을 차단하는 WAF(Web Application Firewall) 기능을 수행할 수 있습니다.
- SSL 오프로딩: 서버(Spring Boot/FastAPI)가 복호화 부담을 갖지 않도록 LB단에서 HTTPS를 처리해 버림으로써 백엔드 서버의 리소스를 아낄 수 있습니다.
NGINX LB 예시
L4 로드밸런싱 (Transport Layer)
NGINX의 stream 블록을 사용합니다. 데이터의 내용을 보지 않고 IP와 Port 기반으로 패킷을 전달만 합니다.
- 설정 특징:
http블록 밖에서stream블록을 정의합니다. - 장점: * HTTP가 아닌 프로토콜(예: 데이터베이스 연결, MQTT, DNS)을 분산할 때 유리합니다.
- 데이터 분석을 안 하므로 CPU 사용량이 매우 낮아 가성비가 좋습니다.
- 단점: URL 경로 기반 분기나 쿠키 확인이 불가능합니다.
bash# L4 설정 예시 (MariaDB 연결 분산) stream { upstream mariadb_nodes { server 10.0.1.10:3306; server 10.0.1.11:3306; } server { listen 3306; proxy_pass mariadb_nodes; } }
L7 로드밸런싱 (Application Layer)
우리가 흔히 쓰는 http 블록 설정입니다. 요청의 URI, Header, Cookie 등을 보고 지능적으로 분기합니다.
- 설정 특징:
location블록을 통해 세밀하게 제어합니다. - 장점:
- AI 토큰 최적화: 특정 패턴의 무분별한 API 호출을 L7 단에서
limit_req로 차단하여 비용을 절감합니다. - SSL Termination: HTTPS 인증서를 NGINX에서 관리하고, 백엔드(Spring Boot/FastAPI)와는 가벼운 HTTP로 통신하여 서버 부하를 줄입니다.
- AI 토큰 최적화: 특정 패턴의 무분별한 API 호출을 L7 단에서
- 단점: 패킷을 열어봐야 하므로 L4보다 메모리/CPU 소모가 큽니다.
bash# L7 설정 예시 (AI SaaS 서비스 분기) http { upstream api { server 10.0.2.10:8080; # FastAPI (AI Inference) } upstream ai_api { server 10.0.2.20:8000; # FastAPI (AI Inference) } upstream static_web { server 10.0.2.30:3000; # Next.js } server { listen 443 ssl; # Next.js 프론트엔드 처리 location / { # updstream으로 사용하는 경우 proxy_pass http://static_web; # updstream으로 사용하지 않는 경우 proxy_pass http://10.0.2.30:3000; # IP White 리스트 정책이라면 allow 192.168.1.1; deny all; # IP 차단만 사용한다면 deny 192.168.10.1; } # API 호출 처리 location /api/v1 { # updstream으로 사용하는 경우 proxy_pass http://api; # updstream으로 사용하지 않는 경우 proxy_pass http://10.0.2.10:8080; } # AI API 호출 처리 location /ai/v1/ { # updstream으로 사용하는 경우 proxy_pass http://ai_api; # updstream으로 사용하지 않는 경우 proxy_pass http://10.0.2.20:8000; } } }
정리
| 구분 | L4 모드 (Stream) | L7 모드 (HTTP) |
|---|---|---|
| 주요 용도 | DB(MariaDB, Redis) 부하 분산 | Web Service, AI API API Gateway |
| 분기 기준 | 오직 Port (e.g. 3306, 6379) | URL (e.g. /chat, /login), Header |
| 보안 | IP 화이트리스트 기반 차단 | WAF 연동, JWT 검증, DDoS 방어 |
| 성능/비용 | 리소스 소모 극소 (고대역폭 유리) | 분석 비용 발생 (지능적 처리 위주) |