50 lines
3.5 KiB
XML
50 lines
3.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 460" font-family="Helvetica, Arial, sans-serif">
|
||
<text x="500" y="30" text-anchor="middle" font-size="18" font-weight="700" fill="#102a43">gRPC vs REST 정량 비교 — 엣지 AIoT 무선 구간</text>
|
||
<text x="500" y="52" text-anchor="middle" font-size="12" fill="#486581">예시적 추정치 (Illustrative Estimates). 페이로드 복잡도·라이브러리·런타임에 따라 변동</text>
|
||
|
||
<!-- Left chart: Payload size -->
|
||
<g>
|
||
<text x="60" y="100" font-size="14" font-weight="700" fill="#102a43">① 페이로드 크기 (단일 메시지)</text>
|
||
<text x="60" y="120" font-size="11" fill="#486581">작을수록 무선 대역폭 절약</text>
|
||
|
||
<rect x="60" y="140" width="180" height="36" fill="#1976d2"/>
|
||
<text x="250" y="163" font-size="12" font-weight="600" fill="#102a43">JSON 450 B (100%)</text>
|
||
|
||
<rect x="60" y="190" width="37" height="36" fill="#00838f"/>
|
||
<text x="107" y="213" font-size="12" font-weight="600" fill="#102a43">Protobuf 92 B (20%)</text>
|
||
<text x="250" y="213" font-size="11" fill="#00838f" font-weight="600">▼ 80% 대역폭 절감</text>
|
||
|
||
<line x1="60" y1="245" x2="500" y2="245" stroke="#9e9e9e" stroke-width="1"/>
|
||
<text x="60" y="265" font-size="10" fill="#486581">0 B</text>
|
||
<text x="500" y="265" font-size="10" fill="#486581" text-anchor="end">500 B</text>
|
||
</g>
|
||
|
||
<!-- Right chart: CPU parsing -->
|
||
<g>
|
||
<text x="560" y="100" font-size="14" font-weight="700" fill="#102a43">② 10,000 메시지 파싱 CPU</text>
|
||
<text x="560" y="120" font-size="11" fill="#486581">짧을수록 ms 단위 핑퐁 유리</text>
|
||
|
||
<rect x="560" y="140" width="380" height="36" fill="#1976d2"/>
|
||
<text x="950" y="163" text-anchor="end" font-size="12" font-weight="600" fill="#fff">JSON ~500 ms (100%)</text>
|
||
|
||
<rect x="560" y="190" width="34" height="36" fill="#00838f"/>
|
||
<text x="604" y="213" font-size="12" font-weight="600" fill="#102a43">Protobuf ~45 ms (9%)</text>
|
||
<text x="950" y="213" text-anchor="end" font-size="11" fill="#00838f" font-weight="600">▼ ×11 CPU 효율</text>
|
||
|
||
<line x1="560" y1="245" x2="950" y2="245" stroke="#9e9e9e" stroke-width="1"/>
|
||
<text x="560" y="265" font-size="10" fill="#486581">0 ms</text>
|
||
<text x="950" y="265" font-size="10" fill="#486581" text-anchor="end">500 ms</text>
|
||
</g>
|
||
|
||
<!-- Implication panel -->
|
||
<rect x="60" y="300" width="890" height="130" rx="8" fill="#f1f8ff" stroke="#1976d2" stroke-width="1.5"/>
|
||
<text x="80" y="328" font-size="13" font-weight="700" fill="#0d47a1">엣지 AIoT 환경에서의 함의 (Implications)</text>
|
||
<g font-size="11" fill="#102a43">
|
||
<text x="80" y="350">▸ <tspan font-weight="600">무선 구간 비용·지연 절감</tspan>: LoRa·BLE·저전력 Wi-Fi 구간에서 페이로드 80% 감소는 배터리 수명·전력 예산에 직결</text>
|
||
<text x="80" y="370">▸ <tspan font-weight="600">ms 단위 핑퐁 누적 해소</tspan>: 사례 ① AGV 합의처럼 초당 수십~수백 회의 RPC가 필요한 환경에서 ×11 CPU 효율은 필수</text>
|
||
<text x="80" y="390">▸ <tspan font-weight="600">단, 임베디드 제약</tspan>: 8-bit MCU·저전력 디바이스는 Protobuf 라이브러리 자체가 부담 → gRPC-Lite/nanopb 또는 T2 변환 게이트웨이 사용</text>
|
||
<text x="80" y="410">▸ <tspan font-weight="600">타입 안전성</tspan>: Protobuf의 컴파일 단계 검증은 컴파일-배포 주기가 긴 임베디드에서도 빌드-시-에러를 보장</text>
|
||
</g>
|
||
</svg>
|