아키텍처 패턴 · 계층별 컴포넌트 · 프로토콜·포트 · 응답시간 · 국내 실무 매핑
강사 박수현 · 🚀 젠아이랩스(GenAI Labs)
사용자 요청은 단순한 「클라이언트 → 서버」가 아니다. 평균 10단계를 통과하며, 각 단계마다 SPOF·보안·SLA가 결정된다.
4 슬라이드 · 약 7분
🎨 이미지 프롬프트: "Editorial horizontal timeline illustration on dark navy #0f1722 background, divided into 4 sequential decade panels separated by thin teal vertical dividers. Panel 1 labeled '1990s · Monolith': a single large beige mainframe-style box with a green CRT terminal in front, labels 'COBOL · C/S · HP9000 · Tandem' floating around. Panel 2 labeled '2000s · 3-Tier': three vertically stacked rectangular boxes labeled top-to-bottom 'Web · WAS · DB' connected by glowing arrows, side note 'Java EE · WebLogic · JEUS · NEIS · Gov24'. Panel 3 labeled '2010s · N-Tier + Cache': five horizontally connected boxes 'LB → Web → WAS → Cache(Redis) → DB' with a small load-balancer icon at the front, side note 'Naver · Kakao · KB'. Panel 4 labeled '2020s · Microservices': a hexagonal cluster of 6-8 small service nodes orbiting a central Kubernetes wheel icon, each node a different teal-purple tint, side note 'KakaoBank · Toss · Daangn'. Bottom ribbon across all panels: '95% of Korean Universities & Public Sector still run 3-Tier — the standard, not the trend'. Teal #00b894 and purple #6c5ce7 accents, clean editorial illustration style, 16:9. CRITICAL: All visible text MUST be in English ONLY (no Korean characters). Each label appears EXACTLY ONCE."

아키텍처 진화 — 30년 큰 그림
| 패턴 | 구조 | 적합 시스템 | 국내 사례 |
|---|---|---|---|
| 모놀리식 | 단일 서버 + DB | 소규모 사내 시스템 (< 100명) | 부서별 회계 보조 |
| 3-Tier | Web · WAS · DB 분리 | 중대형 업무 (100~10,000명) | 대학 학사·정부24·코레일 |
| N-Tier | + LB · Cache · API GW | 대형 24x7 서비스 (10,000명+) | 카카오톡·네이버페이·증권 HTS |
| 마이크로서비스 | 서비스 단위 분리 + K8s | 초대형 글로벌 (수십만+) | 카카오뱅크·당근·토스·쿠팡 |
📌 TA 의사결정 기준 — 「현재 사용자 수」가 아니라 「3년 후 사용자·트랜잭션 증가율」 + 「운영 인력 수준」으로 결정.
8 슬라이드 · 약 13분
┌──────────────────────────────────────────────────────────┐
│ ① Presentation Layer (DMZ) │
│ Browser · Mobile App · 화면 렌더링·세션 표시 │
│ → Web Server (Nginx·Apache) │
├──────────────────────────────────────────────────────────┤
│ ② Business Logic Layer (업무망) │
│ WAS — JEUS · WebLogic · Tomcat │
│ 비즈니스 규칙·트랜잭션·외부 연계 │
├──────────────────────────────────────────────────────────┤
│ ③ Data Layer (업무망 깊숙이) │
│ DB — Oracle · Tibero · PostgreSQL │
│ Storage — SAN · NAS │
│ 영구 저장·트랜잭션 일관성·백업 │
└──────────────────────────────────────────────────────────┘
🎨 이미지 프롬프트: "Editorial isometric architecture diagram on dark navy #0f1722 background showing the classic 3-Tier architecture. Three large vertically stacked horizontal floors connected by glowing teal arrows pointing downward (one-way). TOP FLOOR labeled 'Presentation Layer · DMZ Zone' (teal tint): a desktop monitor and a smartphone on the left, both connected via thin lines to a tall server rack labeled 'Web Server · Nginx · Apache'. MIDDLE FLOOR labeled 'Business Logic Layer · Internal Net' (purple tint): three server racks side by side labeled 'WAS · JEUS · WebLogic · Tomcat' with small gears floating around them representing transactions. BOTTOM FLOOR labeled 'Data Layer · Deep Internal' (orange tint): a cylindrical database icon labeled 'Oracle · Tibero · PostgreSQL' next to a storage array labeled 'SAN · NAS'. A vertical red 'ONE-WAY ONLY' arrow on the right side of all 3 floors showing direction. A red X mark blocking any arrow going from bottom to top, with a label 'NO direct back-channel'. Clean editorial illustration style, teal #00b894 and purple #6c5ce7 accents, 16:9. CRITICAL: All visible text MUST be in English ONLY. Each label appears EXACTLY ONCE."

3-Tier 큰 그림
┌─ 외부 인터넷 (Internet)
│
┌─────────▼──────────────────────────────────┐
│ 외부 방화벽 (NGFW · KCMVP) │
└─────────┬──────────────────────────────────┘
│
▼
┌──────────────────────────────────────────┐
│ 📍 DMZ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ WAF / LB │ → │ Web Server │ │
│ └──────────────┘ └──────────────┘ │
└──────────────────────┬───────────────────┘
│ (단방향만 허용)
┌──────────────────────▼───────────────────┐
│ 내부 방화벽 (NGFW · 망간 통제) │
└──────────────────────┬───────────────────┘
▼
┌──────────────────────────────────────────┐
│ 📍 업무망 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ WAS │ → │ DB │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────┐ │
│ │ Storage │ │
│ └──────────┘ │
└──────────────────────────────────────────┘
🇰🇷 KISA 망분리 가이드 핵심 규칙 - DMZ → 업무망: 단방향만 허용 (HTTP·DB Connection만) - 업무망 → DMZ: 차단 (역방향 금지) - 관리망 분리 (SSH·OOB)는 별도 망
14 슬라이드 · 약 22분
┌───────────────────────────────────────────────────────────────────┐
│ │
│ ① Client ② ③ ④ ⑤ │
│ ┌────────┐ HTTPS ┌─────┐ A ┌──────┐ ┌──────┐ ┌─────┐ │
│ │Browser ├──────▶│ DNS ├─────▶│ AntiD├───▶│ WAF ├────▶│ LB │ │
│ │ Mobile │ 443 │ │ IP │ DDoS │ │ │ │ L4 │ │
│ └────────┘ └─────┘ └──────┘ └──────┘ └──┬──┘ │
│ │ │
│ ┌───────────┘ │
│ ▼ │
│ ⑩ ⑨ ⑧ ⑦ ⑥ │
│ ┌──────┐ ┌────┐ ┌──────┐ ┌─────┐ ┌──────┐ │
│ │ SAN │◀─┤ DB │◀─┤Cache │◀─┤ WAS │◀─┤APIGW │ │
│ │Storage│ │ │ │ Redis│ │ │ │ │ │
│ └──────┘ └────┘ └──────┘ └─────┘ └──────┘ │
│ ▲ │
│ │ │
│ ⑤b │ │
│ ┌──────┐ │ │
│ │ Web │───────────────────────┘ │
│ │Nginx │ HTTP 8080 │
│ └──────┘ │
└───────────────────────────────────────────────────────────────────┘
🎨 이미지 프롬프트: "Editorial horizontal flow diagram on dark navy #0f1722 background showing a 10-stage user request flow as a clean left-to-right pipeline that loops back. Top row left-to-right: stage 1 'Client' (icon: laptop+phone) → stage 2 'DNS' (icon: globe with address) → stage 3 'Anti-DDoS' (icon: shield with arrows blocked) → stage 4 'WAF' (icon: brick wall + filter) → stage 5 'Load Balancer L4/L7' (icon: traffic distributor). The pipeline then bends at stage 5 and continues right-to-left on the bottom row: stage 6 'Web Server · Nginx' (icon: web server rack) → stage 7 'API Gateway' (icon: gate with API tag) → stage 8 'WAS' (icon: server with gears) → stage 9 'Cache · Redis' (icon: lightning bolt cylinder) → stage 9b 'DB Primary+Replica' (icon: two linked database cylinders) → stage 10 'Storage · SAN/NAS' (icon: striped disk array). Each stage is a card with a teal #00b894 left border and purple #6c5ce7 connecting arrows. Tiny red warning dot on every stage with label 'SPOF risk' floating subtly. Top-right corner has a small badge 'End-to-end latency budget: 2 sec'. Clean editorial illustration style, 16:9. CRITICAL: All visible text MUST be in English ONLY. Each label appears EXACTLY ONCE."

사용자 요청 — 10계층 흐름 전체도
💡 TTL 전략 — 평상시 TTL 24h (캐시 효율). 변경 직전 TTL 60s로 단축 → 변경 → 다시 24h. DNS Failover 활용 사례 ★
worker_processes auto;
worker_connections 4096;
proxy_pass http://was_upstream;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_read_timeout 30s;
gzip on;
limit_req zone=login burst=10;
6 슬라이드 · 약 10분
Client → Web → WAS → Cache → DB
Client → Web → APIGW → WAS → Cache → DB
Web → APIGW → [Istio Mesh] → MS → Cache → DB
🎨 이미지 프롬프트: "Editorial vertical stacking illustration on dark navy #0f1722 background showing the evolution from 3-Tier to 6-Tier as four horizontal rows, each row a complete pipeline of connected boxes. ROW 1 labeled '3-Tier · baseline · 95% of KR systems': three boxes 'Web → WAS → DB' with thin teal arrows. ROW 2 labeled '4-Tier · +Cache · 1000+ concurrent users': four boxes 'Web → WAS → Cache(Redis) → DB' with the new 'Cache' box highlighted in glowing teal. ROW 3 labeled '5-Tier · +API GW · public API era': five boxes 'Web → API GW(Kong) → WAS → Cache → DB' with 'API GW' highlighted in glowing purple. ROW 4 labeled '6-Tier · +Service Mesh · 50+ microservices': six boxes 'Web → API GW → Service Mesh(Istio) → MS Cluster → Cache → DB' with 'Service Mesh' highlighted in glowing orange and a small Istio honeycomb icon. Right-edge stacked counter ribbon showing '3T: 95% · 4T: included · 5T: 5% · 6T: <1%' of Korean systems. Tiny KR brand silhouettes next to relevant rows: 'Kakao · Naver · Toss' next to 6-Tier. Clean editorial illustration style, teal #00b894 and purple #6c5ce7 accents, 16:9. CRITICAL: All visible text MUST be in English ONLY. Each label appears EXACTLY ONCE."

N-Tier — 3-Tier에서 어떻게 확장하는가?
🎨 이미지 프롬프트: "Editorial split illustration on dark navy #0f1722 background contrasting Monolith vs Microservices. LEFT HALF labeled 'Before · Monolithic 3-Tier': one large solid block labeled 'Single Codebase · Single Deploy · Single DB' with cracks running through it; thin red labels around it 'deploy 1 month · cross-team blocking · partial fault = total down'. A small dashed arrow points right with a label 'Decompose by Bounded Context'. RIGHT HALF labeled 'After · Microservices': five floating hexagonal service nodes arranged in a constellation, each clearly labeled — 'Auth Service', 'Approval Service', 'Board Service', 'Mail Service', 'File Service' — each with its own small DB cylinder underneath labeled 'Own DB' (or 'Object Store' for File). Subtle teal connecting lines between hexagons represent service-mesh calls. Bottom strip across both halves: '4 boxes must be ✓ before MSA — Deploy time, Team blocking, Partial fault blast radius, Ops headcount 30+'. Two-Pizza Team icon (small pizza+people) appears next to one of the hexagons. Clean editorial illustration style, teal #00b894 and purple #6c5ce7 accents, 16:9. CRITICAL: All visible text MUST be in English ONLY. Each label appears EXACTLY ONCE."

마이크로서비스 — 언제·어떻게 분해하는가?
| 비교축 | 3-Tier | 마이크로서비스 |
|---|---|---|
| 개발 속도 | 빠름 (단일 코드베이스) | 느림 (분산 조율) |
| 배포 | 전체 동시 (위험) | 서비스 단위 (안전) |
| 운영 인력 | 5~20명 | 30명+ |
| 장애 격리 | 약함 (전체 중단) | 강함 (부분 영향) |
| 트랜잭션 | DB 트랜잭션 단순 | Saga·Eventual Consistency |
| 모니터링 | 단순 (APM 1대) | 복잡 (분산 트레이싱 필수) |
| 인프라 비용 | 낮음 | 높음 (K8s·서비스 메시) |
| 국내 표준 | 95% 시스템 | 대기업 일부·핀테크 |
📌 TA 의사결정 — 3-Tier 유지 vs MSA 이전 - 3-Tier: 「운영 인력 부족 + 시스템 잘 돌아감」 → 그대로 - MSA: 「배포 빈도 주 5회 + 팀 10개+ + 운영 30명+」 → 검토 시작
5 슬라이드 · 약 8분
| 계층 | 제품 | 대수 |
|---|---|---|
| WAF | Penta WAPPLES | 2 (HA) |
| LB | F5 BIG-IP i7800 | 2 (HA) |
| Web | Nginx | 4 |
| WAS | JEUS 8 | 6 |
| Cache | Redis 7 Cluster | 3 |
| DB | Oracle 19c RAC | 2 |
| Storage | NetApp AFF A800 | 1 (Dual Controller) |
| 계층 | 제품 | 대수 |
|---|---|---|
| Anti-DDoS | Radware DefensePro | 1 |
| WAF | Penta WAPPLES | 2 |
| LB | HAProxy 2.x | 2 |
| Web | Nginx | 2 |
| WAS | Tomcat 10 | 4 |
| DB | Tibero 7 (TAC) | 2 |
| Storage | Dell PowerStore | 1 |
| 계층 | 제품 | 비고 |
|---|---|---|
| 메인프레임 | IBM z16 | 코어 거래 |
| 오픈계 WAS | JEUS·WebLogic·Spring Boot | 채널·내부 |
| DB | Oracle Exadata · DB2 | OLTP·정산 |
| 채널 | API GW(Kong) + MCI/EAI | 채널 통합 |
| Storage | EMC PowerMax · IBM DS8K | 동기 복제 |
| 보안 | HSM·KCMVP 모듈 | 키 관리 |
| 구분 | 대학 학사 | 공공 그룹웨어 | 금융 코어 |
|---|---|---|---|
| 사용자 | 1.2만 | 5,000 | 500만 |
| 동시 피크 | 8,000 | 2,500 | 200,000 |
| 아키텍처 | 4-Tier | 3-Tier | 6-Tier (+ 메인프레임) |
| SLA | 99.9% | 99.9% | 99.99%~99.999% |
| WAS | JEUS | Tomcat | JEUS + WebLogic + Spring Boot |
| DB | Oracle RAC | Tibero | Oracle Exadata + DB2 |
| 이중화 | LB·WAS·DB 모두 | LB·WAS·DB 모두 | 사이트 + 모든 계층 |
| DR | 백업·수동 복구 | 백업 센터 | 3-site Active-Active |
| 인증 | ISMS-P | ISMS-P + 국정원 | 금융보안원 + PCI-DSS |
| 운영 인력 | 8~12명 | 5~8명 | 100명+ |
| 5년 TCO | 60억 | 40억 | 2,500억+ |
8 슬라이드 · 약 13분
| 계층 | SLA 배분 | 실측 평균 | 비고 |
|---|---|---|---|
| ① Client | 100 ms | 80 ms | 브라우저 렌더링 |
| ② DNS | 50 ms | 5 ms | 캐시되면 0 ms |
| ③ Anti-DDoS | 5 ms | 3 ms | 정상 트래픽 |
| ④ WAF | 5 ms | 4 ms | 룰 평가 |
| ⑤ LB | 5 ms | 2 ms | 라우팅 |
| ⑥ Web | 10 ms | 5 ms | 정적·프록시 |
| ⑦ API GW (선택) | 5 ms | 3 ms | 인증·라우팅 |
| ⑧ WAS | 800 ms | 600 ms | 비즈니스 로직 ★ |
| ⑨ Cache | 5 ms | 0.5 ms | 캐시 히트 |
| ⑩ DB·Storage | 900 ms | 700 ms | I/O·트랜잭션 ★ |
| 네트워크 왕복 | 115 ms | 80 ms | 각 단계 합산 |
| 총합 | 2,000 ms | 1,482 ms | 여유 518 ms |
💡 TA 분석법 — 2초 SLA 미달 시 「WAS·DB」가 합쳐 1.7초를 차지. 모니터링·튜닝 1순위.
🎨 이미지 프롬프트: "Editorial horizontal stacked bar chart illustration on dark navy #0f1722 background visualizing the '2-second SLA latency budget' broken down across 10 layers. ONE long horizontal bar at the center spanning most of the canvas labeled '2000 ms SLA Budget · per screen response'. The bar is divided into colored segments proportional to their share: tiny teal slices for 'Client 100ms · DNS 50ms · Anti-DDoS 5ms · WAF 5ms · LB 5ms · Web 10ms · API GW 5ms · Cache 5ms · Network 115ms', and two HUGE purple slices labeled prominently 'WAS · 800ms' and 'DB+Storage · 900ms' marked with red star icons ★. Above the bar a thinner reference bar showing actual measured times totaling '1,482 ms · 518 ms slack' in green. Right side has a vertical legend with each layer color-coded. Bottom callout box says 'WAS + DB = 85% of the budget → tune these FIRST (Jennifer, Pinpoint, pgBadger)'. A red magnifying glass icon hovers over the two large purple slices. Clean editorial illustration style, teal #00b894 / purple #6c5ce7 / red accents, 16:9. CRITICAL: All visible text MUST be in English ONLY. Each label appears EXACTLY ONCE."

응답시간 분해 — SLA 「화면당 2초」를 10계층에 배분