인프라 개념 완전 정복 A-Z
서버 · 네트워크 · 스토리지 · 온프레미스 vs 클라우드 현업 실전
비전공자도 1~2주 안에 인프라 기초 완전 이해 — 개념부터 실무까지!
Infra Dev Guide 시리즈 전체 흐름
| 단계 | 가이드 | 핵심 주제 | 상태 |
|---|---|---|---|
| 01 | InfraDevGuide0001 (현재) | 인프라 개념 (서버·네트워크·스토리지·클라우드) | 학습중 |
| 02 | InfraDevGuide0002 | Linux 기초 완전 정복 | 예정 |
| 03 | InfraDevGuide0003 | 네트워크 기초 완전 정복 | 예정 |
| 04 | InfraDevGuide0004 | 클라우드 AWS 완전 정복 | 예정 |
| 05 | InfraDevGuide0005 | Docker & 컨테이너 완전 정복 | 예정 |
| 06 | InfraDevGuide0006 | CI/CD & 자동화 완전 정복 | 예정 |
| 07 | InfraDevGuide0007 | 실전 프로젝트 & 취업 전략 | 예정 |
전체 학습 목차 (10 Chapters)
| Ch. | 챕터명 | 핵심 내용 | 난이도 |
|---|---|---|---|
| 01 | 인프라란 무엇인가? | 서버·네트워크·스토리지의 역할과 관계 | ★☆☆☆☆ |
| 02 | 서버(Server) 완전 정복 | 물리 서버, 가상화, 하이퍼바이저, VM | ★★☆☆☆ |
| 03 | 네트워크 기초 — IP·포트·프로토콜 | IP주소, 서브넷, DNS, 포트, TCP/UDP | ★★☆☆☆ |
| 04 | 스토리지(Storage) 완전 정복 | HDD/SSD, NAS, SAN, 오브젝트 스토리지 | ★★☆☆☆ |
| 05 | 온프레미스 vs 클라우드 | 비용·보안·확장성 완전 비교 | ★★★☆☆ |
| 06 | HTTP/HTTPS와 웹 동작 원리 | 요청/응답, SSL/TLS, 인증서, 상태코드 | ★★★☆☆ |
| 07 | 로드밸런서 & 고가용성 | L4/L7 LB, 헬스체크, 페일오버, HA | ★★★☆☆ |
| 08 | 보안 기초 — 방화벽·VPN·DMZ | 방화벽, 보안그룹, VPN, 제로트러스트 | ★★★☆☆ |
| 09 | 모니터링 & 장애 대응 | 메트릭, 로그, 알림, 장애 대응 프로세스 | ★★★★☆ |
| 10 | 현업 면접 Q&A TOP 10 | 인프라 기초 면접 핵심 질문 & 완벽 답변 | ★★★★☆ |
Ch 01. 인프라란 무엇인가?
보이지 않지만 모든 것을 받쳐주는 기반 — 전기·수도처럼 없으면 아무것도 작동 안 해요
1-1. 인프라(Infrastructure)의 정의
인프라(Infrastructure)는 소프트웨어
서비스가 동작하기 위해 필요한 모든 하드웨어·소프트웨어 기반 환경입니다.
건물을 짓는다고 생각해보면 — 건물(앱) 자체보다 전기, 수도,
통신망, 도로(인프라)가 먼저 있어야 합니다. 카카오톡으로 메시지를 보내면 앱 → 인프라 → 서버를 통해 상대방에게 전달됩니다.
| 구성 요소 | 역할 | 실생활 비유 |
|---|---|---|
| 서버(Server) | 데이터 처리·저장·응답 | 음식을 만들어 제공하는 주방 |
| 네트워크(Network) | 데이터 전달 통로 | 음식을 나르는 도로·배달망 |
| 스토리지(Storage) | 데이터 보관·관리 | 식재료를 보관하는 냉장고·창고 |
| 보안(Security) | 외부 침입 차단 | 건물 입구 경비원·잠금장치 |
| 모니터링 | 상태 감시·알림 | 건물 CCTV·화재감지기 |
1-2. 인프라 3대 구성요소 — 서버·네트워크·스토리지의 관계
[ 인프라 동작 흐름 다이어그램 ]
👤
사용자
🌐
네트워크
인터넷/LAN
🖥️
서버
요청 처리
💾
스토리지
데이터 저장
예시: 유튜브 영상을 보는 순간에 일어나는 일
①
사용자가 영상 클릭 → ② 인터넷(네트워크)으로 요청 전송 → ③ 유튜브 서버가 요청 수신·처리 → ④ 스토리지에서 영상 파일 읽기 → ⑤
네트워크로 사용자에게 영상 전송
1-3. 인프라 직군 종류
| 직군 | 주요 업무 | 핵심 기술 | 연봉(2025) |
|---|---|---|---|
| 인프라 엔지니어 | 서버·네트워크·스토리지 구축·운영 | Linux, 네트워크, AWS | 4천~1억 |
| DevOps 엔지니어 | CI/CD, 자동화, 배포 파이프라인 | Docker, K8s, Terraform | 5천~1억5천 |
| 클라우드 엔지니어 | AWS/GCP/Azure 설계·운영 | AWS, Terraform, CDK | 5천~1억5천 |
| SRE | 신뢰성·가용성 유지, 장애 대응 | SLO, 모니터링, 자동화 | 6천~2억 |
Ch 02. 서버(Server) 완전 정복
서버가 뭔지 정확히 알면 인프라의 절반은 이해한 것 — 물리 서버부터 가상화까지
2-1. 서버란? 클라이언트-서버 구조
서버(Server)는 다른 컴퓨터(클라이언트)의 요청을 받아 처리하고 응답하는 컴퓨터입니다. "서비스를 제공하는 것(Serve)"에서 이름이 왔습니다.
| 구분 | 클라이언트 | 서버 |
|---|---|---|
| 역할 | 요청하는 쪽 | 응답하는 쪽 |
| 예시 | 스마트폰, PC, 브라우저 | 웹 서버, DB 서버, API 서버 |
| 24시간 켜져있나? | 보통 아님 | 반드시 (365일 상시 가동) |
| 위치 | 사용자 기기 | 데이터센터 / 클라우드 |
2-2. 서버 종류 — 역할별 분류
| 서버 종류 | 역할 | 대표 소프트웨어 |
|---|---|---|
| 웹 서버 | HTML/CSS/이미지 등 정적 파일 제공 | Nginx, Apache |
| WAS (앱 서버) | 비즈니스 로직 처리 (동적 응답) | Node.js, Spring, Django |
| DB 서버 | 데이터 저장·조회·관리 | MySQL, PostgreSQL, MongoDB |
| 캐시 서버 | 자주 쓰는 데이터 임시 저장 (속도) | Redis, Memcached |
| 메시지 서버 | 서비스 간 비동기 통신 | Kafka, RabbitMQ |
| 파일 서버 | 파일 저장·배포 (CDN) | AWS S3, NFS |
2-3. 물리 서버 vs 가상 서버 vs 컨테이너
| 구분 | 물리 서버 | 가상 서버 (VM) | 컨테이너 |
|---|---|---|---|
| 정의 | 실제 하드웨어 | 하드웨어 가상화 | OS 레벨 가상화 |
| 격리 수준 | 완전 | 높음 | 중간 |
| 시작 시간 | 수분 | 수십 초 | 수초 이내 |
| 리소스 효율 | 낮음 | 중간 | 높음 |
| 대표 기술 | Dell, HP 서버 | VMware, KVM, AWS EC2 | Docker, Podman |
2-4. 가상화(Virtualization) — 서버 1대로 여러 서버처럼
가상화는 1대의 물리 서버를 소프트웨어로 나눠서 여러 대처럼 사용하는 기술입니다. 아파트 건물(물리 서버) 안에 여러 집(VM)이 있는 것과 같습니다.
[ 가상화 구조 ]
물리 서버 (Physical Server)
└── 하이퍼바이저 (Hypervisor: VMware ESXi / KVM / Hyper-V)
├── VM1: Web Server (Ubuntu 22.04, CPU 2코어, RAM 4GB)
├── VM2: DB Server (CentOS 7, CPU 4코어, RAM 8GB)
└── VM3: Dev Server (Ubuntu 20.04, CPU 2코어, RAM 4GB)
장점:
- 서버 1대를 최대한 활용 (자원 효율 70~80%)
- 각 VM이 완전히 독립된 환경
- 스냅샷으로 백업·복구 쉬움
Type 1 하이퍼바이저: 하드웨어 위에 직접 설치 (VMware ESXi, KVM) - 성능 우수
Type 2 하이퍼바이저: OS 위에 설치 (VirtualBox, VMware Workstation) - 개발용
Ch 03. 네트워크 기초 — IP·포트·프로토콜
데이터가 이동하는 길 — IP주소, DNS, 포트번호를 완전히 이해한다
3-1. IP 주소 — 인터넷의 집 주소
IP 주소는 인터넷에 연결된 모든 기기에 부여되는 고유한 주소입니다. 택배 주소처럼 데이터를 어디로 보낼지 알려줍니다.
# IPv4 주소 구조
192.168.1.100
^ ^ ^ ^
| | | └─ 호스트 번호 (0~255): 같은 네트워크 내 개별 기기
| | └─── 서브넷 번호
| └─────── 네트워크 번호
└──────────── 클래스 구분
공인 IP vs 사설 IP:
공인 IP: 인터넷에서 직접 접근 가능 (예: 203.0.113.1)
사설 IP: 내부 네트워크용 (10.x.x.x, 172.16.x.x, 192.168.x.x)
# 내 IP 확인 방법 (Linux/Mac)
ip addr show # 또는
ifconfig
curl ifconfig.me # 공인 IP 확인
| 구분 | IPv4 | IPv6 |
|---|---|---|
| 표현 방식 | 점으로 구분된 4개 숫자 (0~255) | 콜론으로 구분된 8개 16진수 |
| 예시 | 192.168.0.1 | 2001:db8::1 |
| 주소 개수 | 약 43억개 (고갈 중) | 사실상 무한대 |
3-2. DNS — 도메인과 IP의 전화번호부
DNS(Domain Name System)는 사람이 기억하기 쉬운 도메인 이름(google.com)을 IP 주소(142.250.196.110)로 변환합니다.
[ DNS 조회 과정 ]
브라우저에 "naver.com" 입력
1. 브라우저 캐시 확인 → 없으면
2. 로컬 DNS 서버(/etc/resolv.conf)에 질문
3. 로컬 DNS → 루트 DNS 서버에 질문
4. 루트 → .com DNS 서버 안내
5. .com DNS → naver.com DNS 서버 안내
6. naver.com DNS → IP 주소 반환 (223.130.195.200)
7. 해당 IP로 접속!
# DNS 조회 명령어
nslookup naver.com
dig naver.com
host google.com
# DNS 레코드 타입
A : 도메인 → IPv4 주소
AAAA : 도메인 → IPv6 주소
CNAME : 도메인 → 다른 도메인 (별칭)
MX : 메일 서버 주소
TXT : 텍스트 정보 (SPF, DKIM 등)
3-3. 포트(Port) — 서버 내 서비스 번호
IP는 건물 주소, 포트는 건물 안의 방 번호입니다. 서버 한 대에서 여러 서비스가 동시에 실행될 때 포트로 구분합니다.
| 포트 번호 | 서비스 | 설명 |
|---|---|---|
| 22 | SSH | 원격 서버 접속 (보안 터미널) |
| 80 | HTTP | 웹 서비스 (암호화 없음) |
| 443 | HTTPS | 웹 서비스 (SSL 암호화) |
| 3306 | MySQL | MySQL DB 서버 |
| 5432 | PostgreSQL | PostgreSQL DB 서버 |
| 6379 | Redis | Redis 캐시 서버 |
3-4. TCP vs UDP — 전송 방식 비교
| 항목 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결 후 전송 (3-way handshake) | 연결 없이 바로 전송 |
| 신뢰성 | 높음 (손실 재전송) | 낮음 (손실 무시) |
| 속도 | 상대적 느림 | 빠름 |
| 사용 예 | HTTP, SSH, 이메일, 파일 전송 | DNS, 동영상 스트리밍, 게임 |
💾 Chapter 04
스토리지 완전 정복 — HDD·SSD·NAS·SAN·오브젝트 스토리지
데이터를 어디에, 어떻게 저장할 것인가? 인프라 엔지니어가 반드시 알아야 할 스토리지 전체 지도
💡 스토리지란?
스토리지(Storage)는 데이터를 영구적으로 저장하는 장치·시스템을 의미합니다. 서버가 CPU+메모리라면, 스토리지는 서버의 "하드디스크" 역할입니다. 현대 인프라에서 스토리지는 단순한 디스크를 넘어 네트워크 스토리지, 클라우드 오브젝트 스토리지로 진화했습니다.
📊 4-1. 스토리지 종류 한눈에 비교
| 종류 | 매체 | 속도 | 용량 | 비용/GB | 주요 용도 |
|---|---|---|---|---|---|
| HDD | 자기 디스크 | 🐢 느림 (100~200 MB/s) | 최대 20TB+ | 🟢 저렴 (~$0.02/GB) | 백업, 아카이브, 대용량 로그 |
| SSD | NAND 플래시 | 🐇 빠름 (500MB/s~7GB/s) | 최대 8TB+ | 🟠 보통 (~$0.08/GB) | OS, DB, 고속 I/O |
| NAS | 네트워크 파일 | 네트워크 속도 의존 | 수 TB~PB | 🟢 저렴 | 파일 공유, 미디어, 팀 협업 |
| SAN | 블록 스토리지 | 🐇 고속 (FC/iSCSI) | 수 PB | 🔴 비쌈 | 엔터프라이즈 DB, 가상화 |
| 오브젝트 | 분산 클라우드 | HTTP 기반 | 무제한 | 🟢 최저가 | 이미지, 동영상, 정적 파일 |
💾 4-2. HDD vs SSD 심층 분석
📹 HDD (하드 디스크 드라이브)
- 자기 디스크를 물리적으로 회전시켜 읽기/쓰기
- 5400 RPM / 7200 RPM (회전 속도)
- 대용량·저비용 → 백업에 최적
- 충격에 취약, 소음 발생
- 평균 수명: 3~5년
⚡ SSD (솔리드 스테이트 드라이브)
- 전기 신호로 NAND 플래시 메모리에 저장
- SATA SSD vs NVMe SSD (M.2 슬롯)
- HDD보다 5~40배 빠른 I/O
- 소음 없음, 충격에 강함
- 쓰기 횟수(TBW) 제한 존재
💻 실습: 리눅스에서 디스크 정보 확인
# 디스크 목록 확인
lsblk
# 디스크 사용량 확인
df -h
# 디스크 상세 정보 (SSD/HDD 판별)
sudo fdisk -l
# SSD 여부 확인 (0=SSD, 1=HDD)
cat /sys/block/sda/queue/rotational
# 디스크 I/O 실시간 모니터링
iostat -x 1
# SMART 정보로 디스크 건강 확인
sudo smartctl -a /dev/sda
🌐 4-3. NAS (Network Attached Storage)
NAS는 네트워크에 연결된 파일 서버입니다. 여러 사용자·서버가 동시에 같은 파일에 접근할 수 있습니다.
[서버B] ⎯⎯⎯⎯⎯ ➡ [NAS 장치] ➡ /shared/files/
[서버C] ⎯⎯⎯⎯⎯
| 프로토콜 | 전체명 | 용도 | OS |
|---|---|---|---|
| NFS | Network File System | 리눅스 파일 공유 | Linux/Unix |
| SMB/CIFS | Server Message Block | 윈도우 파일 공유 | Windows |
| FTP/SFTP | File Transfer Protocol | 파일 전송 | 범용 |
📧 4-4. 오브젝트 스토리지 (AWS S3 스타일)
오브젝트 스토리지는 데이터를 파일 계층 구조 없이 평평하게(flat) 저장합니다. 각 데이터(오브젝트)는 고유 Key(경로+파일명)와 메타데이터를 가집니다.
photos/2024/trip.jpg
실제 파일 바이너리
크기, 날짜, 타입 등
☕ AWS S3 핵심 CLI 명령어
# 버킷 생성
aws s3 mb s3://my-infra-bucket
# 파일 업로드
aws s3 cp ./myfile.log s3://my-infra-bucket/logs/
# 버킷 내 파일 목록
aws s3 ls s3://my-infra-bucket/
# 파일 다운로드
aws s3 cp s3://my-infra-bucket/logs/myfile.log ./
# 디렉토리 동기화
aws s3 sync ./local-dir s3://my-infra-bucket/backup/
# 퍼블릭 접근 차단 (보안 필수!)
aws s3api put-public-access-block \
--bucket my-infra-bucket \
--public-access-block-configuration BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true
🛡 4-5. RAID — 디스크 이중화
| RAID 레벨 | 구성 | 장점 | 단점 | 실사용 |
|---|---|---|---|---|
| RAID 0 | 2개+ 디스크 스트라이핑 | 최고 속도 | 하나 고장 시 전체 손실 | 임시 캐시 |
| RAID 1 | 2개 디스크 미러링 | 완전 이중화 | 용량 50% 손실 | OS 드라이브 |
| RAID 5 | 3개+ 패리티 분산 | 1개 고장 복구 | 쓰기 성능 저하 | 파일 서버 |
| RAID 6 | 4개+ 패리티 2개 | 2개 고장 복구 | 비용 증가 | 중요 데이터 |
| RAID 10 | RAID 1+0 조합 | 속도+이중화 | 비용 최고 | DB 서버 |
✅ 현업 스토리지 선택 가이드
- DB 서버: NVMe SSD + RAID 10 (최고 성능 + 이중화)
- 웹 정적파일: 오브젝트 스토리지(S3) — 무한 확장, 저렴
- 파일 공유: NAS (NFS/SMB)
- 백업/아카이브: HDD + S3 Glacier (초저비용)
- VM 이미지: SAN 블록 스토리지 (고속 블록 I/O)
⚡ Chapter 05
온프레미스 vs 클라우드 — 비용·보안·확장성 완전 비교
어떤 인프라를 선택할 것인가? 현업에서 반드시 알아야 할 의사결정 기준 완전 정복
💡 온프레미스 vs 클라우드란?
🏢 온프레미스 (On-Premises)
기업이 자체 데이터센터에 물리적 서버를 직접 구매·운영하는 방식. "내 집에 서버룸을 만드는 것"
⛅ 클라우드 (Cloud)
AWS·GCP·Azure 같은 클라우드 공급자의 서버를 인터넷을 통해 빌려 사용하는 방식. "서버를 월세로 빌리는 것"
📊 5-1. 온프레미스 vs 클라우드 전면 비교표
| 비교 항목 | 🏢 온프레미스 | ⛅ 클라우드 | 🏅 승자 |
|---|---|---|---|
| 초기 비용 | 🔴 매우 높음 (수억~수십억) | 🟢 없음 (Pay-as-you-go) | ⛅ 클라우드 |
| 운영 비용 | 전기·냉각·인건비 고정 | 사용량 기반 변동비 | 상황따라 다름 |
| 확장성 | 🔴 하드웨어 증설 필요 (주~월 단위) | 🟢 수분 내 확장 (Auto Scaling) | ⛅ 클라우드 |
| 보안·통제권 | 🟢 완전 통제 가능 | 🟠 공동 책임 모델 | 🏢 온프레미스 |
| 규정 준수 | 금융·의료 규제 충족 용이 | CSP 인증 활용 가능 | 상황따라 다름 |
| 가용성 | 🟠 자체 구성 필요 | 🟢 99.99% SLA 기본 제공 | ⛅ 클라우드 |
| 구축 속도 | 🔴 수개월 소요 | 🟢 수분~수일 | ⛅ 클라우드 |
| 글로벌 배포 | 🔴 추가 데이터센터 필요 | 🟢 리전 선택으로 즉시 | ⛅ 클라우드 |
| 장기 비용 | 🟢 5년+ 사용 시 저렴 | 🔴 트래픽 많으면 비쌈 | 🏢 온프레미스 |
🌐 5-2. 클라우드 서비스 모델 (IaaS / PaaS / SaaS)
IaaS
Infrastructure as a Service
VM, 네트워크, 스토리지만 제공. OS부터 앱까지 직접 관리
PaaS
Platform as a Service
실행 환경까지 제공. 코드만 올리면 됨
SaaS
Software as a Service
완성된 소프트웨어 제공. 그냥 사용만 하면 됨
💡 5-3. 클라우드 공급자 비교 (AWS vs GCP vs Azure)
| 구분 | ☁ AWS | 🌎 GCP | ☍ Azure |
|---|---|---|---|
| 시장점유율 | 32% (1위) | 11% (3위) | 22% (2위) |
| 컴퓨팅 | EC2 | Compute Engine | Azure VM |
| 오브젝트 스토리지 | S3 | Cloud Storage | Blob Storage |
| 관리형 DB | RDS / Aurora | Cloud SQL | Azure SQL |
| 강점 | 서비스 다양성 | AI/ML, 저렴 | MS 연동, 엔터프라이즈 |
| 추천 대상 | 스타트업~대기업 | AI 중심 기업 | MS 제품 사용 기업 |
📉 5-4. 하이브리드 클라우드 & 멀티 클라우드
🤝 하이브리드 클라우드
온프레미스 + 클라우드를 함께 사용. 민감 데이터는 온프레미스에, 확장성이 필요한 서비스는 클라우드에.
🌐 멀티 클라우드
AWS + GCP + Azure를 동시 사용. 벤더 종속성(Lock-in)을 방지하고 각 강점만 취함.
⚡ 현업 의사결정 체크리스트
- 서비스 규모가 작고 빠른 출시 필요? → 클라우드 선택
- 금융·의료·공공기관 규제 데이터? → 온프레미스 또는 Private Cloud
- 트래픽 변동이 심한 서비스? → 클라우드 Auto Scaling
- 5년 이상 안정적 운영, 대규모 워크로드? → 온프레미스가 장기적 저렴
- 글로벌 서비스? → 클라우드 멀티 리전
🌐 Chapter 06
HTTP/HTTPS와 웹 동작 원리 완전 정복
브라우저에서 URL을 입력했을 때 서버에서 무슨 일이 벌어지는가? 인프라 엔지니어의 필수 지식
💡 6-1. URL을 입력하면 생기는 일 (전체 흐름)
📋 6-2. HTTP 요청/응답 구조
📤 HTTP 요청 (Request)
GET /api/users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGci...
Content-Type: application/json
User-Agent: Mozilla/5.0
Accept: application/json
{
"page": 1,
"limit": 20
}
📥 HTTP 응답 (Response)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 342
Cache-Control: max-age=3600
X-Request-Id: abc-123-xyz
{
"users": [...],
"total": 150
}
📌 6-3. HTTP 상태 코드 완전 정리
| 범주 | 코드 | 의미 | 현업 발생 상황 |
|---|---|---|---|
| 2xx 성공 | 200 OK | 요청 성공 | 정상 응답 |
| 201 Created | 리소스 생성 성공 | POST 후 DB 저장 완료 | |
| 204 No Content | 성공, 응답 본문 없음 | DELETE 성공 후 | |
| 3xx 리다이렉트 | 301 Moved | 영구 이동 | HTTP→HTTPS 강제 리다이렉트 |
| 302 Found | 임시 이동 | 로그인 후 메인 페이지로 | |
| 4xx 클라이언트 오류 | 400 Bad Request | 잘못된 요청 | 파라미터 누락·형식 오류 |
| 401 Unauthorized | 인증 필요 | 토큰 미포함·만료 | |
| 403 Forbidden | 권한 없음 | 다른 사용자 데이터 접근 | |
| 404 Not Found | 리소스 없음 | 잘못된 URL, 삭제된 데이터 | |
| 429 Too Many | 요청 과다 | Rate Limit 초과 | |
| 5xx 서버 오류 | 500 Internal Error | 서버 내부 오류 | 코드 버그, DB 연결 실패 |
| 502 Bad Gateway | 게이트웨이 오류 | Nginx→앱서버 연결 실패 | |
| 503 Service Unavail | 서비스 불가 | 서버 과부하, 점검 중 | |
| 504 Gateway Timeout | 응답 시간 초과 | DB 쿼리 지연 |
🔒 6-4. HTTPS와 TLS/SSL — 암호화 통신
HTTP는 데이터를 평문(Plain Text)으로 전송하므로 중간자 공격(MITM)에 노출됩니다. HTTPS = HTTP + TLS 암호화로 이 문제를 해결합니다.
password=1234 (그대로 노출)
aX9k2Qm7... (AES 암호화)
📷 TLS 핸드셰이크 과정 (간략)
[클라이언트] ──────────────────────────── [서버]
│ 1. ClientHello (TLS버전, 암호화 목록) │
│ ─────────────────────────────────────► │
│ 2. ServerHello + 인증서(공개키) │
│ ◄───────────────────────────────────── │
│ 3. 인증서 검증 (CA 서명 확인) │
│ 4. 세션키 생성 (대칭키 교환) │
│ ─────────────────────────────────────► │
│ 5. Finished (암호화 통신 시작) │
│ ◄──────────────────────────────────── │
│ === 이후 AES 대칭키로 암호화 통신 === │
☕ Let's Encrypt로 HTTPS 인증서 발급 (Nginx)
# Certbot 설치 (Ubuntu)
sudo apt install certbot python3-certbot-nginx
# 인증서 발급 (도메인 필요)
sudo certbot --nginx -d example.com -d www.example.com
# 자동 갱신 설정 (cron)
echo "0 0 1 * * root certbot renew --quiet" | sudo tee -a /etc/crontab
# /etc/nginx/sites-available/example.com 설정
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri; # HTTP → HTTPS 리다이렉트
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3; # 구버전 비활성화
ssl_ciphers HIGH:!aNULL:!MD5; # 강력한 암호화만 허용
location / {
proxy_pass http://127.0.0.1:3000; # 앱 서버로 전달
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
⚡ 6-5. HTTP 메서드 (REST API)
| 메서드 | 용도 | 예시 | 멱등성 |
|---|---|---|---|
| GET | 조회 | GET /users/1 | ✅ |
| POST | 생성 | POST /users (body: JSON) | ❌ |
| PUT | 전체 수정 | PUT /users/1 (전체 교체) | ✅ |
| PATCH | 부분 수정 | PATCH /users/1 (일부 수정) | 🟠 |
| DELETE | 삭제 | DELETE /users/1 | ✅ |
⚖ Chapter 07
로드밸런서 & 고가용성(HA) 완전 정복
서비스가 절대로 멈추지 않도록! L4/L7 로드밸런서, 헬스체크, 페일오버, HA 아키텍처 완전 이해
💡 7-1. 로드밸런서란?
로드밸런서(Load Balancer)는 들어오는 트래픽을 여러 서버에 균등하게 분산시켜, 특정 서버에 과부하가 걸리지 않도록 합니다.
📊 7-2. L4 vs L7 로드밸런서 비교
📱 L4 로드밸런서 (전송 계층)
- TCP/UDP 포트 기반 분산
- 패킷 내용을 보지 않음 (고속)
- IP + Port 기준 라우팅
- 예: AWS NLB, HAProxy (TCP 모드)
- 적합: DB, 게임, 스트리밍
🌐 L7 로드밸런서 (응용 계층)
- HTTP URL, 헤더, 쿠키 기반 분산
- 콘텐츠 내용을 보고 라우팅
- SSL 종료, URL 리라이팅 가능
- 예: AWS ALB, Nginx, Traefik
- 적합: 웹앱, API, 마이크로서비스
⚙ 7-3. 로드밸런싱 알고리즘
| 알고리즘 | 방식 | 특징 | 적합 상황 |
|---|---|---|---|
| Round Robin | 순서대로 순환 | 단순, 균등 분산 | 서버 스펙 동일할 때 |
| Weighted RR | 가중치 기반 순환 | 스펙별 비율 조정 | 서버 스펙이 다를 때 |
| Least Connections | 연결 최소 서버 우선 | 실시간 부하 분산 | 처리시간 차이 클 때 |
| IP Hash | 클라이언트 IP 고정 | 같은 서버 보장 | 세션 유지 필요할 때 |
| Random | 무작위 선택 | 단순, 빠름 | 대규모 서버 팜 |
☕ Nginx 로드밸런서 설정 예시
# /etc/nginx/conf.d/loadbalancer.conf
upstream backend_servers {
# Round Robin (기본값)
server 10.0.1.10:8080 weight=3; # 가중치 3
server 10.0.1.11:8080 weight=2; # 가중치 2
server 10.0.1.12:8080 weight=1; # 가중치 1
# 헬스체크 (nginx plus 또는 모듈 필요)
keepalive 32;
}
server {
listen 80;
server_name lb.example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 3s;
proxy_read_timeout 30s;
}
location /health {
access_log off;
return 200 "OK";
}
}
🛠 7-4. 고가용성(HA) 아키텍처
고가용성(High Availability)이란 시스템이 장애가 발생해도 서비스가 지속되는 설계입니다. 목표는 99.99% (연간 약 52분 이내 다운타임) 이상.
| 가용성 레벨 | nines | 연간 다운타임 | 적합 서비스 |
|---|---|---|---|
| 99% | 2 nines | 약 87.6시간 | 내부 툴 |
| 99.9% | 3 nines | 약 8.7시간 | 일반 웹서비스 |
| 99.99% | 4 nines | 약 52분 | 전자상거래, 금융 |
| 99.999% | 5 nines | 약 5분 | 항공, 의료, 통신 |
🔄 7-5. Active-Passive vs Active-Active
🆕 Active-Passive (페일오버)
Primary가 죽으면 Standby가 자동으로 서비스 인수. 평소 Standby는 대기만 함.
[Standby 🔴] ← 헬스체크 감시
Primary 장애 시:
[Primary 🔴] 사망
[Standby 🟢] VIP 인수!
⚡ Active-Active (부하분산+HA)
모든 노드가 동시에 서비스. 한 노드 장애 시 다른 노드가 자동 분담.
Node1 장애 시:
[Node1 🔴] 장애
[Node2 🟢] 트래픽 100% 처리
✅ 현업 HA 체크포인트
- SPOF(Single Point of Failure) 제거: 로드밸런서, DB, DNS 모두 이중화
- 헬스체크: 5초 간격, 3회 실패 시 자동 제외
- 자동 페일오버: 수동 개입 없이 자동 전환 (RTO: 목표 복구 시간 < 30초)
- 데이터 복제: DB Replication (Primary-Replica 구성)
- 멀티 AZ: AWS에서 가용 영역(AZ) 2개 이상 사용
🛡 Chapter 08
보안 기초 — 방화벽·VPN·DMZ·제로트러스트
인프라 보안의 모든 것! 현업에서 반드시 알아야 할 네트워크 보안 핵심 개념 완전 정복
💡 8-1. 방화벽(Firewall) 완전 정복
방화벽은 네트워크 트래픽을 허용(Allow)/차단(Deny)하는 보안 장벽입니다. 집으로 치면 대문의 경비원 역할입니다.
🔴 기본 정책: Deny All
모든 트래픽을 차단하고, 필요한 것만 명시적으로 허용. 화이트리스트 방식
🟢 허용 예시
80(HTTP), 443(HTTPS), 22(SSH from admin IP), 3306(MySQL from app server)
📊 방화벽 규칙 예시 (iptables & AWS 보안그룹)
💻 iptables (리눅스 방화벽)
# 기본 정책: 모두 차단
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 루프백(자기자신) 허용
iptables -A INPUT -i lo -j ACCEPT
# 기존 연결 유지 허용
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# HTTP/HTTPS 허용 (전체)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# SSH는 특정 IP만 허용
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
# MySQL은 앱서버 IP만 허용
iptables -A INPUT -p tcp --dport 3306 -s 10.0.1.10 -j ACCEPT
# 규칙 저장
iptables-save > /etc/iptables/rules.v4
⛅ AWS 보안그룹 (Security Group)
# AWS CLI로 보안그룹 생성
aws ec2 create-security-group \
--group-name web-sg \
--description "Web Server SG"
# HTTP 허용 (전체)
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp --port 80 \
--cidr 0.0.0.0/0
# HTTPS 허용
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp --port 443 \
--cidr 0.0.0.0/0
# SSH는 내 IP만 허용
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp --port 22 \
--cidr 203.0.113.0/32
# 보안그룹 규칙 조회
aws ec2 describe-security-groups \
--group-ids sg-12345678
🏠 8-2. DMZ (비무장지대) 아키텍처
인터넷
Firewall
(외부)
DMZ
Web Server
API Gateway
DMZ = 외부망과 내부망 사이의 완충지대. 웹서버는 DMZ에, DB는 내부망에 배치.
🔗 8-3. VPN (Virtual Private Network)
VPN은 인터넷을 통해 암호화된 전용 터널을 만드는 기술입니다. 재택근무자가 사내 내부망에 접속하거나, 본사-지사 네트워크를 연결할 때 사용합니다.
| VPN 종류 | 용도 | 프로토콜 | 특징 |
|---|---|---|---|
| Site-to-Site | 본사-지사 연결 | IPSec, GRE | 항상 연결 유지 |
| Remote Access | 재택근무자 접속 | OpenVPN, WireGuard | 필요 시 연결 |
| AWS VPN | 온프레미스-AWS 연결 | IPSec | AWS 관리형 서비스 |
| AWS Direct Connect | 전용선 연결 | 전용 물리 회선 | 고속, 안정적 (엔터프라이즈) |
💡 8-4. 제로트러스트 보안 모델
제로트러스트(Zero Trust)의 핵심은 "절대 신뢰하지 말고, 항상 검증하라(Never Trust, Always Verify)"입니다. 내부망에 있다고 해서 자동으로 신뢰하지 않습니다.
MFA, SSO, 인증서
MDM, 단말 보안 상태
필요한 것만 접근 허용
✅ 현업 보안 필수 체크리스트
- SSH 키 인증: 비밀번호 로그인 비활성화, RSA/ED25519 키 사용
- 포트 스캔 방어: 불필요한 포트 모두 차단, SSH 포트 변경 검토
- 자동 업데이트: sudo apt unattended-upgrades 활성화
- fail2ban: 로그인 실패 5회 시 IP 자동 차단
- 로그 보관: /var/log/ 90일 이상 보관, SIEM 연동
- S3 퍼블릭 차단: Block Public Access 항상 ON
- IAM 최소권한: Root 계정 MFA, 서비스별 전용 Role 사용
📊 Chapter 09
모니터링 & 장애 대응 완전 정복
문제가 생기기 전에 발견하고, 장애가 나면 빠르게 복구하는 현업 핵심 스킬
💡 9-1. 모니터링의 3대 축 (메트릭·로그·트레이스)
Metrics (메트릭)
CPU, 메모리, 네트워크 등 수치화된 시계열 데이터. 대시보드로 시각화.
Logs (로그)
애플리케이션·시스템이 남기는 텍스트 기록. 문제 원인 분석에 필수.
Traces (트레이스)
요청이 서비스 간에 어떻게 흐르는지 추적. 병목 지점 파악.
📐 9-2. 핵심 모니터링 지표 (메트릭)
| 카테고리 | 메트릭 | 경고 임계값 | 심각 임계값 | 대응 방법 |
|---|---|---|---|---|
| CPU | 사용률 | 🟠 70% | 🔴 90% | 스케일업/아웃, 프로세스 점검 |
| 메모리 | 사용률 | 🟠 75% | 🔴 90% | 메모리 누수 점검, 스케일업 |
| 디스크 | 사용률 | 🟠 80% | 🔴 95% | 로그 정리, 디스크 확장 |
| 네트워크 | 대역폭 사용률 | 🟠 70% | 🔴 90% | 트래픽 분석, 대역폭 증설 |
| 웹서버 | 응답시간 (p99) | 🟠 1초 | 🔴 3초 | DB 쿼리 최적화, 캐시 적용 |
| DB | 커넥션 수 | 🟠 max*70% | 🔴 max*90% | 커넥션 풀 설정, DB 스케일업 |
| 에러율 | 5xx 비율 | 🟠 1% | 🔴 5% | 즉시 에러 로그 분석 |
💻 리눅스 핵심 모니터링 명령어
# CPU, 메모리 실시간 모니터링
top
htop # 더 예쁜 버전
# CPU 상세 (로드 평균)
uptime
# 출력: load average: 0.12, 0.08, 0.03 (1분/5분/15분)
# 메모리 사용량
free -h
# 디스크 I/O 모니터링
iostat -xz 1
iotop # 프로세스별 I/O
# 네트워크 트래픽
iftop # 실시간 네트워크 대역폭
ss -tulnp # 열린 포트 + 프로세스 확인
netstat -an | grep ESTABLISHED | wc -l # TCP 연결 수
# 프로세스 리소스 확인
ps aux --sort=-%cpu | head -10 # CPU 상위 10
ps aux --sort=-%mem | head -10 # 메모리 상위 10
# 로그 실시간 확인
tail -f /var/log/nginx/error.log
journalctl -f -u nginx.service # systemd 서비스 로그
🚨 9-3. 장애 대응 프로세스 (Incident Response)
모니터링 알람
또는 사용자 신고
담당자 알림
영향도 파악
로그 확인
최근 변경 점검
재발 방지
포스트모텀 작성
롤백 또는
핫픽스 배포
☕ 장애 발생 시 체크 순서 (Checklist)
# Step 1: 서버 상태 확인
ping server-ip # 네트워크 연결 확인
ssh admin@server-ip # SSH 접속 가능 여부
# Step 2: 서비스 상태 확인
systemctl status nginx
systemctl status app.service
# Step 3: 리소스 확인
top # CPU/메모리 급증 여부
df -h # 디스크 풀 여부 (가장 자주 발생!)
free -h # OOM(메모리 부족) 여부
# Step 4: 에러 로그 확인
tail -100 /var/log/nginx/error.log
journalctl -u app.service --since "30 min ago"
# Step 5: 최근 배포/변경 확인
git log --oneline -10 # 최근 커밋
# 필요 시 롤백
git revert HEAD
# 또는 이전 Docker 이미지로 롤백
docker pull myapp:v1.2.3
docker-compose up -d
📈 9-4. 모니터링 스택 — Prometheus + Grafana 구성
💻 docker-compose로 Prometheus + Grafana 구성
# docker-compose.monitoring.yml
version: "3.8"
services:
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.retention.time=30d"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=strongpassword
volumes:
- grafana_data:/var/lib/grafana
node-exporter: # 서버 메트릭 수집
image: prom/node-exporter:latest
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
volumes:
prometheus_data:
grafana_data:
✅ 모니터링 구축 핵심 원칙
- 알람은 행동 가능한 것만: 너무 많은 알람 = 알람 피로 = 진짜 장애 놓침
- SLI/SLO 정의: 에러율 <0.1%, 응답시간 p99 <500ms 등 목표 수치 설정
- 대시보드 계층: 서비스 개요 → 인프라 상세 → 컴포넌트별 3단계
- 온콜 로테이션: 장애 대응 담당자를 주간 교대로 지정 (PagerDuty, OpsGenie)
- 포스트모텀(사후분석): 비난 없이, 시스템 개선에 집중하는 문화
🏆 Chapter 10
현업 면접 Q&A TOP 10 — 인프라 기초
실제 인프라 엔지니어 채용 면접에서 자주 나오는 질문과 합격 수준의 완벽한 답변
A: 서버는 요청을 처리하는 컴퓨팅 자원(CPU+RAM), 네트워크는 서버 간 데이터를 주고받는 통신 인프라, 스토리지는 데이터를 영구 저장하는 장치입니다. 웹 서비스를 예로 들면 서버가 로직을 처리하고, 스토리지에서 데이터를 읽어 네트워크를 통해 클라이언트에게 전달하는 구조입니다.
A: HTTP는 평문으로 데이터를 전송해 중간자 공격에 취약합니다. HTTPS는 HTTP에 TLS(SSL) 암호화 계층을 추가해 데이터를 암호화하고, 서버 인증서로 신뢰성을 보장합니다. HTTPS는 443 포트를 사용하며, TLS 핸드셰이크로 대칭키를 안전하게 교환한 뒤 AES로 통신합니다.
A: DNS(Domain Name System)는 도메인을 IP주소로 변환하는 분산 데이터베이스입니다. 브라우저에서 도메인 입력 시, 로컬 캐시 확인 → 로컬 DNS 서버 → 루트 DNS → TLD DNS → 권한 DNS 서버 순으로 재귀 쿼리합니다. TTL(Time To Live)로 캐싱 시간을 제어합니다.
A: TCP는 3-way 핸드셰이크로 연결을 확립하고, 순서 보장·재전송으로 신뢰성을 확보합니다. HTTP, 이메일, 파일 전송에 사용됩니다. UDP는 연결 없이 즉시 전송해 빠르지만 신뢰성이 없습니다. DNS, 게임, 스트리밍, VoIP에 사용됩니다.
A: 로드밸런서는 ①트래픽 분산으로 특정 서버 과부하 방지, ②장애 서버 자동 제외로 가용성 향상, ③SSL 오프로딩으로 서버 부하 절감, ④수평 확장(Scale-out) 지원 등의 역할을 합니다. 없으면 단일 서버 장애 시 전체 서비스 중단입니다.
A: 클라우드는 스타트업, 트래픽 변동이 심한 서비스, 빠른 출시가 필요한 경우에 적합합니다. 온프레미스는 금융·의료 등 규제가 엄격하거나, 5년 이상 운영할 대규모 워크로드, 레이턴시가 극히 낮아야 하는 경우에 유리합니다. 현재는 두 가지를 혼용하는 하이브리드가 대세입니다.
A: 방화벽은 물리적 네트워크 장비 또는 OS 레벨 소프트웨어(iptables)로 패킷을 필터링합니다. AWS 보안그룹은 EC2 인스턴스에 적용되는 가상 방화벽으로, Stateful 방식(인바운드 허용 시 응답 자동 허용)이며 Allow만 지정 가능합니다. NACL은 Stateless로 서브넷 레벨에서 동작합니다.
A: ①ping으로 네트워크 연결 확인 → ②SSH 접속 시도 → ③top/free/df로 CPU·메모리·디스크 풀 여부 확인 → ④서비스 상태 확인(systemctl status) → ⑤에러 로그 확인(journalctl, /var/log/) → ⑥최근 배포·변경 이력 확인 → ⑦필요 시 롤백 순서로 진행합니다.
A: SPOF를 제거하고 모든 컴포넌트를 이중화합니다. ①서버 2대 이상 + 로드밸런서, ②DB Primary-Replica + 자동 페일오버, ③멀티 AZ 배포, ④자동 헬스체크 + 장애 서버 자동 제외, ⑤CDN으로 정적 자원 분산, ⑥자동 스케일링(Auto Scaling) 설정이 핵심입니다.
A: 가용성·지연시간·에러율·포화도(Saturation) 4가지 황금 신호(Golden Signal)를 중심으로 모니터링합니다. Prometheus로 메트릭 수집, Grafana로 시각화, Alertmanager로 알림을 구성합니다. 알람은 행동 가능한 것만 설정해 알람 피로를 방지하고, SLO(서비스 수준 목표)를 기준으로 운영합니다.
✅ InfraDevGuide0001 학습 완료 체크리스트
📚 개념 이해
- 서버·네트워크·스토리지 역할과 관계 설명 가능
- 물리 서버 vs 가상화(VM) 차이 이해
- IP주소, 서브넷, DNS, 포트 개념 설명 가능
- HDD/SSD/NAS/SAN/오브젝트 스토리지 구분
- 온프레미스 vs 클라우드 의사결정 기준 이해
💻 실습 완료
- lsblk, df, iostat로 디스크 정보 확인
- AWS S3 CLI로 버킷 생성 및 파일 업로드
- Nginx HTTPS 설정 + Let's Encrypt 인증서 발급
- iptables 방화벽 규칙 설정
- Prometheus + Grafana 모니터링 스택 구성
🌐 네트워크 & 보안
- HTTP 상태코드 2xx/3xx/4xx/5xx 즉답 가능
- TLS 핸드셰이크 과정 설명 가능
- 방화벽 규칙으로 포트 허용/차단 가능
- VPN과 DMZ 아키텍처 설명 가능
- 제로트러스트 개념 이해
🏆 면접 준비
- 서버/네트워크/스토리지 설명 가능
- 로드밸런서 필요성 및 알고리즘 설명 가능
- 99.99% HA 달성 방법 설명 가능
- 장애 대응 프로세스 5단계 암기
- 모니터링 황금 신호(4 Golden Signals) 암기
InfraDevGuide0001 완료!
인프라의 핵심 개념인 서버·네트워크·스토리지부터 보안·모니터링까지
현업 인프라 엔지니어가 알아야 할 모든
기초를 마스터했습니다!
👉 다음 단계: InfraDevGuide0002
Linux 기초 완전 정복 — 터미널, 파일시스템, 권한, 패키지 관리까지
📚 InfraDevGuide Series |
ToBeFullStackDev
🕐 최종 업데이트: 2026.03 | ★ 현업 인프라 엔지니어 기준 작성