Chapter 06: 통신 프로토콜

弘益人間
효율적이고 안전한 통신으로 전 세계 연결

6.1 HTTP/2 vs gRPC

API가 "무엇을" 할 수 있는지를 정의한다면, 프로토콜은 "어떻게" 통신할 것인지를 정의합니다.

특성HTTP/1.1 + JSONHTTP/2 + JSONgRPC + Protobuf
이진 프로토콜❌ 텍스트✅ 이진✅ 이진
멀티플렉싱❌✅✅
스트리밍❌✅✅ 양방향
데이터 크기큼중간작음
타입 안전성❌❌✅
브라우저 지원✅✅⚠️ gRPC-Web

6.2 Protocol Buffers 정의

// TypeScript로 표현한 Protobuf 메시지 구조
interface TranslateRequest {
  text: string;
  sourceLanguage: string;
  targetLanguage: string;
  options?: TranslateOptions;
}

interface TranslateOptions {
  formality: 'CASUAL' | 'POLITE' | 'FORMAL';
  domain: string;
  numAlternatives: number;
  preserveFormatting: boolean;
}

interface TranslateResponse {
  translation: string;
  confidence: number;
  alternatives: Alternative[];
  metadata: ResponseMetadata;
}

// gRPC 서비스 정의
interface TranslationService {
  // 단일 요청
  translate(request: TranslateRequest): Promise<TranslateResponse>;

  // 스트리밍: 긴 텍스트 실시간 번역
  translateStream(
    request: AsyncIterable<TranslateRequest>
  ): AsyncIterable<TranslateResponse>;

  // 양방향 스트리밍: 실시간 대화 번역
  translateBidirectional(
    stream: AsyncIterable<TranslateRequest>
  ): AsyncIterable<TranslateResponse>;
}

6.3 모델 배포 프로토콜

// Docker 기반 모델 패키징
interface ModelPackage {
  modelId: string;
  version: string;
  language: string;
  task: 'translation' | 'asr' | 'tts' | 'lm';

  // 컨테이너 설정
  container: {
    baseImage: 'wia/lang-base:1.0';
    requirements: string[];
    entrypoint: string;
  };

  // 리소스 요구사항
  resources: {
    memory: '2Gi' | '4Gi' | '8Gi';
    cpu: number;
    gpu?: 'nvidia-t4' | 'nvidia-a10';
  };

  // 헬스 체크
  healthCheck: {
    endpoint: '/health';
    intervalSeconds: 30;
    timeoutSeconds: 5;
  };
}

// Kubernetes 배포 생성기
class K8sDeploymentGenerator {
  generateDeployment(pkg: ModelPackage): string {
    return `
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wia-lang-${pkg.language}-${pkg.task}
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ${pkg.modelId}
  template:
    spec:
      containers:
      - name: model-server
        image: wia/${pkg.modelId}:${pkg.version}
        resources:
          requests:
            memory: "${pkg.resources.memory}"
            cpu: "${pkg.resources.cpu}"
        livenessProbe:
          httpGet:
            path: ${pkg.healthCheck.endpoint}
            port: 8080
    `;
  }
}

6.4 보안 프로토콜

계층기술목적
전송TLS 1.3암호화 통신
인증OAuth 2.0 + JWT신원 확인
권한RBAC접근 제어
감사Audit Logging추적 가능성
보호Rate LimitingDDoS 방어
⚠️ 문화적 데이터 보호: 신성한 언어 데이터는 추가 암호화 계층을 적용하고, 접근 로그를 언어 공동체에 실시간 공유합니다.
// 보안 미들웨어
class SecurityMiddleware {
  async validateRequest(req: Request): Promise<ValidationResult> {
    // 1. TLS 검증
    if (!req.secure) {
      return { valid: false, error: 'HTTPS required' };
    }

    // 2. JWT 검증
    const token = req.headers.authorization?.split(' ')[1];
    const decoded = await this.verifyJWT(token);

    // 3. 권한 확인
    const hasAccess = await this.checkPermissions(
      decoded.userId,
      req.path,
      req.method
    );

    // 4. 문화적 민감성 확인
    if (req.body.language) {
      const cultural = await this.checkCulturalAccess(
        decoded.userId,
        req.body.language,
        req.body.content
      );
      if (!cultural.allowed) {
        return { valid: false, error: cultural.reason };
      }
    }

    // 5. Rate Limit 확인
    const rateLimited = await this.checkRateLimit(decoded.userId);
    if (rateLimited) {
      return { valid: false, error: 'Rate limit exceeded' };
    }

    return { valid: true, user: decoded };
  }
}

📚 핵심 요약

  1. 프로토콜 선택: HTTP/2 REST (웹), gRPC (서버간/스트리밍)를 용도에 맞게 사용합니다.
  2. Protocol Buffers: 타입 안전하고 효율적인 데이터 직렬화를 제공합니다.
  3. 모델 배포: Docker + Kubernetes로 표준화된 배포를 수행합니다.
  4. 스트리밍: 양방향 스트리밍으로 실시간 처리를 지원합니다.
  5. 보안: TLS 1.3, OAuth 2.0, RBAC, Rate Limiting을 적용합니다.
  6. 문화적 보호: 민감한 언어 데이터에 추가 보안 계층을 적용합니다.
  7. 弘益人間: 안전하면서도 접근 가능한 통신으로 모두를 연결합니다.

✏️ 복습 문제

1.

HTTP/2와 gRPC의 차이점과 각각의 적합한 사용 시나리오를 설명하시오.

2.

Protocol Buffers가 JSON보다 효율적인 이유를 데이터 크기 관점에서 분석하시오.

3.

양방향 스트리밍이 필요한 언어 AI 응용 사례를 3가지 제시하시오.

4.

Kubernetes 배포에서 Auto-scaling 전략을 저자원 언어 서비스에 맞게 설계하시오.

5.

문화적으로 민감한 데이터의 보안 요구사항을 정의하시오.

6.

SecurityMiddleware의 문화적 접근 검사 로직을 상세 구현하시오.

7.

gRPC 서비스의 에러 처리 및 재시도 전략을 설계하시오.

8.

엣지 디바이스 배포를 위한 경량 프로토콜을 제안하시오.

© 2025 SmileStory Co., Ltd. / WIA · 弘益人間

📐 시뮬레이터 패널 0