토픽 4 / 21·답안작성
비교표 핵심정리
💡
시험에서 자주 출제되는 주요 비교 항목을 정리
1. 데이터베이스
ACID vs BASE
| 구분 | ACID | BASE |
|---|---|---|
| 적용 | RDBMS | NoSQL |
| 일관성 | 강한 일관성 | 최종 일관성 (Eventual) |
| 가용성 | 일관성 우선 | 가용성 우선 |
| 트랜잭션 | 엄격한 트랜잭션 | 유연한 트랜잭션 |
| 확장 | 수직 확장 | 수평 확장 |
| 사례 | Oracle, MySQL | MongoDB, Cassandra |
SQL vs NoSQL
| 구분 | SQL (RDBMS) | NoSQL |
|---|---|---|
| 스키마 | 고정 스키마 | 유연한 스키마 |
| 확장 | 수직 확장 (Scale-Up) | 수평 확장 (Scale-Out) |
| 관계 | JOIN 지원 | JOIN 제한적 |
| 일관성 | ACID 보장 | BASE (최종 일관성) |
| 사례 | MySQL, PostgreSQL | MongoDB, Redis, Cassandra |
낙관적 락 vs 비관적 락
| 구분 | 낙관적 락 (Optimistic) | 비관적 락 (Pessimistic) |
|---|---|---|
| 가정 | 충돌 드묾 | 충돌 빈번 |
| 락 시점 | 커밋 시점 검증 | 조회 시점 락 획득 |
| 동시성 | 높음 | 낮음 |
| 구현 | 버전 컬럼 | SELECT FOR UPDATE |
| 적합 | 읽기 위주 | 쓰기 위주 |
클러스터드 vs 넌클러스터드 인덱스
| 구분 | 클러스터드 | 넌클러스터드 |
|---|---|---|
| 물리 정렬 | 데이터 물리적 정렬 | 별도 인덱스 구조 |
| 개수 | 테이블당 1개 | 여러 개 가능 |
| 검색 속도 | 범위 검색 빠름 | 포인트 검색 빠름 |
| 저장 | 리프=데이터 | 리프=포인터 |
2PC vs Saga
| 구분 | 2PC (Two-Phase Commit) | Saga Pattern |
|---|---|---|
| 일관성 | 강한 일관성 | 최종 일관성 |
| 블로킹 | 블로킹 | 논블로킹 |
| 롤백 | 자동 롤백 | 보상 트랜잭션 |
| 확장성 | 낮음 | 높음 |
| 적합 | 단일 DB | MSA/분산 |
OLTP vs OLAP
| 구분 | OLTP | OLAP |
|---|---|---|
| 목적 | 트랜잭션 처리 | 분석/의사결정 |
| 쿼리 | 단순, 빈번 | 복잡, 대량 |
| 데이터 | 현재 데이터 | 이력 데이터 |
| 정규화 | 높음 (3NF) | 낮음 (비정규화) |
| 응답시간 | ms 단위 | 초~분 단위 |
2. 시스템 아키텍처
모놀리식 vs MSA
| 구분 | 모놀리식 | MSA (마이크로서비스) |
|---|---|---|
| 배포 | 전체 배포 | 서비스별 독립 배포 |
| 확장 | 전체 확장 | 서비스별 확장 |
| 기술 | 단일 기술 스택 | 폴리글랏 가능 |
| 장애 | 전체 영향 | 장애 격리 |
| 복잡성 | 단순 | 분산 시스템 복잡성 |
| 적합 | 소규모, 초기 | 대규모, 성숙 조직 |
동기 vs 비동기 통신
| 구분 | 동기 (Sync) | 비동기 (Async) |
|---|---|---|
| 응답 | 즉시 대기 | 나중에 처리 |
| 결합도 | 강한 결합 | 느슨한 결합 |
| 장애 전파 | 전파됨 | 격리됨 |
| 처리량 | 낮음 | 높음 |
| 구현 | REST, gRPC | 메시지 큐, 이벤트 |
REST vs GraphQL vs gRPC
| 구분 | REST | GraphQL | gRPC |
|---|---|---|---|
| 프로토콜 | HTTP | HTTP | HTTP/2 |
| 데이터 형식 | JSON | JSON | Protobuf (바이너리) |
| 오버페칭 | 발생 | 해결 | N/A |
| 타입 안전 | 약함 | 스키마 | 강함 (IDL) |
| 성능 | 보통 | 보통 | 빠름 |
| 적합 | 범용 API | 유연한 쿼리 | 내부 서비스 통신 |
수평 확장 vs 수직 확장
| 구분 | 수평 확장 (Scale-Out) | 수직 확장 (Scale-Up) |
|---|---|---|
| 방식 | 서버 추가 | 서버 스펙 업그레이드 |
| 비용 | 선형 증가 | 지수적 증가 |
| 한계 | 이론적 무한 | 물리적 한계 |
| 복잡도 | 분산 처리 복잡 | 단순 |
| 가용성 | 고가용성 가능 | SPOF 위험 |
Saga Choreography vs Orchestration
| 구분 | Choreography | Orchestration |
|---|---|---|
| 조율 | 이벤트 기반 분산 | 중앙 오케스트레이터 |
| 결합도 | 느슨함 | 오케스트레이터 의존 |
| 가시성 | 낮음 (추적 어려움) | 높음 (중앙 관리) |
| 복잡성 | 서비스 많으면 복잡 | 오케스트레이터 복잡 |
| 장애 | 분산 | 오케스트레이터 SPOF |
CQRS vs 전통적 CRUD
| 구분 | CQRS | 전통적 CRUD |
|---|---|---|
| 모델 | 읽기/쓰기 분리 | 단일 모델 |
| 확장 | 독립 확장 | 함께 확장 |
| 복잡성 | 높음 | 낮음 |
| 일관성 | 최종 일관성 | 즉시 일관성 |
| 적합 | 읽기/쓰기 비대칭 | 단순 CRUD |
3. 클라우드/인프라
IaaS vs PaaS vs SaaS
| 구분 | IaaS | PaaS | SaaS |
|---|---|---|---|
| 관리 범위 | OS부터 관리 | 앱만 관리 | 사용만 |
| 유연성 | 높음 | 중간 | 낮음 |
| 운영 부담 | 높음 | 중간 | 낮음 |
| 사례 | AWS EC2 | Heroku | Gmail |
컨테이너 vs VM
| 구분 | 컨테이너 | VM (가상머신) |
|---|---|---|
| 가상화 | OS 레벨 | 하드웨어 레벨 |
| 크기 | MB 단위 | GB 단위 |
| 시작 시간 | 초 단위 | 분 단위 |
| 격리 | 프로세스 격리 | 완전 격리 |
| 오버헤드 | 낮음 | 높음 |
| 사례 | Docker | VMware, VirtualBox |
K8s Deployment vs StatefulSet vs DaemonSet
| 구분 | Deployment | StatefulSet | DaemonSet |
|---|---|---|---|
| 용도 | Stateless 앱 | Stateful 앱 | 노드당 1개 |
| Pod 이름 | 랜덤 | 순차적 고정 | 노드별 |
| 스토리지 | 공유 가능 | 개별 PVC | 노드 로컬 |
| 스케일링 | 자유 | 순차적 | 노드 수 |
| 사례 | 웹 서버 | DB, Kafka | 로그 수집, 모니터링 |
퍼블릭 vs 프라이빗 vs 하이브리드 클라우드
| 구분 | 퍼블릭 | 프라이빗 | 하이브리드 |
|---|---|---|---|
| 소유 | CSP | 조직 | 혼합 |
| 비용 | 사용량 기반 | 초기 투자 높음 | 중간 |
| 보안 | 공유 책임 | 완전 통제 | 선택적 |
| 확장성 | 무한 | 제한적 | 유연 |
| 규제 | 제한 | 충족 용이 | 균형 |
Lambda vs Kappa 아키텍처
| 구분 | Lambda | Kappa |
|---|---|---|
| 레이어 | Batch + Speed | 단일 스트림 |
| 복잡도 | 높음 (이중 관리) | 낮음 (단일) |
| 재처리 | Batch 레이어 | 스트림 재생 |
| 지연 | 배치 지연 존재 | 실시간 |
| 적합 | 정확성 중요 | 실시간 중요 |
4. 네트워크
TCP vs UDP
| 구분 | TCP | UDP |
|---|---|---|
| 연결 | 연결 지향 (3-way) | 비연결 |
| 신뢰성 | 보장 | 미보장 |
| 순서 | 보장 | 미보장 |
| 속도 | 느림 | 빠름 |
| 오버헤드 | 높음 (20B+) | 낮음 (8B) |
| 사례 | HTTP, FTP | DNS, 스트리밍, 게임 |
HTTP/1.1 vs HTTP/2 vs HTTP/3
| 구분 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 전송 | TCP | TCP | QUIC (UDP) |
| 멀티플렉싱 | 불가 | 가능 | 가능 |
| HOL 블로킹 | 있음 | TCP 레벨 | 없음 |
| 헤더 압축 | 없음 | HPACK | QPACK |
| 연결 설정 | 3-RTT | 1-RTT | 0-RTT |
OSI 7계층 vs TCP/IP 4계층
| OSI | TCP/IP | 프로토콜 |
|---|---|---|
| 응용/표현/세션 | 응용 | HTTP, FTP, DNS |
| 전송 | 전송 | TCP, UDP |
| 네트워크 | 인터넷 | IP, ICMP |
| 데이터링크/물리 | 네트워크 접근 | Ethernet |
IPv4 vs IPv6
| 구분 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32bit | 128bit |
| 표기 | 10진수 (.) | 16진수 (:) |
| 주소 수 | 약 43억 | 사실상 무한 |
| NAT | 필요 | 불필요 |
| 보안 | 선택 (IPSec) | 기본 내장 |
| 헤더 | 가변 (20-60B) | 고정 (40B) |
L4 vs L7 로드밸런서
| 구분 | L4 (전송 계층) | L7 (응용 계층) |
|---|---|---|
| 기준 | IP/Port | URL/헤더/쿠키 |
| 속도 | 빠름 | 느림 |
| 기능 | 단순 분배 | 콘텐츠 기반 라우팅 |
| SSL | 미처리 | SSL 오프로딩 |
| 비용 | 낮음 | 높음 |
5. 보안
대칭키 vs 비대칭키 암호화
| 구분 | 대칭키 | 비대칭키 |
|---|---|---|
| 키 개수 | 1개 (동일) | 2개 (공개/개인) |
| 속도 | 빠름 | 느림 |
| 키 배포 | 어려움 | 쉬움 |
| 용도 | 데이터 암호화 | 키 교환, 전자서명 |
| 사례 | AES, ChaCha20 | RSA, ECC |
인증 vs 인가
| 구분 | 인증 (Authentication) | 인가 (Authorization) |
|---|---|---|
| 질문 | "누구인가?" | "권한이 있는가?" |
| 검증 | 신원 확인 | 접근 권한 확인 |
| 순서 | 먼저 | 인증 후 |
| 예시 | 로그인 | 리소스 접근 |
OAuth 2.0 vs OIDC vs SAML
| 구분 | OAuth 2.0 | OIDC | SAML |
|---|---|---|---|
| 목적 | 인가 | 인증 + 인가 | 인증 |
| 토큰 | Access Token | ID Token + Access | Assertion (XML) |
| 형식 | JSON | JSON (JWT) | XML |
| 적합 | API 권한 위임 | 웹/모바일 SSO | 기업 SSO |
JWT vs Session
| 구분 | JWT | Session |
|---|---|---|
| 저장 | 클라이언트 | 서버 |
| 상태 | Stateless | Stateful |
| 확장성 | 좋음 | 세션 공유 필요 |
| 무효화 | 어려움 | 쉬움 |
| 크기 | 큼 | 작음 (Session ID) |
RBAC vs ABAC
| 구분 | RBAC | ABAC |
|---|---|---|
| 기준 | 역할 (Role) | 속성 (Attribute) |
| 유연성 | 낮음 | 높음 |
| 복잡도 | 단순 | 복잡 |
| 관리 | 역할 기반 | 정책 기반 |
| 적합 | 정적 권한 | 동적/상황 기반 |
제로 트러스트 vs 경계 보안
| 구분 | 제로 트러스트 | 경계 보안 |
|---|---|---|
| 원칙 | 아무도 신뢰 안함 | 내부는 신뢰 |
| 검증 | 항상 검증 | 경계에서 검증 |
| 경계 | 없음 (마이크로) | 내/외부 구분 |
| 적합 | 클라우드, 재택 | 전통적 온프레미스 |
6. 소프트웨어공학
애자일 vs 워터폴
| 구분 | 애자일 | 워터폴 |
|---|---|---|
| 접근 | 반복/점진적 | 순차적 |
| 요구사항 | 변경 수용 | 초기 확정 |
| 고객 참여 | 지속적 | 초기/말기 |
| 산출물 | 동작 소프트웨어 | 문서 |
| 적합 | 불확실성 높음 | 요구 명확 |
스크럼 vs 칸반
| 구분 | 스크럼 | 칸반 |
|---|---|---|
| 주기 | 스프린트 (고정) | 연속 흐름 |
| 역할 | PO, SM, Team | 역할 미정의 |
| 변경 | 스프린트 내 동결 | 언제든 변경 |
| 제한 | 스프린트 용량 | WIP 제한 |
| 측정 | 속도 (Velocity) | 리드타임, 사이클타임 |
TDD vs BDD
| 구분 | TDD | BDD |
|---|---|---|
| 관점 | 개발자 | 비즈니스 |
| 언어 | 코드 (단위 테스트) | 자연어 (Given-When-Then) |
| 단위 | 함수/메서드 | 기능/행위 |
| 도구 | JUnit, pytest | Cucumber, SpecFlow |
CI vs CD (Delivery vs Deployment)
| 구분 | CI | CD (Delivery) | CD (Deployment) |
|---|---|---|---|
| 범위 | 빌드/테스트 | + 릴리스 준비 | + 자동 배포 |
| 자동화 | 통합 자동화 | 릴리스 자동화 | 배포 자동화 |
| 승인 | 자동 | 수동 승인 | 자동 |
단위 vs 통합 vs E2E 테스트
| 구분 | 단위 (Unit) | 통합 (Integration) | E2E |
|---|---|---|---|
| 범위 | 함수/클래스 | 모듈 간 | 전체 시스템 |
| 속도 | 빠름 | 중간 | 느림 |
| 격리 | Mock 사용 | 부분 통합 | 실제 환경 |
| 비용 | 낮음 | 중간 | 높음 |
| 비율 | 70% | 20% | 10% |
7. 인공지능/ML
AI vs ML vs DL
| 구분 | AI | ML | DL |
|---|---|---|---|
| 범위 | 가장 넓음 | AI의 부분집합 | ML의 부분집합 |
| 방식 | 규칙/학습 | 데이터 학습 | 신경망 |
| 특징 추출 | 수동 | 수동/자동 | 자동 |
| 데이터 | 적음~많음 | 중간 | 대량 필요 |
지도 vs 비지도 vs 강화 학습
| 구분 | 지도 학습 | 비지도 학습 | 강화 학습 |
|---|---|---|---|
| 레이블 | 있음 | 없음 | 보상 신호 |
| 목표 | 예측 | 패턴 발견 | 보상 최대화 |
| 예시 | 분류, 회귀 | 클러스터링, 차원축소 | 게임, 로봇 |
CNN vs RNN vs Transformer
| 구분 | CNN | RNN | Transformer |
|---|---|---|---|
| 입력 | 그리드 (이미지) | 시퀀스 | 시퀀스 |
| 연산 | 컨볼루션 | 순환 | 어텐션 |
| 병렬화 | 가능 | 어려움 | 가능 |
| 장거리 | 제한적 | Vanishing | Self-Attention |
| 용도 | 이미지 | 시계열 | NLP, 범용 |
RAG vs Fine-tuning
| 구분 | RAG | Fine-tuning |
|---|---|---|
| 방식 | 검색 + 생성 | 모델 재학습 |
| 데이터 | 외부 DB 연결 | 학습 데이터 필요 |
| 비용 | 낮음 | 높음 (GPU) |
| 최신성 | 실시간 반영 | 재학습 필요 |
| 환각 | 감소 (근거 제공) | 여전히 존재 |
Precision vs Recall vs F1
| 구분 | Precision (정밀도) | Recall (재현율) | F1 Score |
|---|---|---|---|
| 정의 | TP/(TP+FP) | TP/(TP+FN) | 조화평균 |
| 의미 | 예측 중 정답 비율 | 실제 중 예측 비율 | 균형 지표 |
| 중요 시점 | 오탐 비용 높을 때 | 미탐 비용 높을 때 | 균형 필요 시 |
| 예시 | 스팸 필터 | 암 진단 | 일반적 평가 |
8. 법/제도/표준
ISMS vs ISMS-P vs ISO 27001
| 구분 | ISMS | ISMS-P | ISO 27001 |
|---|---|---|---|
| 범위 | 정보보호 | 정보보호+개인정보 | 정보보호 |
| 기준 | 국내 | 국내 | 국제 |
| 인증기관 | KISA | KISA | 국제 인증기관 |
| 통제항목 | 80개(관리체계 16 + 보호대책 64) | 102개(관리체계 16 + 보호대책 64 + 개인정보 22) | 93개 (Annex A) |
개인정보보호법 vs 정보통신망법 vs 신용정보법
| 구분 | 개인정보보호법 | 정보통신망법 | 신용정보법 |
|---|---|---|---|
| 성격 | 일반법 | 온라인 특화 | 금융 특화 |
| 적용 | 모든 개인정보처리자 | 정보통신서비스 | 금융/신용 |
| 감독 | 개인정보위 | 방통위/개인정보위 | 금융위 |
GDPR vs 개인정보보호법 vs CCPA
| 구분 | GDPR (EU) | 개인정보보호법 (한국) | CCPA (미국) |
|---|---|---|---|
| 역외적용 | 있음 | 있음 | 있음 |
| 과징금 | 매출 4% | 매출 3% | 건당 벌금 |
| 삭제권 | 있음 | 있음 | 있음 |
| DPO | 의무 | 일부 의무 | 의무 아님 |
CC인증 vs KCMVP vs GS인증
| 구분 | CC인증 | KCMVP | GS인증 |
|---|---|---|---|
| 대상 | 보안제품 전반 | 암호모듈 | SW 품질 |
| 기준 | ISO 15408 | KS X ISO 19790 | ISO 25010 |
| 용도 | 공공 보안제품 | 암호화 제품 | SW 품질 인증 |
| 등급 | EAL 1~7 | 검증필 | 1등급/2등급 |
9. 프로젝트관리/IT경영
COBIT vs ITIL vs ISO 20000
| 구분 | COBIT | ITIL | ISO 20000 |
|---|---|---|---|
| 목적 | IT 거버넌스 | IT 서비스 관리 | ITSM 인증 |
| 성격 | 프레임워크 | 베스트 프랙티스 | 표준 |
| 인증 | 없음 | 개인 인증 | 조직 인증 |
| 초점 | 통제/감사 | 서비스 품질 | 인증 요구사항 |
PMBOK vs PRINCE2 vs Agile
| 구분 | PMBOK | PRINCE2 | Agile |
|---|---|---|---|
| 접근 | 지식 체계 | 방법론 | 가치/원칙 |
| 구조 | 10개 지식영역 | 7원칙/7테마/7프로세스 | 4가치/12원칙 |
| 단계 | 5 프로세스 그룹 | 단계 게이트 | 반복 (스프린트) |
| 적합 | 범용 | 통제 중심 | 변화 대응 |
RTO vs RPO
| 구분 | RTO (Recovery Time Objective) | RPO (Recovery Point Objective) |
|---|---|---|
| 정의 | 복구 목표 시간 | 복구 목표 시점 |
| 의미 | 얼마나 빨리 복구 | 얼마나 데이터 손실 허용 |
| 영향 | 가용성 | 데이터 손실 |
| 비용 | RTO↓ = 비용↑ | RPO↓ = 비용↑ |
CapEx vs OpEx
| 구분 | CapEx (자본 지출) | OpEx (운영 지출) |
|---|---|---|
| 성격 | 자산 취득 | 운영 비용 |
| 회계 | 감가상각 | 즉시 비용 |
| 예측 | 초기 큰 투자 | 지속적 소액 |
| 클라우드 | 온프레미스 | 클라우드 (사용량) |
10. 기타 핵심 비교
블록체인: PoW vs PoS
| 구분 | PoW (작업증명) | PoS (지분증명) |
|---|---|---|
| 검증 | 연산 능력 | 보유 지분 |
| 에너지 | 높음 | 낮음 |
| 진입장벽 | 장비 | 자본 |
| 사례 | Bitcoin | Ethereum 2.0 |
캐시: Write-Through vs Write-Back
| 구분 | Write-Through | Write-Back |
|---|---|---|
| 쓰기 | 캐시+메모리 동시 | 캐시만, 나중에 메모리 |
| 일관성 | 항상 일관 | 불일치 가능 |
| 성능 | 쓰기 느림 | 쓰기 빠름 |
| 복잡도 | 단순 | Dirty Bit 관리 |
가상화: 전가상화 vs 반가상화
| 구분 | 전가상화 (Full) | 반가상화 (Para) |
|---|---|---|
| OS 수정 | 불필요 | 필요 |
| 성능 | 느림 (에뮬레이션) | 빠름 |
| 호환성 | 높음 | 낮음 |
| 사례 | VMware | Xen |
개인정보: 가명정보 vs 익명정보
| 구분 | 가명정보 | 익명정보 |
|---|---|---|
| 정의 | 추가정보 없이 식별 불가 | 복원 불가능 |
| 활용 | 통계/연구/공익 (제한적) | 자유 활용 |
| 보호법 적용 | 적용 | 미적용 |
| 결합 | 결합전문기관 통해 가능 | 제한 없음 |
빠른 참조 인덱스
| 키워드 | 비교 항목 |
|---|---|
| DB 일관성 | ACID vs BASE |
| 트랜잭션 | 2PC vs Saga |
| 아키텍처 | 모놀리식 vs MSA |
| 통신 | 동기 vs 비동기, REST vs gRPC |
| 클라우드 | IaaS vs PaaS vs SaaS |
| 컨테이너 | VM vs Container |
| 보안 | 대칭키 vs 비대칭키 |
| 인증 | OAuth vs OIDC vs SAML |
| 방법론 | 애자일 vs 워터폴 |
| AI | CNN vs RNN vs Transformer |
| 법제도 | ISMS vs ISO 27001 |
| 프로젝트 | RTO vs RPO |
| 데이터 아키텍처 | 데이터 패브릭 vs 데이터 메시 |
| 블록체인 토큰 | STO vs NFT |
| AI 에이전트 | 단일 에이전트 vs 멀티에이전트 |
| 컴퓨터구조 | 폰 노이만 vs 하버드, RAID, Flynn 분류 |
| 자료구조 | 배열 vs 연결 리스트, BST vs AVL vs RB |
| 알고리즘 | 정렬 종합, Dijkstra vs BF, P vs NP |
| 운영체제 | 커널 구조, CPU 스케줄링, 동기화 |
| 암호화 알고리즘 | DES/AES/SEED, SHA 계열, SPN vs Feistel |
| AI 최적화 | SGD vs Adam, 양자화, 정규화 |
11. 추가 핵심 비교
프로세스 vs 스레드
| 구분 | 프로세스 | 스레드 |
|---|---|---|
| 메모리 | 독립 공간 | 공유 (힙, 코드) |
| 생성 비용 | 높음 | 낮음 |
| 컨텍스트 스위칭 | 무거움 | 가벼움 |
| 통신 | IPC 필요 | 직접 공유 |
| 장애 영향 | 격리됨 | 전체 영향 |
| 안정성 | 높음 | 낮음 (동기화 필요) |
페이징 vs 세그멘테이션
| 구분 | 페이징 | 세그멘테이션 |
|---|---|---|
| 크기 | 고정 (4KB) | 가변 |
| 단편화 | 내부 단편화 | 외부 단편화 |
| 관점 | 물리적 분할 | 논리적 분할 |
| 복잡도 | 단순 | 복잡 |
| 공유 | 어려움 | 쉬움 |
동기 vs 비동기 I/O
| 구분 | 동기 (Blocking) | 비동기 (Non-Blocking) |
|---|---|---|
| 대기 | 완료까지 대기 | 즉시 반환 |
| CPU 활용 | 낮음 | 높음 |
| 구현 | 단순 | 복잡 (콜백/이벤트) |
| 처리량 | 낮음 | 높음 |
| 사례 | 전통 I/O | Node.js, io_uring |
B-Tree vs B+Tree
| 구분 | B-Tree | B+Tree |
|---|---|---|
| 데이터 위치 | 모든 노드 | 리프 노드만 |
| 리프 연결 | 없음 | 연결 리스트 |
| 범위 검색 | 느림 | 빠름 |
| 포인트 검색 | 빠를 수 있음 | 항상 리프까지 |
| 용도 | 일반 | DBMS 인덱스 |
해시 인덱스 vs B-Tree 인덱스
| 구분 | 해시 인덱스 | B-Tree 인덱스 |
|---|---|---|
| 검색 | O(1) 평균 | O(log n) |
| 범위 검색 | 불가 | 가능 |
| 정렬 | 불가 | 가능 |
| 동등 비교 | 빠름 | 보통 |
| 메모리 | 많음 | 적음 |
스택 vs 큐 vs 덱
| 구분 | 스택 | 큐 | 덱 |
|---|---|---|---|
| 원리 | LIFO | FIFO | 양방향 |
| 삽입/삭제 | 한쪽 끝 | 양쪽 (각 1개) | 양쪽 모두 |
| 용도 | 함수 호출, 실행 취소 | 작업 대기열 | 슬라이딩 윈도우 |
정렬 알고리즘 비교
| 알고리즘 | 평균 | 최악 | 공간 | 안정성 |
|---|---|---|---|---|
| 퀵 정렬 | O(n log n) | O(n²) | O(log n) | 불안정 |
| 병합 정렬 | O(n log n) | O(n log n) | O(n) | 안정 |
| 힙 정렬 | O(n log n) | O(n log n) | O(1) | 불안정 |
| 삽입 정렬 | O(n²) | O(n²) | O(1) | 안정 |
BFS vs DFS
| 구분 | BFS (너비 우선) | DFS (깊이 우선) |
|---|---|---|
| 자료구조 | 큐 | 스택/재귀 |
| 탐색 순서 | 레벨별 | 경로별 |
| 최단 경로 | 보장 (무가중치) | 미보장 |
| 메모리 | 많음 | 적음 |
| 용도 | 최단거리, 레벨순회 | 경로탐색, 백트래킹 |
분할 정복 vs 동적 프로그래밍 vs 그리디
| 구분 | 분할 정복 | 동적 프로그래밍 | 그리디 |
|---|---|---|---|
| 부분 문제 | 독립적 | 중복됨 | 없음 |
| 접근 | 재귀 (Top-Down) | 메모이제이션/테이블 | 지역 최적 선택 |
| 최적해 | 보장 | 보장 | 미보장 (조건 필요) |
| 예시 | 퀵소트, 병합정렬 | 피보나치, 배낭 | 다익스트라, 허프만 |
RISC vs CISC
| 구분 | RISC | CISC |
|---|---|---|
| 명령어 | 단순, 고정 길이 | 복잡, 가변 길이 |
| 명령어 수 | 적음 | 많음 |
| 사이클 | 1 사이클/명령어 | 다중 사이클 |
| 레지스터 | 많음 | 적음 |
| 파이프라인 | 효율적 | 복잡 |
| 예시 | ARM, MIPS | x86, x64 |
캐시 교체 정책
| 구분 | LRU | LFU | FIFO |
|---|---|---|---|
| 기준 | 최근 사용 시간 | 사용 빈도 | 도착 순서 |
| 구현 | 복잡 | 복잡 | 단순 |
| 장점 | 시간 지역성 | 빈도 반영 | 단순함 |
| 단점 | 오버헤드 | 과거 빈도 누적 | 효율 낮음 |
선점 vs 비선점 스케줄링
| 구분 | 선점 (Preemptive) | 비선점 (Non-Preemptive) |
|---|---|---|
| CPU 회수 | 가능 | 불가능 |
| 응답 시간 | 좋음 | 나쁨 |
| 오버헤드 | 높음 | 낮음 |
| 예시 | RR, SRTF, 우선순위 | FCFS, SJF |
대칭 멀티프로세싱 vs 비대칭
| 구분 | SMP (대칭) | AMP (비대칭) |
|---|---|---|
| 역할 | 모든 CPU 동등 | 마스터/슬레이브 |
| OS | 하나의 OS | 마스터만 OS |
| 부하 분산 | 자동 | 수동 |
| 복잡도 | 높음 | 낮음 |
폭포수 vs 애자일 vs DevOps
| 구분 | 폭포수 | 애자일 | DevOps |
|---|---|---|---|
| 주기 | 긴 릴리스 | 스프린트 (2-4주) | 지속적 |
| 변경 | 어려움 | 수용 | 자동화 |
| 팀 | 분리 | 교차기능 | Dev+Ops 통합 |
| 피드백 | 말기 | 반복마다 | 실시간 |
모놀리식 vs 계층형 vs MSA
| 구분 | 모놀리식 | 계층형 (N-Tier) | MSA |
|---|---|---|---|
| 구조 | 단일 | 계층 분리 | 서비스 분리 |
| 배포 | 전체 | 계층별 | 서비스별 |
| 확장 | 전체 | 계층별 | 서비스별 |
| 복잡도 | 단순 | 중간 | 높음 |
메시지 큐 vs 이벤트 스트림
| 구분 | 메시지 큐 | 이벤트 스트림 |
|---|---|---|
| 소비 | 한 번 소비 후 삭제 | 여러 번 소비 가능 |
| 순서 | 보장 | 파티션 내 보장 |
| 보존 | 소비 후 삭제 | 설정 기간 보존 |
| 사례 | RabbitMQ, SQS | Kafka, Kinesis |
Kafka vs RabbitMQ vs Redis Pub/Sub
| 구분 | Kafka | RabbitMQ | Redis Pub/Sub |
|---|---|---|---|
| 모델 | 로그 기반 | 브로커 | In-Memory |
| 처리량 | 매우 높음 | 중간 | 높음 |
| 내구성 | 디스크 | 디스크 | 메모리 (휘발) |
| 재처리 | 가능 | 불가 | 불가 |
| 용도 | 스트리밍 | 작업 큐 | 실시간 알림 |
Blue-Green vs Canary vs Rolling 배포
| 구분 | Blue-Green | Canary | Rolling |
|---|---|---|---|
| 방식 | 환경 전환 | 점진적 트래픽 | 순차 교체 |
| 롤백 | 즉시 | 빠름 | 느림 |
| 리소스 | 2배 | 추가 필요 | 기존 사용 |
| 위험 | 낮음 | 낮음 | 중간 |
포워드 프록시 vs 리버스 프록시
| 구분 | 포워드 프록시 | 리버스 프록시 |
|---|---|---|
| 위치 | 클라이언트 측 | 서버 측 |
| 용도 | 클라이언트 보호 | 서버 보호 |
| IP 숨김 | 클라이언트 IP | 서버 IP |
| 예시 | 회사 프록시 | Nginx, HAProxy |
API Gateway vs Service Mesh
| 구분 | API Gateway | Service Mesh |
|---|---|---|
| 위치 | 진입점 (North-South) | 내부 (East-West) |
| 대상 | 외부 → 내부 | 서비스 ↔ 서비스 |
| 기능 | 인증, 라우팅, 속도제한 | mTLS, 관측성, 재시도 |
| 예시 | Kong, AWS API GW | Istio, Linkerd |
피싱 vs 스피어 피싱 vs 웨일링
| 구분 | 피싱 | 스피어 피싱 | 웨일링 |
|---|---|---|---|
| 대상 | 불특정 다수 | 특정 개인/조직 | 고위 임원 |
| 맞춤화 | 없음 | 높음 | 매우 높음 |
| 성공률 | 낮음 | 높음 | 매우 높음 |
IDS vs IPS vs SIEM
| 구분 | IDS | IPS | SIEM |
|---|---|---|---|
| 역할 | 탐지 | 탐지 + 차단 | 통합 분석 |
| 대응 | 알림 | 자동 차단 | 상관 분석 |
| 위치 | 패시브 | 인라인 | 중앙 |
WAF vs 방화벽 vs NGFW
| 구분 | WAF | 방화벽 | NGFW |
|---|---|---|---|
| 계층 | L7 (웹) | L3/L4 | L3-L7 |
| 대상 | 웹 공격 | 네트워크 | 애플리케이션 |
| 검사 | HTTP 페이로드 | IP/Port | DPI |
| 예시 | ModSecurity | iptables | Palo Alto |
핫 vs 웜 vs 콜드 사이트
| 구분 | 핫 (Hot) | 웜 (Warm) | 콜드 (Cold) |
|---|---|---|---|
| 복구 시간 | 즉시~분 | 수 시간 | 수 일 |
| 데이터 동기화 | 실시간 | 주기적 | 백업 복원 |
| 비용 | 높음 | 중간 | 낮음 |
| 인프라 | 상시 가동 | 일부 가동 | 장비만 |
퍼블릭 vs 프라이빗 vs 컨소시엄 블록체인
| 구분 | 퍼블릭 | 프라이빗 | 컨소시엄 |
|---|---|---|---|
| 참여 | 누구나 | 허가된 조직 | 연합 조직 |
| 투명성 | 완전 공개 | 비공개 | 제한 공개 |
| 속도 | 느림 | 빠름 | 중간 |
| 예시 | Bitcoin, Ethereum | Hyperledger | R3 Corda |
전가상화 vs 반가상화 vs 컨테이너
| 구분 | 전가상화 | 반가상화 | 컨테이너 |
|---|---|---|---|
| 게스트 OS | 수정 없음 | 수정 필요 | 공유 |
| 성능 | 느림 | 빠름 | 가장 빠름 |
| 격리 | 완전 | 완전 | 프로세스 |
| 오버헤드 | 높음 | 중간 | 낮음 |
데이터 웨어하우스 vs 데이터 레이크 vs 데이터 레이크하우스
| 구분 | 웨어하우스 | 레이크 | 레이크하우스 |
|---|---|---|---|
| 데이터 | 정형 | 정형+비정형 | 정형+비정형 |
| 스키마 | Schema-on-Write | Schema-on-Read | 둘 다 |
| 처리 | BI/리포팅 | ML/분석 | 통합 |
| 품질 | 높음 | 낮음 (늪) | 높음 |
| 사례 | Snowflake | S3, HDFS | Databricks |
ETL vs ELT
| 구분 | ETL | ELT |
|---|---|---|
| 변환 위치 | 중간 서버 | 타겟 시스템 |
| 적합 | 온프레미스 | 클라우드 |
| 확장성 | 제한적 | 높음 |
| 비용 | 별도 서버 | 타겟 자원 활용 |
Star 스키마 vs Snowflake 스키마
| 구분 | Star | Snowflake |
|---|---|---|
| 디멘션 | 비정규화 | 정규화 |
| 조인 | 적음 | 많음 |
| 저장 공간 | 많음 | 적음 |
| 쿼리 성능 | 빠름 | 느림 |
| 유지보수 | 어려움 | 쉬움 |
Batch vs Stream 처리
| 구분 | Batch | Stream |
|---|---|---|
| 처리 시점 | 주기적 | 실시간 |
| 지연 | 높음 | 낮음 |
| 데이터 | 전체 | 증분 |
| 복잡도 | 단순 | 복잡 |
| 예시 | Spark Batch, Hive | Kafka Streams, Flink |
GPT vs BERT vs T5
| 구분 | GPT | BERT | T5 |
|---|---|---|---|
| 방향 | 단방향 (Left→Right) | 양방향 | 인코더-디코더 |
| 목적 | 생성 | 이해 | 범용 |
| 학습 | 다음 토큰 예측 | 마스크 예측 | Text-to-Text |
| 용도 | 텍스트 생성 | 분류, QA | 번역, 요약, QA |
LoRA vs QLoRA vs Full Fine-tuning
| 구분 | Full Fine-tuning | LoRA | QLoRA |
|---|---|---|---|
| 파라미터 | 전체 | 일부 (Low-Rank) | 일부 + 양자화 |
| 메모리 | 매우 높음 | 낮음 | 매우 낮음 |
| 성능 | 최고 | 유사 | 약간 낮음 |
| 비용 | 높음 | 낮음 | 매우 낮음 |
12. 네트워크 핵심 비교
TCP vs UDP
| 구분 | TCP | UDP |
|---|---|---|
| 연결 | 연결 지향 (3-Way) | 비연결 |
| 신뢰성 | 보장 (재전송) | 미보장 |
| 순서 | 보장 | 미보장 |
| 속도 | 느림 | 빠름 |
| 헤더 | 20 바이트 | 8 바이트 |
| 흐름제어 | 있음 | 없음 |
| 용도 | HTTP, FTP, 이메일 | DNS, 스트리밍, 게임 |
IPv4 vs IPv6
| 구분 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32비트 | 128비트 |
| 표기 | 10진수 (192.168.0.1) | 16진수 (2001:db8::1) |
| 주소 개수 | 약 43억 | 사실상 무한 |
| 헤더 | 가변 (20-60B) | 고정 (40B) |
| NAT | 필요 | 불필요 |
| 보안 | 선택 (IPSec) | 내장 |
| 브로드캐스트 | 지원 | 멀티캐스트로 대체 |
L4 vs L7 로드밸런싱
| 구분 | L4 (Transport) | L7 (Application) |
|---|---|---|
| 기준 | IP, Port | URL, Header, Cookie |
| 속도 | 빠름 | 느림 |
| 기능 | 단순 분배 | 콘텐츠 기반 라우팅 |
| SSL 처리 | 불가 | SSL 오프로딩 가능 |
| 세션 | IP 기반 | 쿠키/헤더 기반 |
| 사례 | AWS NLB | AWS ALB, Nginx |
HTTP/1.1 vs HTTP/2 vs HTTP/3
| 구분 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 프로토콜 | TCP | TCP | QUIC (UDP) |
| 다중화 | 불가 | 스트림 다중화 | 스트림 다중화 |
| 헤더 압축 | 없음 | HPACK | QPACK |
| HOL 블로킹 | 있음 | TCP 레벨 존재 | 해결 |
| 연결 설정 | 1-RTT + TLS | 1-RTT + TLS | 0-RTT 가능 |
라우팅 프로토콜 비교
| 구분 | RIP | OSPF | BGP |
|---|---|---|---|
| 유형 | 거리벡터 | 링크상태 | 경로벡터 |
| 메트릭 | 홉 카운트 | 비용 (대역폭) | 경로 속성 |
| 범위 | 소규모 (15홉) | 대규모 AS 내부 | AS 간 (인터넷) |
| 수렴 | 느림 | 빠름 | 느림 |
| 표준 | IGP | IGP | EGP |
13. 데이터베이스 심화 비교
트랜잭션 격리수준
| 구분 | Read Uncommitted | Read Committed | Repeatable Read | Serializable |
|---|---|---|---|---|
| Dirty Read | O | X | X | X |
| Non-Repeatable | O | O | X | X |
| Phantom Read | O | O | O | X |
| 동시성 | 최고 | 높음 | 중간 | 낮음 |
| 일관성 | 최저 | 낮음 | 높음 | 최고 |
정규화 단계 비교
| 구분 | 1NF | 2NF | 3NF | BCNF |
|---|---|---|---|---|
| 조건 | 원자값 | 1NF + 부분종속 제거 | 2NF + 이행종속 제거 | 모든 결정자가 후보키 |
| 중복 | 많음 | 줄어듦 | 더 줄어듦 | 최소화 |
| 이상현상 | 많음 | 줄어듦 | 거의 없음 | 없음 |
NoSQL 유형별 비교
| 구분 | Key-Value | Document | Column-Family | Graph |
|---|---|---|---|---|
| 구조 | 키-값 쌍 | JSON/BSON | 컬럼 그룹 | 노드-엣지 |
| 스키마 | 없음 | 유연 | 유연 | 유연 |
| 쿼리 | 키 조회 | 필드 쿼리 | 컬럼 쿼리 | 그래프 순회 |
| 적합 | 캐시, 세션 | 콘텐츠 관리 | 시계열, 로그 | 관계 분석 |
| 사례 | Redis, DynamoDB | MongoDB | Cassandra, HBase | Neo4j |
인덱스 스캔 방식
| 구분 | Full Scan | Index Range Scan | Index Unique Scan | Index Skip Scan |
|---|---|---|---|---|
| 조건 | 인덱스 없음 | 범위 조건 | 유니크 + 등호 | 선두 컬럼 생략 |
| 효율 | 최저 | 높음 | 최고 | 중간 |
| 읽기 | 전체 | 범위 | 1건 | 선택적 |
14. 보안 심화 비교
SSL vs TLS
| 구분 | SSL 3.0 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|
| 상태 | 폐기 (취약) | 현재 사용 | 최신 권장 |
| 핸드셰이크 | 2-RTT | 2-RTT | 1-RTT (0-RTT 가능) |
| 암호 스위트 | 취약 | 선택 가능 | 안전한 것만 |
| 인증서 | 평문 전송 | 평문 전송 | 암호화 전송 |
인증 vs 인가
| 구분 | 인증 (Authentication) | 인가 (Authorization) |
|---|---|---|
| 질문 | "당신은 누구인가?" | "무엇을 할 수 있는가?" |
| 확인 | 신원 확인 | 권한 확인 |
| 시점 | 먼저 수행 | 인증 후 수행 |
| 방법 | ID/PW, 생체, MFA | RBAC, ABAC, ACL |
| 실패시 | 401 Unauthorized | 403 Forbidden |
RBAC vs ABAC vs ReBAC
| 구분 | RBAC | ABAC | ReBAC |
|---|---|---|---|
| 기준 | 역할 (Role) | 속성 (Attribute) | 관계 (Relationship) |
| 정책 | 역할-권한 매핑 | 조건식 평가 | 관계 그래프 |
| 유연성 | 낮음 | 높음 | 높음 |
| 복잡도 | 낮음 | 높음 | 중간 |
| 적합 | 정적 조직 | 동적 조건 | 소셜, 협업 |
암호화 알고리즘 비교
| 구분 | AES | RSA | SHA-256 | ECDSA |
|---|---|---|---|---|
| 유형 | 대칭키 | 비대칭키 | 해시 | 전자서명 |
| 키 길이 | 128/192/256 | 2048+ | N/A | 256 |
| 속도 | 빠름 | 느림 | 빠름 | 중간 |
| 용도 | 데이터 암호화 | 키 교환, 서명 | 무결성 검증 | 인증, 서명 |
공격 유형별 대응
| 공격 | 설명 | 대응 |
|---|---|---|
| SQL Injection | 쿼리 삽입 | Prepared Statement, ORM |
| XSS | 스크립트 삽입 | 입력 검증, CSP, 이스케이프 |
| CSRF | 위조 요청 | CSRF 토큰, SameSite 쿠키 |
| SSRF | 서버측 요청 위조 | 화이트리스트, 내부망 차단 |
| XXE | XML 외부 엔티티 | DTD 비활성화 |
15. 개발 방법론 비교
TDD vs BDD vs DDD
| 구분 | TDD | BDD | DDD |
|---|---|---|---|
| 관점 | 개발자 | 비즈니스 | 도메인 |
| 단위 | 테스트 케이스 | 시나리오 | 도메인 모델 |
| 언어 | 코드 | Given-When-Then | 유비쿼터스 언어 |
| 초점 | 기능 동작 | 사용자 행위 | 비즈니스 로직 |
단위 vs 통합 vs E2E 테스트
| 구분 | 단위 테스트 | 통합 테스트 | E2E 테스트 |
|---|---|---|---|
| 범위 | 함수/클래스 | 모듈 간 | 전체 시스템 |
| 속도 | 빠름 | 중간 | 느림 |
| 격리 | Mock 사용 | 일부 실제 | 실제 환경 |
| 비용 | 낮음 | 중간 | 높음 |
| 신뢰도 | 낮음 | 중간 | 높음 |
| 도구 | JUnit, Jest | TestContainers | Selenium, Cypress |
Git Flow vs GitHub Flow vs Trunk-Based
| 구분 | Git Flow | GitHub Flow | Trunk-Based |
|---|---|---|---|
| 브랜치 | 많음 (5종) | 적음 (2종) | 최소 (1종) |
| 복잡도 | 높음 | 낮음 | 낮음 |
| 배포 주기 | 긴 릴리스 | PR 머지 시 | 지속적 |
| 적합 | 대규모, 버전 관리 | 웹 서비스 | CI/CD 성숙 조직 |
16. 데이터 포맷 비교
JSON vs XML vs YAML
| 구분 | JSON | XML | YAML |
|---|---|---|---|
| 가독성 | 좋음 | 보통 | 매우 좋음 |
| 크기 | 작음 | 큼 | 작음 |
| 스키마 | JSON Schema | XSD | 없음 |
| 주석 | 불가 | 가능 | 가능 |
| 용도 | API, 설정 | 문서, SOAP | 설정 파일 |
Parquet vs ORC vs Avro
| 구분 | Parquet | ORC | Avro |
|---|---|---|---|
| 저장 방식 | 컬럼 기반 | 컬럼 기반 | 행 기반 |
| 압축 | 높음 | 매우 높음 | 중간 |
| 읽기 | 분석 쿼리 빠름 | 분석 쿼리 빠름 | 전체 행 빠름 |
| 스키마 | 내장 | 내장 | 내장 |
| 생태계 | Spark, Presto | Hive, Presto | Kafka, Hadoop |
| 적합 | 분석 | 분석 (Hive) | 스트리밍 |
Protobuf vs Avro vs Thrift
| 구분 | Protobuf | Avro | Thrift |
|---|---|---|---|
| 개발사 | Apache | Apache (Facebook) | |
| 스키마 | .proto | JSON | .thrift |
| 인코딩 | 바이너리 | 바이너리/JSON | 바이너리 |
| RPC | gRPC | 별도 | 내장 |
| 스키마 진화 | 좋음 | 매우 좋음 | 좋음 |
17. AI/ML 심화 비교
지도학습 vs 비지도학습 vs 강화학습
| 구분 | 지도학습 | 비지도학습 | 강화학습 |
|---|---|---|---|
| 레이블 | 있음 | 없음 | 보상 신호 |
| 목표 | 예측/분류 | 패턴 발견 | 최적 행동 |
| 예시 | 분류, 회귀 | 클러스터링, 차원축소 | 게임 AI, 로봇 |
| 알고리즘 | SVM, RF, DNN | K-means, PCA | Q-Learning, PPO |
RAG vs Fine-tuning
| 구분 | RAG | Fine-tuning |
|---|---|---|
| 방식 | 검색 + 생성 | 모델 재학습 |
| 지식 업데이트 | 문서 교체 (즉시) | 재학습 필요 |
| 비용 | 낮음 (인퍼런스) | 높음 (GPU 학습) |
| 환각 | 감소 (근거 제시) | 여전히 존재 |
| 적합 | 최신 정보, FAQ | 도메인 특화 |
Precision vs Recall vs F1
| 구분 | Precision (정밀도) | Recall (재현율) | F1 Score |
|---|---|---|---|
| 수식 | TP / (TP+FP) | TP / (TP+FN) | 2×P×R / (P+R) |
| 의미 | 예측 중 실제 양성 | 실제 양성 중 예측 | 정밀도-재현율 조화평균 |
| 중요 | 스팸 필터 (FP 최소화) | 암 진단 (FN 최소화) | 균형 필요 시 |
협업 필터링 vs 콘텐츠 기반 추천
| 구분 | 협업 필터링 | 콘텐츠 기반 |
|---|---|---|
| 기반 | 사용자 행동 유사성 | 아이템 속성 유사성 |
| 콜드 스타트 | 취약 | 상대적 강함 |
| 다양성 | 높음 | 낮음 (필터 버블) |
| 예시 | "이 상품을 본 사람들" | "비슷한 장르 영화" |
18. 네트워크 심화 비교
OSI 7계층 vs TCP/IP 4계층
| OSI 7계층 | TCP/IP 4계층 | 역할 |
|---|---|---|
| Application | Application | HTTP, FTP, DNS |
| Presentation | ↑ | 암호화, 압축 |
| Session | ↑ | 세션 관리 |
| Transport | Transport | TCP, UDP |
| Network | Internet | IP, 라우팅 |
| Data Link | Network Access | MAC, 스위치 |
| Physical | ↑ | 케이블, 신호 |
유니캐스트 vs 멀티캐스트 vs 브로드캐스트
| 구분 | 유니캐스트 | 멀티캐스트 | 브로드캐스트 |
|---|---|---|---|
| 대상 | 1:1 | 1:N (그룹) | 1:All |
| 효율 | 낮음 (N개 전송) | 높음 (1개 전송) | 중간 |
| 주소 | 개별 IP | 224.0.0.0/4 | 255.255.255.255 |
| 용도 | 일반 통신 | 스트리밍, IPTV | ARP, DHCP |
CIDR vs 서브넷 마스크
| 구분 | CIDR | 서브넷 마스크 |
|---|---|---|
| 표기 | /24 | 255.255.255.0 |
| 가변 | 가변 길이 | 클래스 기반 (A/B/C) |
| 집약 | 가능 (Supernetting) | 어려움 |
| 효율 | 높음 | 낮음 (주소 낭비) |
19. 품질/성능 지표 비교
SLA vs SLO vs SLI
| 구분 | SLA | SLO | SLI |
|---|---|---|---|
| 정의 | 서비스 수준 계약 | 서비스 수준 목표 | 서비스 수준 지표 |
| 성격 | 계약 (법적) | 내부 목표 | 실제 측정값 |
| 예시 | "99.9% 가용성 보장" | "99.95% 목표" | "현재 99.92%" |
| 위반 시 | 배상/크레딧 | 알림/개선 | 단순 기록 |
지연시간 백분위수
| 구분 | P50 (중앙값) | P90 | P99 | P99.9 |
|---|---|---|---|---|
| 의미 | 50%가 이 이하 | 90%가 이 이하 | 99%가 이 이하 | 99.9%가 이 이하 |
| 용도 | 평균 경험 | 대부분 경험 | 최악 케이스 | 극단 케이스 |
| 주의 | 평균은 왜곡됨 | Tail Latency 중요 | 장애 탐지 | SLA 기준 |
MTBF vs MTTR vs MTTA
| 구분 | MTBF | MTTR | MTTA |
|---|---|---|---|
| 의미 | 평균 고장 간격 | 평균 복구 시간 | 평균 응답 시간 |
| 수식 | 총 운영시간/고장횟수 | 총 복구시간/고장횟수 | 총 응답시간/인시던트수 |
| 목표 | 높을수록 좋음 | 낮을수록 좋음 | 낮을수록 좋음 |
| 관점 | 신뢰성 | 복구 능력 | 대응 속도 |
20. Kubernetes 워크로드 비교
Deployment vs StatefulSet vs DaemonSet
| 구분 | Deployment | StatefulSet | DaemonSet |
|---|---|---|---|
| 용도 | Stateless 앱 | Stateful 앱 | 노드당 1개 Pod |
| Pod 이름 | 랜덤 (xxx-abc123) | 고정 순번 (xxx-0, xxx-1) | 노드별 자동 |
| 스케일링 | 병렬 가능 | 순차적 (0→1→2) | 노드 수에 연동 |
| 스토리지 | 공유 가능 | Pod별 PVC (volumeClaimTemplates) | 일반 Volume |
| 네트워크 | 공유 Service | Headless Service (개별 DNS) | 노드 네트워크 |
| 롤링 업데이트 | 병렬 | 역순 (2→1→0) | 노드별 순차 |
| 사용 예시 | 웹서버, API | DB, Kafka, Redis | 로그수집, 모니터링 |
ReplicaSet vs Deployment
| 구분 | ReplicaSet | Deployment |
|---|---|---|
| 역할 | Pod 복제 유지 | ReplicaSet 관리 + 롤링 업데이트 |
| 업데이트 | 수동 | 자동 롤링 업데이트 |
| 롤백 | 불가 | revision 기반 롤백 |
| 직접 사용 | 비권장 | 권장 |
Job vs CronJob
| 구분 | Job | CronJob |
|---|---|---|
| 실행 | 1회성 | 주기적 |
| 완료 | completions 수 만큼 | Job 생성 반복 |
| 스케줄 | 즉시 | cron 표현식 (*/5 * * * *) |
| 용도 | 배치 작업, 마이그레이션 | 백업, 리포트, 정리 작업 |
21. 컨테이너 런타임 비교
Docker vs containerd vs CRI-O
| 구분 | Docker | containerd | CRI-O |
|---|---|---|---|
| 개발사 | Docker Inc | CNCF | Red Hat |
| 목적 | 범용 컨테이너 | 경량 런타임 | K8s 전용 |
| K8s 지원 | Dockershim (deprecated) | CRI 네이티브 | CRI 네이티브 |
| 이미지 빌드 | 가능 (docker build) | 불가 (BuildKit 별도) | 불가 |
| 오버헤드 | 높음 (daemon 필요) | 낮음 | 최소 |
| CLI | docker | ctr, crictl | crictl |
| 채택 | 개발환경 | EKS, GKE 기본 | OpenShift |
컨테이너 이미지 빌드 도구 비교
| 구분 | Docker Build | Kaniko | Buildah | BuildKit |
|---|---|---|---|---|
| 특징 | 전통적 방식 | Daemonless | Daemonless, OCI | 병렬 빌드 |
| 루트 권한 | 필요 | 불필요 | 불필요 | 선택적 |
| 캐싱 | 레이어 캐시 | 원격 캐시 | 레이어 캐시 | 고급 캐시 |
| CI/CD 적합 | 제한적 | 매우 적합 | 적합 | 적합 |
| K8s 내 실행 | 어려움 (DinD 필요) | 가능 | 가능 | 가능 |
22. CI/CD 도구 비교
Jenkins vs GitLab CI vs GitHub Actions vs ArgoCD
| 구분 | Jenkins | GitLab CI | GitHub Actions | ArgoCD |
|---|---|---|---|---|
| 유형 | Self-hosted | SaaS/Self | SaaS/Self | GitOps CD |
| 설정 파일 | Jenkinsfile | .gitlab-ci.yml | .github/workflows/ | Application CRD |
| 강점 | 플러그인 생태계 | All-in-one DevOps | GitHub 통합 | K8s 네이티브 |
| 학습 곡선 | 높음 | 중간 | 낮음 | 중간 |
| 스케일링 | 에이전트 수동 관리 | Runner 자동 스케일 | 호스티드 러너 | K8s 기반 |
| GitOps | 플러그인 필요 | 제한적 | 제한적 | 네이티브 |
| 비용 | 무료 (인프라 비용) | 무료 티어 있음 | 무료 티어 있음 | 무료 (OSS) |
CI vs CD vs GitOps
| 구분 | CI (Continuous Integration) | CD (Continuous Delivery) | GitOps |
|---|---|---|---|
| 목적 | 코드 통합/검증 | 배포 자동화 | 선언적 인프라 관리 |
| 트리거 | 코드 커밋/PR | CI 완료 후 | Git 변경 감지 |
| 산출물 | 빌드/테스트 결과 | 배포된 서비스 | 동기화된 클러스터 |
| 도구 예시 | Jenkins, GitHub Actions | Spinnaker, ArgoCD | ArgoCD, Flux |
| 방향 | Push | Push | Pull (클러스터가 Git 감시) |
23. 모니터링/Observability 도구 비교
Prometheus vs Grafana vs Datadog vs CloudWatch
| 구분 | Prometheus | Grafana | Datadog | CloudWatch |
|---|---|---|---|---|
| 유형 | 메트릭 수집/저장 | 시각화 | 통합 SaaS | AWS 네이티브 |
| 데이터 | 시계열 메트릭 | 대시보드 (데이터소스 연결) | 메트릭+로그+트레이스 | AWS 리소스 메트릭 |
| 쿼리 언어 | PromQL | 데이터소스별 | 자체 쿼리 | CloudWatch Insights |
| 배포 | Self-hosted | Self-hosted/Cloud | SaaS | AWS 관리형 |
| 비용 | 무료 (OSS) | 무료 (OSS)/유료 Cloud | 사용량 과금 | 사용량 과금 |
| 강점 | K8s 네이티브, 경량 | 다양한 데이터소스 | 올인원 | AWS 통합 |
Metrics vs Logs vs Traces (Observability 3요소)
| 구분 | Metrics | Logs | Traces |
|---|---|---|---|
| 형태 | 수치 (집계) | 텍스트 (이벤트) | 요청 흐름 |
| 용도 | 상태 모니터링 | 디버깅, 감사 | 분산 추적 |
| 카디널리티 | 낮음 | 높음 | 중간 |
| 도구 | Prometheus | ELK, Loki | Jaeger, Zipkin |
| 저장 비용 | 낮음 | 높음 | 중간 |
| 예시 | CPU 사용률 90% | "Error: connection refused" | 요청 A→B→C→D 지연 분석 |
ELK vs EFK vs PLG 스택
| 구분 | ELK | EFK | PLG |
|---|---|---|---|
| 구성 | Elasticsearch+Logstash+Kibana | Elasticsearch+Fluentd+Kibana | Promtail+Loki+Grafana |
| 수집기 | Logstash (JVM) | Fluentd (Ruby) | Promtail (Go) |
| 저장소 | Elasticsearch | Elasticsearch | Loki |
| 리소스 | 높음 | 중간 | 낮음 |
| 인덱싱 | 전문 인덱싱 | 전문 인덱싱 | 라벨만 인덱싱 |
| K8s 적합 | 무거움 | 적합 | 매우 적합 |
24. IaC (Infrastructure as Code) 도구 비교
Terraform vs Ansible vs Pulumi vs CloudFormation
| 구분 | Terraform | Ansible | Pulumi | CloudFormation |
|---|---|---|---|---|
| 개발사 | HashiCorp | Red Hat | Pulumi | AWS |
| 언어 | HCL (선언형) | YAML (절차형) | Python/TS/Go | YAML/JSON |
| 패러다임 | 선언형 | 절차형 (멱등성) | 명령형+선언형 | 선언형 |
| 상태 관리 | tfstate 파일 | 없음 (에이전트리스) | Pulumi Cloud | AWS 관리 |
| 멀티 클라우드 | 지원 (Provider) | 지원 (Module) | 지원 | AWS 전용 |
| 에이전트 | 불필요 | 불필요 (SSH) | 불필요 | 불필요 |
| 강점 | 인프라 프로비저닝 | 구성 관리 | 프로그래밍 유연성 | AWS 네이티브 |
Terraform vs OpenTofu
| 구분 | Terraform | OpenTofu |
|---|---|---|
| 라이선스 | BSL (변경됨) | MPL 2.0 (오픈소스) |
| 관리 | HashiCorp | Linux Foundation |
| 호환성 | - | Terraform과 호환 |
| 상태 파일 | 동일 | 동일 |
| 커뮤니티 | 대규모 | 성장 중 |
Helm vs Kustomize
| 구분 | Helm | Kustomize |
|---|---|---|
| 방식 | 템플릿 (values.yaml) | 오버레이 (패치) |
| 패키징 | Chart (tar.gz) | 없음 (plain YAML) |
| 버전 관리 | Chart 버전 | Git 기반 |
| 복잡도 | 높음 (Go 템플릿) | 낮음 |
| 저장소 | Helm Registry | Git |
| kubectl 통합 | helm install | kubectl apply -k |
| 릴리즈 관리 | 있음 (helm list) | 없음 |
25. 서비스 디스커버리 비교
Client-side vs Server-side Discovery
| 구분 | Client-side Discovery | Server-side Discovery |
|---|---|---|
| 로직 위치 | 클라이언트 | 로드밸런서/프록시 |
| 레지스트리 접근 | 직접 조회 | LB가 조회 |
| 장점 | 단순, 홉 감소 | 클라이언트 독립 |
| 단점 | 언어별 구현 필요 | 추가 홉, SPOF 가능 |
| 예시 | Netflix Eureka | AWS ELB, K8s Service |
Consul vs etcd vs Zookeeper
| 구분 | Consul | etcd | Zookeeper |
|---|---|---|---|
| 개발사 | HashiCorp | CoreOS/CNCF | Apache |
| 용도 | 서비스 디스커버리 + KV | KV 저장소 | 분산 코디네이션 |
| 합의 알고리즘 | Raft | Raft | ZAB |
| 서비스 디스커버리 | 네이티브 지원 | 별도 구현 필요 | 별도 구현 필요 |
| 헬스 체크 | 내장 | 별도 구현 | 별도 구현 |
| K8s 연동 | 가능 | K8s 기본 저장소 | 가능 |
| UI | 내장 웹 UI | 없음 | 없음 |
26. 신기술 동향 비교
데이터 패브릭 vs 데이터 메시
| 구분 | 데이터 패브릭 | 데이터 메시 |
|---|---|---|
| 접근 | 기술 중심 (중앙 관리) | 조직 중심 (도메인 분산) |
| 관리 | 중앙 데이터팀 | 도메인팀 자율 관리 |
| 핵심 | 메타데이터 기반 자동 통합 | Data as a Product |
| 아키텍처 | 가상화 계층, AI/ML 활용 | 셀프서비스 플랫폼 |
| 제안 | Gartner | Zhamak Dehghani (2019) |
| 적합 | 기존 중앙화 조직 | 대규모 도메인 분리 조직 |
STO vs NFT
| 구분 | STO (Security Token) | NFT (Non-Fungible Token) |
|---|---|---|
| 성격 | 증권형 토큰 (투자 상품) | 대체 불가능 토큰 (소유권) |
| 규제 | 증권법 적용 (금융 규제) | 규제 미비 |
| 대체성 | 대체 가능 (Fungible) | 대체 불가 (Non-Fungible) |
| 가치 | 기초자산 연동 (부동산, 주식) | 희소성/문화적 가치 |
| 수익 | 배당, 이자, 시세차익 | 시세차익 (2차 판매 로열티) |
| 표준 | ERC-1400 등 | ERC-721, ERC-1155 |
단일 AI 에이전트 vs 멀티에이전트 시스템
| 구분 | 단일 에이전트 | 멀티에이전트 |
|---|---|---|
| 구조 | 하나의 LLM이 전체 수행 | 역할별 에이전트 협업 |
| 전문성 | 범용 | 역할 특화 (코더, 리뷰어 등) |
| 복잡도 | 낮음 | 높음 (오케스트레이션) |
| 품질 | 단일 관점 | 다관점 검증 |
| 비용 | 낮음 | 높음 (다중 호출) |
| 프레임워크 | LangChain, LlamaIndex | AutoGen, CrewAI, LangGraph |
27. 컴퓨터구조 비교표
폰 노이만 vs 하버드 구조
| 구분 | 폰 노이만 | 하버드 |
|---|---|---|
| 메모리 | 명령어+데이터 통합 | 명령어/데이터 분리 |
| 버스 | 단일 버스 | 이중 버스 |
| 병렬 접근 | 불가 (병목) | 가능 |
| 구조 복잡도 | 단순 | 복잡 |
| 비용 | 낮음 | 높음 |
| 적용 | 범용 PC | DSP, 임베디드, MCU |
| 현대 CPU | Modified Harvard (L1 분리, 메인 메모리 통합) | - |
캐시 매핑: 직접 매핑 vs 연관 매핑 vs 세트 연관 매핑
| 구분 | 직접 매핑 | 완전 연관 매핑 | 세트 연관 매핑 |
|---|---|---|---|
| 매핑 규칙 | 고정 위치 (mod 연산) | 임의 위치 | 세트 내 임의 위치 |
| 적중률 | 낮음 | 높음 | 중간~높음 |
| 하드웨어 | 단순 | 복잡 (비교기 많음) | 중간 |
| 충돌 | 잦음 (핑퐁) | 없음 | 적음 |
| 검색 | 1회 비교 | 전체 비교 | 세트 내 비교 |
| 사용 | TLB | 소규모 캐시 | L1/L2/L3 캐시 (일반적) |
내부 단편화 vs 외부 단편화
| 구분 | 내부 단편화 | 외부 단편화 |
|---|---|---|
| 발생 | 할당 블록 > 요청 크기 | 빈 공간이 분산되어 사용 불가 |
| 원인 | 고정 크기 할당 (페이징) | 가변 크기 할당 (세그멘테이션) |
| 낭비 위치 | 할당 블록 내부 | 할당 블록 사이 |
| 해결 | 블록 크기 최적화 | 압축(Compaction), 버디 시스템 |
인터럽트 vs 트랩 vs 폴링
| 구분 | 인터럽트 | 트랩 | 폴링 |
|---|---|---|---|
| 발생 원인 | 외부 장치 (HW) | 소프트웨어/예외 | CPU 능동 확인 |
| 발생 시점 | 비동기 (예측 불가) | 동기 (명령어 실행 중) | 주기적 |
| CPU 효율 | 높음 | 높음 | 낮음 (바쁜 대기) |
| 우선순위 | 있음 (인터럽트 컨트롤러) | 없음 | 순서대로 |
| 예시 | 키보드, 타이머, I/O 완료 | 시스템 콜, 0 나눗셈 | 장치 상태 루프 확인 |
DMA vs PIO (프로그램 I/O)
| 구분 | DMA | PIO |
|---|---|---|
| CPU 개입 | 최소 (시작/완료만) | 매 바이트 개입 |
| 전송 주체 | DMA 컨트롤러 | CPU |
| CPU 효율 | 높음 | 낮음 |
| 전송 속도 | 빠름 (대량 전송) | 느림 |
| 하드웨어 | DMA 컨트롤러 필요 | 추가 HW 불필요 |
| 적합 | 대용량 I/O (디스크, 네트워크) | 소량 I/O |
SISD vs SIMD vs MIMD (Flynn 분류)
| 구분 | SISD | SIMD | MIMD |
|---|---|---|---|
| 명령어 | 단일 | 단일 | 다중 |
| 데이터 | 단일 | 다중 | 다중 |
| 처리 | 순차 | 데이터 병렬 | 완전 병렬 |
| 예시 | 전통 단일코어 | GPU, SSE/AVX | 멀티코어, 클러스터 |
| 적합 | 범용 | 벡터 연산, 이미지 | 범용 병렬 |
SSD vs HDD
| 구분 | SSD | HDD |
|---|---|---|
| 매체 | NAND 플래시 (반도체) | 자기 디스크 (기계식) |
| 속도 | 매우 빠름 (NVMe: ~7GB/s) | 느림 (~200MB/s) |
| 지연 | μs 단위 | ms 단위 (탐색 시간) |
| 내구성 | 쓰기 횟수 제한 (TBW) | 기계적 마모 |
| 소음/진동 | 없음 | 있음 (모터) |
| 전력 | 낮음 | 높음 |
| 가격/TB | 높음 | 낮음 |
| 적합 | OS, DB, 핫 데이터 | 백업, 아카이브, 콜드 데이터 |
RAID 수준 비교
| 구분 | RAID 0 | RAID 1 | RAID 5 | RAID 6 | RAID 10 |
|---|---|---|---|---|---|
| 방식 | 스트라이핑 | 미러링 | 분산 패리티 | 이중 패리티 | 미러+스트라이프 |
| 최소 디스크 | 2 | 2 | 3 | 4 | 4 |
| 내결함성 | 없음 | 1개 장애 | 1개 장애 | 2개 장애 | 미러 쌍당 1개 |
| 용량 효율 | 100% | 50% | (N-1)/N | (N-2)/N | 50% |
| 읽기 성능 | 빠름 | 빠름 | 빠름 | 빠름 | 매우 빠름 |
| 쓰기 성능 | 빠름 | 보통 | 느림 (패리티) | 더 느림 | 보통 |
| 적합 | 임시 데이터 | 중요 데이터 | 범용 서버 | 미션 크리티컬 | DB, 고성능 |
Little Endian vs Big Endian
| 구분 | Little Endian | Big Endian |
|---|---|---|
| 저장 | LSB를 낮은 주소 | MSB를 낮은 주소 |
| 직관성 | 낮음 | 높음 (사람 읽기 자연스러움) |
| 연산 효율 | 높음 (크기 변환 용이) | 낮음 |
| 채택 | x86, ARM (기본), RISC-V | 네트워크 바이트 순서 (표준) |
| 변환 | htonl/ntohl 필요 | 네트워크 전송 그대로 |
GPU vs NPU/TPU
| 구분 | GPU | NPU | TPU |
|---|---|---|---|
| 개발 | NVIDIA 등 | 다양 (삼성, 퀄컴) | |
| 설계 목적 | 범용 병렬 연산 | AI 추론 특화 | AI 학습+추론 |
| 연산 | CUDA 코어, 범용 | MAC 연산 최적화 | 행렬 연산 (MXU) |
| 전력 효율 | 중간 | 높음 (저전력) | 중간~높음 |
| 유연성 | 높음 (범용) | 낮음 (AI 특화) | 낮음 (TensorFlow) |
| 적용 | 학습/추론/그래픽 | 모바일/엣지 AI | 클라우드 AI |
NVMe vs SATA
| 구분 | NVMe | SATA |
|---|---|---|
| 인터페이스 | PCIe (직결) | SATA 컨트롤러 |
| 대역폭 | ~7GB/s (PCIe 4.0 x4) | ~600MB/s (SATA III) |
| 지연 | ~10μs | ~100μs |
| 큐 | 64K 큐 × 64K 명령 | 1큐 × 32 명령 |
| 병렬 처리 | 우수 | 제한적 |
| 폼팩터 | M.2, U.2, AIC | 2.5인치, M.2 (B key) |
| 적합 | 고성능 워크로드 | 범용, 레거시 |
28. 자료구조 비교표
배열 vs 연결 리스트
| 구분 | 배열 | 연결 리스트 |
|---|---|---|
| 메모리 | 연속 할당 | 비연속 (노드+포인터) |
| 접근 | O(1) 랜덤 접근 | O(n) 순차 접근 |
| 삽입/삭제 | O(n) (시프트) | O(1) (포인터 변경) |
| 메모리 효율 | 높음 (데이터만) | 낮음 (포인터 오버헤드) |
| 캐시 친화 | 좋음 (지역성) | 나쁨 (분산) |
| 크기 변경 | 고정/재할당 | 동적 |
BST vs AVL vs Red-Black Tree
| 구분 | BST | AVL | Red-Black |
|---|---|---|---|
| 균형 | 미보장 | 엄격 (높이차 ≤ 1) | 느슨 (최대 2배 차이) |
| 검색 | O(n) 최악 | O(log n) 보장 | O(log n) 보장 |
| 삽입/삭제 | O(n) 최악 | O(log n) + 회전 많음 | O(log n) + 회전 적음 |
| 회전 빈도 | 없음 | 잦음 | 적음 |
| 적합 | 단순 구현 | 검색 위주 | 삽입/삭제 빈번 |
| 사례 | 교육용 | 데이터베이스 | std::map, TreeMap |
해시 충돌 해결: 체이닝 vs 개방 주소법
| 구분 | 체이닝 (Chaining) | 개방 주소법 (Open Addressing) |
|---|---|---|
| 구조 | 버킷별 연결 리스트 | 테이블 내 빈 슬롯 탐색 |
| 적재율 | 1 초과 가능 | 1 미만 유지 |
| 삭제 | 쉬움 | 어려움 (삭제 마커) |
| 캐시 | 나쁨 (포인터 추적) | 좋음 (연속 메모리) |
| 클러스터링 | 없음 | 발생 (선형/이차) |
| 탐색 방법 | 리스트 순회 | 선형/이차/이중 해싱 |
힙 vs 이진 탐색 트리
| 구분 | 힙 (Heap) | 이진 탐색 트리 (BST) |
|---|---|---|
| 성질 | 부모 ≥ 자식 (최대힙) | 왼쪽 < 부모 < 오른쪽 |
| 최솟값/최댓값 | O(1) | O(log n)~O(n) |
| 검색 | O(n) | O(log n) 평균 |
| 삽입 | O(log n) | O(log n) 평균 |
| 정렬 순회 | 불가 | 중위 순회 = 정렬 |
| 구현 | 배열 기반 | 노드+포인터 |
| 용도 | 우선순위 큐 | 탐색, 정렬 |
그래프 표현: 인접 행렬 vs 인접 리스트
| 구분 | 인접 행렬 | 인접 리스트 |
|---|---|---|
| 공간 | O(V²) | O(V+E) |
| 간선 확인 | O(1) | O(degree) |
| 전체 순회 | O(V²) | O(V+E) |
| 적합 | 밀집 그래프 | 희소 그래프 |
| 가중치 | 값으로 저장 | (목적지, 가중치) 쌍 |
| 메모리 | 많음 | 적음 (일반적) |
블룸 필터 vs 해시 셋
| 구분 | 블룸 필터 | 해시 셋 |
|---|---|---|
| 공간 | 매우 적음 (비트 배열) | 큼 (원본 저장) |
| 오탐 (False Positive) | 가능 | 없음 |
| 미탐 (False Negative) | 없음 | 없음 |
| 삭제 | 불가 (Counting BF 제외) | 가능 |
| 용도 | 대량 데이터 존재 여부 | 정확한 집합 연산 |
| 사례 | 캐시 필터, 스팸 체크 | 중복 제거, 멤버십 |
Trie vs 해시 맵
| 구분 | Trie | 해시 맵 |
|---|---|---|
| 검색 | O(m) 문자열 길이 | O(1) 평균 |
| 접두사 검색 | 효율적 (자연 지원) | 불가 |
| 공간 | 큼 (노드 오버헤드) | 중간 |
| 정렬 | 사전순 순회 가능 | 불가 |
| 적합 | 자동완성, 사전 | 범용 키-값 |
| 최악 검색 | O(m) | O(n) 충돌 시 |
29. 알고리즘 비교표
정렬 알고리즘 종합 비교
| 알고리즘 | 최선 | 평균 | 최악 | 공간 | 안정성 |
|---|---|---|---|---|---|
| 버블 정렬 | O(n) | O(n²) | O(n²) | O(1) | 안정 |
| 선택 정렬 | O(n²) | O(n²) | O(n²) | O(1) | 불안정 |
| 삽입 정렬 | O(n) | O(n²) | O(n²) | O(1) | 안정 |
| 병합 정렬 | O(n log n) | O(n log n) | O(n log n) | O(n) | 안정 |
| 퀵 정렬 | O(n log n) | O(n log n) | O(n²) | O(log n) | 불안정 |
| 힙 정렬 | O(n log n) | O(n log n) | O(n log n) | O(1) | 불안정 |
| 팀소트 | O(n) | O(n log n) | O(n log n) | O(n) | 안정 |
안정 정렬 vs 불안정 정렬
| 구분 | 안정 정렬 (Stable) | 불안정 정렬 (Unstable) |
|---|---|---|
| 정의 | 동일 키 원래 순서 보존 | 동일 키 순서 미보장 |
| 알고리즘 | 버블, 삽입, 병합, 팀소트 | 선택, 퀵, 힙 |
| 중요 시점 | 다중 키 정렬, DB 정렬 | 단일 키, 성능 우선 |
| 구현 복잡도 | 보통~높음 | 낮음~보통 |
Dijkstra vs Bellman-Ford vs Floyd-Warshall
| 구분 | Dijkstra | Bellman-Ford | Floyd-Warshall |
|---|---|---|---|
| 목적 | 단일 출발 최단경로 | 단일 출발 최단경로 | 전체 쌍 최단경로 |
| 음의 가중치 | 불가 | 가능 | 가능 |
| 음의 사이클 | 미탐지 | 탐지 가능 | 탐지 가능 |
| 시간복잡도 | O(E log V) | O(VE) | O(V³) |
| 알고리즘 | 그리디 (우선순위 큐) | DP (V-1회 완화) | DP (경유 노드) |
| 적합 | 양수 가중치 그래프 | 음수 간선 포함 | 작은 그래프 전체 쌍 |
Kruskal vs Prim
| 구분 | Kruskal | Prim |
|---|---|---|
| 접근 | 간선 기반 (정렬 후 선택) | 정점 기반 (확장) |
| 자료구조 | Union-Find | 우선순위 큐 |
| 시간복잡도 | O(E log E) | O(E log V) |
| 적합 | 희소 그래프 | 밀집 그래프 |
| 간선 선택 | 전체에서 최소 | 인접 간선 중 최소 |
P vs NP vs NP-Complete
| 구분 | P | NP | NP-Complete |
|---|---|---|---|
| 정의 | 다항 시간 풀이 가능 | 다항 시간 검증 가능 | NP 중 가장 어려운 부류 |
| 풀이 | 효율적 알고리즘 존재 | 효율적 풀이 미확인 | 효율적 풀이 미확인 |
| 검증 | 다항 시간 | 다항 시간 | 다항 시간 |
| 관계 | P ⊆ NP | P ⊆ NP | NP의 부분 |
| 예시 | 정렬, 최단경로 | 해밀턴 경로 (결정) | SAT, TSP, 배낭 |
| P=NP? | 미해결 문제 (밀레니엄) | - | 하나라도 풀면 P=NP |
이진 탐색 vs 선형 탐색 vs 보간 탐색
| 구분 | 선형 탐색 | 이진 탐색 | 보간 탐색 |
|---|---|---|---|
| 시간복잡도 | O(n) | O(log n) | O(log log n) 평균 |
| 정렬 필요 | 불필요 | 필수 | 필수 + 균등 분포 |
| 방식 | 순차 비교 | 중간값 비교 | 값 비례 위치 추정 |
| 최악 | O(n) | O(log n) | O(n) |
| 적합 | 소량, 비정렬 | 정렬된 배열 | 균등 분포 데이터 |
30. 운영체제 비교표
모놀리식 커널 vs 마이크로커널
| 구분 | 모놀리식 커널 | 마이크로커널 |
|---|---|---|
| 구조 | 모든 서비스 커널 공간 | 최소 커널 + 사용자 공간 서버 |
| 성능 | 빠름 (직접 호출) | 느림 (IPC 오버헤드) |
| 안정성 | 드라이버 오류 = 커널 크래시 | 서버 오류 격리 |
| 확장성 | 어려움 (재컴파일) | 쉬움 (모듈 추가) |
| 크기 | 큼 | 작음 |
| 예시 | Linux, FreeBSD | MINIX, QNX, L4 |
CPU 스케줄링 알고리즘 비교
| 알고리즘 | 유형 | 기준 | 장점 | 단점 |
|---|---|---|---|---|
| FCFS | 비선점 | 도착 순서 | 단순, 공정 | 호위 효과 (Convoy) |
| SJF | 비선점 | 최소 실행 시간 | 평균 대기시간 최소 | 기아 (Starvation) |
| SRTF | 선점 | 최소 잔여 시간 | SJF보다 효율적 | 기아, 오버헤드 |
| RR | 선점 | 시간 할당량 | 공정, 응답 좋음 | 타임퀀텀 설정 중요 |
| Priority | 선점/비선점 | 우선순위 | 중요 작업 우선 | 기아 (에이징으로 해결) |
| MLFQ | 선점 | 다단계 큐 | 적응적, 범용 | 구현 복잡 |
뮤텍스 vs 세마포어 vs 모니터
| 구분 | 뮤텍스 | 세마포어 | 모니터 |
|---|---|---|---|
| 소유 | 소유자만 해제 | 누구나 Signal | 자동 (언어 지원) |
| 값 | 0 또는 1 | 0~N (카운팅) | N/A |
| 용도 | 상호 배제 | 자원 카운트, 동기화 | 상호 배제 + 조건변수 |
| 데드락 | 발생 가능 | 발생 가능 | 구조적 방지 |
| 구현 | OS 커널 | OS 커널 | 프로그래밍 언어 |
| 예시 | pthread_mutex | sem_wait/post | Java synchronized |
교착상태: 예방 vs 회피 vs 탐지
| 구분 | 예방 (Prevention) | 회피 (Avoidance) | 탐지 (Detection) |
|---|---|---|---|
| 시점 | 사전 (설계) | 실행 중 (할당 전) | 사후 (발생 후) |
| 방법 | 4대 조건 중 하나 제거 | 안전 상태 확인 (Banker's) | 자원 할당 그래프 |
| 자원 활용 | 낮음 (보수적) | 중간 | 높음 |
| 오버헤드 | 낮음 | 중간 (매 요청 확인) | 높음 (주기적 검사) |
| 복구 | 불필요 | 불필요 | 프로세스 종료/자원 회수 |
페이지 교체 알고리즘 비교
| 알고리즘 | 기준 | 장점 | 단점 |
|---|---|---|---|
| Optimal | 가장 늦게 사용될 페이지 | 이론적 최적 | 미래 참조 불가 (비실용) |
| FIFO | 가장 오래된 페이지 | 단순 | Belady 이상현상 |
| LRU | 가장 오래 미사용 | 실용적, 성능 좋음 | 구현 복잡 (타임스탬프/스택) |
| LFU | 가장 적게 사용 | 빈도 반영 | 과거 빈도 누적, 오버헤드 |
| Clock (NRU) | 참조 비트 순환 | LRU 근사, 효율적 | 정밀도 낮음 |
좀비 프로세스 vs 고아 프로세스
| 구분 | 좀비 프로세스 | 고아 프로세스 |
|---|---|---|
| 정의 | 자식 종료, 부모 wait 미호출 | 부모 먼저 종료 |
| 상태 | 종료됨 (EXIT_ZOMBIE) | 실행 중 |
| 문제 | PID/PCB 자원 누수 | 없음 (init이 입양) |
| 해결 | 부모의 wait()/SIGCHLD | init(PID 1)이 wait() |
| 위험도 | PID 고갈 | 낮음 |
공유 메모리 vs 메시지 패싱
| 구분 | 공유 메모리 | 메시지 패싱 |
|---|---|---|
| 통신 | 공유 영역 읽기/쓰기 | send/receive 메시지 |
| 속도 | 빠름 (커널 개입 최소) | 느림 (커널 복사) |
| 동기화 | 명시적 필요 (세마포어 등) | 암묵적 (메시지 순서) |
| 적합 | 단일 머신, 대용량 | 분산 시스템, 격리 |
| 예시 | POSIX shm, mmap | 파이프, 소켓, MPI |
| 구현 복잡도 | 높음 (동기화) | 낮음 |
가상 메모리 vs 물리 메모리
| 구분 | 가상 메모리 | 물리 메모리 |
|---|---|---|
| 주소 | 가상 주소 (프로세스별) | 물리 주소 (실제 RAM) |
| 크기 | 물리 메모리보다 클 수 있음 | 실제 RAM 용량 |
| 매핑 | 페이지 테이블 (MMU) | 직접 |
| 장점 | 격리, 대용량, 보호 | 빠름 |
| 단점 | 페이지 폴트 오버헤드 | 용량 제한 |
| 관련 | 스왑, 페이지 폴트, TLB | - |
파일 시스템 비교: FAT vs ext4 vs NTFS vs XFS
| 구분 | FAT32 | ext4 | NTFS | XFS |
|---|---|---|---|---|
| OS | 범용 | Linux | Windows | Linux |
| 저널링 | 없음 | 있음 | 있음 | 있음 |
| 최대 파일 | 4GB | 16TB | 256TB | 8EB |
| 최대 볼륨 | 2TB | 1EB | 256TB | 8EB |
| 권한 관리 | 없음 | POSIX ACL | ACL | POSIX ACL |
| 적합 | USB, SD카드 | 범용 Linux | 범용 Windows | 대용량 파일 |
31. 네트워크 비교표 확장
회선 교환 vs 패킷 교환 vs 메시지 교환
| 구분 | 회선 교환 | 패킷 교환 | 메시지 교환 |
|---|---|---|---|
| 경로 | 전용 물리 경로 | 공유 경로 | Store-and-Forward |
| 대역폭 | 고정 할당 (비효율) | 동적 공유 (효율) | 동적 (느림) |
| 지연 | 일정 (낮음) | 가변 (지터) | 높음 |
| 신뢰성 | 회선 장애 = 단절 | 우회 가능 | 우회 가능 |
| 적합 | 실시간 음성 (PSTN) | 인터넷 (IP) | 이메일 (개념) |
CSMA/CD vs CSMA/CA
| 구분 | CSMA/CD | CSMA/CA |
|---|---|---|
| 환경 | 유선 (이더넷) | 무선 (WiFi) |
| 충돌 처리 | 감지 (Detection) | 회피 (Avoidance) |
| 동작 | 전송 중 충돌 감지 → 잼 → 백오프 | IFS 대기 → 랜덤 백오프 → 전송 |
| ACK | 불필요 | 필요 |
| RTS/CTS | 없음 | 선택적 사용 |
| 표준 | IEEE 802.3 | IEEE 802.11 |
| Hidden Node | 해당 없음 | 문제 (RTS/CTS로 해결) |
L2 스위치 vs L3 스위치 vs 라우터
| 구분 | L2 스위치 | L3 스위치 | 라우터 |
|---|---|---|---|
| 계층 | 데이터링크 | 네트워크 | 네트워크 |
| 기준 | MAC 주소 | IP 주소 (HW) | IP 주소 (SW) |
| 속도 | 가장 빠름 | 빠름 (ASIC) | 상대적 느림 |
| VLAN 라우팅 | 불가 | 가능 | 가능 |
| WAN 연결 | 불가 | 제한적 | 가능 |
| 기능 | 프레임 전달 | VLAN간 라우팅 | NAT, 방화벽, VPN |
| 적합 | LAN 내부 | 데이터센터 내부 | WAN 연결, 인터넷 |
FTP vs FTPS vs SFTP
| 구분 | FTP | FTPS | SFTP |
|---|---|---|---|
| 프로토콜 | FTP | FTP + TLS/SSL | SSH File Transfer |
| 포트 | 20/21 | 990 (Implicit) | 22 |
| 암호화 | 없음 | TLS/SSL | SSH 암호화 |
| 방화벽 | 복잡 (능동/수동) | 더 복잡 | 단순 (단일 포트) |
| 인증 | ID/PW | 인증서 + ID/PW | SSH 키/PW |
| 적합 | 내부망 (레거시) | 파일 전송 보안 | 서버 관리, 보안 전송 |
32. 보안 비교표 확장
대칭키 알고리즘 비교
| 구분 | DES | 3DES | AES | SEED | ARIA |
|---|---|---|---|---|---|
| 키 길이 | 56비트 | 112/168비트 | 128/192/256 | 128/256 | 128/192/256 |
| 블록 크기 | 64비트 | 64비트 | 128비트 | 128비트 | 128비트 |
| 구조 | Feistel | Feistel (3회) | SPN | Feistel | SPN |
| 라운드 | 16 | 48 | 10/12/14 | 16 | 12/14/16 |
| 안전성 | 취약 (사용금지) | 취약 (권장X) | 안전 (표준) | 안전 (국내) | 안전 (국내) |
| 제정 | NIST (1977) | NIST | NIST (2001) | KISA (1998) | KISA (2004) |
해시 함수 비교
| 구분 | MD5 | SHA-1 | SHA-256 | SHA-3 |
|---|---|---|---|---|
| 출력 | 128비트 | 160비트 | 256비트 | 가변 (256/512) |
| 안전성 | 취약 (충돌 발견) | 취약 (충돌 발견) | 안전 | 안전 |
| 구조 | Merkle-Damgard | Merkle-Damgard | Merkle-Damgard | Sponge (Keccak) |
| 속도 | 빠름 | 빠름 | 보통 | 보통 |
| 용도 | 체크섬 (보안X) | 레거시 | 범용 표준 | 최신 표준 |
| 양자내성 | 없음 | 없음 | 제한적 | 상대적 강함 |
전자서명 알고리즘 비교
| 구분 | RSA | ECDSA | Ed25519 |
|---|---|---|---|
| 기반 | 소인수분해 | 타원곡선 이산로그 | 타원곡선 (EdDSA) |
| 키 길이 | 2048/4096비트 | 256비트 | 256비트 |
| 서명 크기 | 256/512바이트 | 64바이트 | 64바이트 |
| 속도 | 느림 | 빠름 | 매우 빠름 |
| 보안 동등 | RSA-3072 ≈ ECC-256 | 128비트 보안 | 128비트 보안 |
| 양자내성 | 없음 | 없음 | 없음 |
| 사례 | TLS, PKI | Bitcoin, TLS | SSH, Signal |
SPN vs Feistel 구조
| 구분 | SPN | Feistel |
|---|---|---|
| 구조 | 전체 블록에 S-Box + P-Box | 좌우 분할 → 라운드 함수 교차 |
| 복호화 | 역연산 별도 구현 | 동일 구조 역순 (대칭) |
| 병렬 처리 | 우수 | 제한적 (절반만 변환) |
| 확산 | 빠름 (전체 변환) | 느림 (절반씩) |
| 대표 | AES, ARIA | DES, 3DES, SEED |
| 장점 | 빠른 확산, 병렬화 | 암복호화 구조 동일, 설계 용이 |
IDS vs IPS vs WAF
| 구분 | IDS | IPS | WAF |
|---|---|---|---|
| 역할 | 탐지 (알림) | 탐지 + 차단 | 웹 공격 차단 |
| 위치 | 패시브 (미러링) | 인라인 | 웹 서버 앞단 |
| 계층 | L3-L7 | L3-L7 | L7 (HTTP) |
| 대상 | 네트워크 전반 | 네트워크 전반 | 웹 애플리케이션 |
| 차단 | 불가 | 가능 | 가능 |
| 오탐 영향 | 알림만 | 정상 트래픽 차단 | 정상 요청 차단 |
| 사례 | Snort, Suricata | Suricata | ModSecurity, AWS WAF |
VPN: SSL VPN vs IPsec VPN
| 구분 | SSL VPN | IPsec VPN |
|---|---|---|
| 계층 | L4-L7 (TLS) | L3 (네트워크) |
| 클라이언트 | 웹 브라우저 (에이전트 선택) | 전용 클라이언트 필요 |
| 접근 범위 | 애플리케이션별 제어 | 네트워크 전체 |
| NAT 통과 | 용이 (443 포트) | 복잡 (NAT-T 필요) |
| 설정 | 간편 | 복잡 |
| 적합 | 원격 근무, 웹 접속 | 사이트 간 연결 (Site-to-Site) |
33. AI/ML 비교표 확장
클러스터링: K-means vs DBSCAN vs 계층적
| 구분 | K-means | DBSCAN | 계층적 (Hierarchical) |
|---|---|---|---|
| 기반 | 중심점 (거리) | 밀도 | 거리 (유사도) |
| K 사전 지정 | 필요 | 불필요 | 불필요 (덴드로그램) |
| 클러스터 형태 | 구형 | 임의 형상 | 임의 |
| 잡음 처리 | 약함 | 강함 (노이즈 라벨) | 약함 |
| 시간복잡도 | O(nKt) | O(n log n) | O(n²)~O(n³) |
| 확장성 | 좋음 | 좋음 | 나쁨 (대규모 부적합) |
| 적합 | 대규모, 구형 클러스터 | 노이즈, 비구형 | 소규모, 계층 시각화 |
LSTM vs GRU
| 구분 | LSTM | GRU |
|---|---|---|
| 게이트 | 3개 (입력/망각/출력) | 2개 (리셋/업데이트) |
| 파라미터 | 많음 | 적음 (~25% 절약) |
| 셀 상태 | 별도 셀 상태 (C_t) | 은닉 상태와 통합 |
| 학습 속도 | 느림 | 빠름 |
| 성능 | 긴 시퀀스 유리 | 짧은 시퀀스 유사 |
| 적합 | 복잡한 장기 의존성 | 소규모, 빠른 학습 |
최적화: SGD vs Adam vs RMSprop
| 구분 | SGD | Adam | RMSprop |
|---|---|---|---|
| 학습률 | 고정 | 적응적 (1차+2차 모멘트) | 적응적 (2차 모멘트) |
| 모멘텀 | 선택적 | 내장 | 없음 |
| 수렴 속도 | 느림 | 빠름 | 중간 |
| 메모리 | 적음 | 많음 (2배 파라미터) | 중간 |
| 일반화 | 좋음 (노이즈) | 보통 | 보통 |
| 적합 | 대규모, 일반화 중요 | 범용 기본 선택 | RNN/비정상 목적함수 |
정규화: L1 vs L2 vs Dropout
| 구분 | L1 (Lasso) | L2 (Ridge) | Dropout | ||
|---|---|---|---|---|---|
| 방식 | 가중치 절대값 합 패널티 | 가중치 제곱합 패널티 | 랜덤 뉴런 비활성화 | ||
| 효과 | 희소 가중치 (Feature Selection) | 작은 가중치 (전체 축소) | 앙상블 효과 | ||
| 0 생성 | 많음 (특징 제거) | 드묾 (작게 만듦) | N/A | ||
| 적합 | 특징 선택 | 다중공선성 방지 | 딥러닝 | ||
| 수식 | λΣ | w | λΣw² | p 확률로 뉴런 제거 |
배치 학습 vs 온라인 학습 vs 미니배치
| 구분 | 배치 (Batch) | 온라인 (Stochastic) | 미니배치 (Mini-batch) |
|---|---|---|---|
| 데이터 | 전체 | 1개씩 | N개씩 (32/64/128) |
| 수렴 | 안정적 | 불안정 (노이즈) | 균형 |
| 속도 | 느림 | 빠름 (업데이트 잦음) | 중간 |
| 메모리 | 많음 | 적음 | 중간 |
| GPU 활용 | 비효율 | 비효율 | 효율적 (병렬) |
| 적합 | 소규모 데이터 | 실시간/스트리밍 | 범용 (가장 일반적) |
양자화: INT8 vs FP16 vs BF16
| 구분 | FP32 (기준) | FP16 | BF16 | INT8 |
|---|---|---|---|---|
| 비트 | 32 | 16 | 16 | 8 |
| 지수/가수 | 8/23 | 5/10 | 8/7 | N/A (정수) |
| 정밀도 | 최고 | 높음 | 중간 (범위 넓음) | 낮음 |
| 메모리 | 1x | 0.5x | 0.5x | 0.25x |
| 속도 | 1x | ~2x | ~2x | ~4x |
| 용도 | 학습 기본 | 혼합 정밀도 학습 | LLM 학습 (안정적) | 추론 최적화 |
| 정밀도 손실 | 없음 | 약간 | 약간 | 있음 (보정 필요) |