Guider/Infra/InfraDevGuide0001
Infra#01

InfraDevGuide0001

인프라 개념 완전 정복

INFRA DEV GUIDE SERIES

인프라 개념 완전 정복 A-Z

서버 · 네트워크 · 스토리지 · 온프레미스 vs 클라우드 현업 실전

비전공자도 1~2주 안에 인프라 기초 완전 이해 — 개념부터 실무까지!

대상: 완전 비전공자기간: 1~2주난이도: ★★☆☆☆Guide 1/7

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+메모리라면, 스토리지는 서버의 "하드디스크" 역할입니다. 현대 인프라에서 스토리지는 단순한 디스크를 넘어 네트워크 스토리지, 클라우드 오브젝트 스토리지로 진화했습니다.

🌟 쉬운 비유: RAM = 책상 위 메모 / HDD·SSD = 서랍장 / NAS = 공유 캐비닛 / 오브젝트 스토리지 = 무한 창고

📊 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는 네트워크에 연결된 파일 서버입니다. 여러 사용자·서버가 동시에 같은 파일에 접근할 수 있습니다.

[서버A] ⎯⎯⎯⎯⎯
[서버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(경로+파일명)메타데이터를 가집니다.

📚
Key

photos/2024/trip.jpg

📄
Data

실제 파일 바이너리

📋
Metadata

크기, 날짜, 타입 등

☕ 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부터 앱까지 직접 관리

AWS EC2, GCP Compute Engine, Azure VM

PaaS

Platform as a Service

실행 환경까지 제공. 코드만 올리면 됨

AWS Elastic Beanstalk, Heroku, Google App Engine

SaaS

Software as a Service

완성된 소프트웨어 제공. 그냥 사용만 하면 됨

Gmail, Slack, Salesforce, Dropbox

💡 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. 하이브리드 클라우드 & 멀티 클라우드

🤝 하이브리드 클라우드

온프레미스 + 클라우드를 함께 사용. 민감 데이터는 온프레미스에, 확장성이 필요한 서비스는 클라우드에.

🏢 온프레미스 (DB, 핵심데이터) ↔ VPN ↔ ⛅ AWS (웹, API, CDN)

🌐 멀티 클라우드

AWS + GCP + Azure를 동시 사용. 벤더 종속성(Lock-in)을 방지하고 각 강점만 취함.

AWS (메인) + GCP (AI/ML) + Azure (MS 연동)

⚡ 현업 의사결정 체크리스트

  • 서비스 규모가 작고 빠른 출시 필요? → 클라우드 선택
  • 금융·의료·공공기관 규제 데이터? → 온프레미스 또는 Private Cloud
  • 트래픽 변동이 심한 서비스? → 클라우드 Auto Scaling
  • 5년 이상 안정적 운영, 대규모 워크로드? → 온프레미스가 장기적 저렴
  • 글로벌 서비스? → 클라우드 멀티 리전

🌐 Chapter 06

HTTP/HTTPS와 웹 동작 원리 완전 정복

브라우저에서 URL을 입력했을 때 서버에서 무슨 일이 벌어지는가? 인프라 엔지니어의 필수 지식

💡 6-1. URL을 입력하면 생기는 일 (전체 흐름)

1. URL 입력2. DNS 조회3. TCP 연결4. TLS 핸드셰이크5. HTTP 요청6. 서버 처리7. 응답 반환8. 브라우저 렌더링

📋 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 암호화로 이 문제를 해결합니다.

🔓 HTTP (위험)

password=1234 (그대로 노출)

🔒 HTTPS (안전)

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)는 들어오는 트래픽을 여러 서버에 균등하게 분산시켜, 특정 서버에 과부하가 걸리지 않도록 합니다.

[ 클라이언트 요청 ]
⚖ 로드밸런서
⮌     ⬇     ⮎
💻 서버1
💻 서버2
💻 서버3

📊 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는 대기만 함.

[Primary 🟢] <-- VIP --
[Standby 🔴] ← 헬스체크 감시

Primary 장애 시:
[Primary 🔴] 사망
[Standby 🟢] VIP 인수!

⚡ Active-Active (부하분산+HA)

모든 노드가 동시에 서비스. 한 노드 장애 시 다른 노드가 자동 분담.

[Node1 🟢] ← LB → [Node2 🟢]

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 (비무장지대) 아키텍처

[인터넷]   →   [외부 방화벽]   →   [DMZ]   →   [내부 방화벽]   →   [내부망]
🌐
인터넷
🛡
Firewall
(외부)
🏙
DMZ
Web Server
API Gateway
🛡 Firewall (내부)
🔒 내부망 (DB, ERP, 인사시스템)

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)"입니다. 내부망에 있다고 해서 자동으로 신뢰하지 않습니다.

👤
Identity 인증

MFA, SSO, 인증서

💻
Device 검증

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, 메모리, 네트워크 등 수치화된 시계열 데이터. 대시보드로 시각화.

Prometheus + Grafana
📄

Logs (로그)

애플리케이션·시스템이 남기는 텍스트 기록. 문제 원인 분석에 필수.

ELK Stack (Elasticsearch + Logstash + Kibana)
🔗

Traces (트레이스)

요청이 서비스 간에 어떻게 흐르는지 추적. 병목 지점 파악.

Jaeger, Zipkin, AWS X-Ray

📐 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)

1
탐지

모니터링 알람
또는 사용자 신고

2
초동 대응

담당자 알림
영향도 파악

3
원인 분석

로그 확인
최근 변경 점검

5
사후 조치

재발 방지
포스트모텀 작성

4
복구

롤백 또는
핫픽스 배포

☕ 장애 발생 시 체크 순서 (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 — 인프라 기초

실제 인프라 엔지니어 채용 면접에서 자주 나오는 질문과 합격 수준의 완벽한 답변

❓ Q1. 서버, 네트워크, 스토리지의 차이를 설명하세요.

A: 서버는 요청을 처리하는 컴퓨팅 자원(CPU+RAM), 네트워크는 서버 간 데이터를 주고받는 통신 인프라, 스토리지는 데이터를 영구 저장하는 장치입니다. 웹 서비스를 예로 들면 서버가 로직을 처리하고, 스토리지에서 데이터를 읽어 네트워크를 통해 클라이언트에게 전달하는 구조입니다.

❓ Q2. HTTP와 HTTPS의 차이를 설명하세요.

A: HTTP는 평문으로 데이터를 전송해 중간자 공격에 취약합니다. HTTPS는 HTTP에 TLS(SSL) 암호화 계층을 추가해 데이터를 암호화하고, 서버 인증서로 신뢰성을 보장합니다. HTTPS는 443 포트를 사용하며, TLS 핸드셰이크로 대칭키를 안전하게 교환한 뒤 AES로 통신합니다.

❓ Q3. DNS가 무엇이고 어떻게 동작하나요?

A: DNS(Domain Name System)는 도메인을 IP주소로 변환하는 분산 데이터베이스입니다. 브라우저에서 도메인 입력 시, 로컬 캐시 확인 → 로컬 DNS 서버 → 루트 DNS → TLD DNS → 권한 DNS 서버 순으로 재귀 쿼리합니다. TTL(Time To Live)로 캐싱 시간을 제어합니다.

❓ Q4. TCP와 UDP의 차이는?

A: TCP는 3-way 핸드셰이크로 연결을 확립하고, 순서 보장·재전송으로 신뢰성을 확보합니다. HTTP, 이메일, 파일 전송에 사용됩니다. UDP는 연결 없이 즉시 전송해 빠르지만 신뢰성이 없습니다. DNS, 게임, 스트리밍, VoIP에 사용됩니다.

❓ Q5. 로드밸런서가 필요한 이유는?

A: 로드밸런서는 ①트래픽 분산으로 특정 서버 과부하 방지, ②장애 서버 자동 제외로 가용성 향상, ③SSL 오프로딩으로 서버 부하 절감, ④수평 확장(Scale-out) 지원 등의 역할을 합니다. 없으면 단일 서버 장애 시 전체 서비스 중단입니다.

❓ Q6. 온프레미스와 클라우드 중 어떤 상황에 무엇을 선택하나요?

A: 클라우드는 스타트업, 트래픽 변동이 심한 서비스, 빠른 출시가 필요한 경우에 적합합니다. 온프레미스는 금융·의료 등 규제가 엄격하거나, 5년 이상 운영할 대규모 워크로드, 레이턴시가 극히 낮아야 하는 경우에 유리합니다. 현재는 두 가지를 혼용하는 하이브리드가 대세입니다.

❓ Q7. 방화벽과 AWS 보안그룹의 차이는?

A: 방화벽은 물리적 네트워크 장비 또는 OS 레벨 소프트웨어(iptables)로 패킷을 필터링합니다. AWS 보안그룹은 EC2 인스턴스에 적용되는 가상 방화벽으로, Stateful 방식(인바운드 허용 시 응답 자동 허용)이며 Allow만 지정 가능합니다. NACL은 Stateless로 서브넷 레벨에서 동작합니다.

❓ Q8. 서버가 응답하지 않을 때 어떻게 대응하나요?

A: ①ping으로 네트워크 연결 확인 → ②SSH 접속 시도 → ③top/free/df로 CPU·메모리·디스크 풀 여부 확인 → ④서비스 상태 확인(systemctl status) → ⑤에러 로그 확인(journalctl, /var/log/) → ⑥최근 배포·변경 이력 확인 → ⑦필요 시 롤백 순서로 진행합니다.

❓ Q9. 99.99% 가용성을 달성하려면?

A: SPOF를 제거하고 모든 컴포넌트를 이중화합니다. ①서버 2대 이상 + 로드밸런서, ②DB Primary-Replica + 자동 페일오버, ③멀티 AZ 배포, ④자동 헬스체크 + 장애 서버 자동 제외, ⑤CDN으로 정적 자원 분산, ⑥자동 스케일링(Auto Scaling) 설정이 핵심입니다.

❓ Q10. 인프라 모니터링에서 가장 중요한 것은?

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 기초 완전 정복 — 터미널, 파일시스템, 권한, 패키지 관리까지

📚 9개 핵심 챕터
💻 20+ 실습 예제
📊 15+ 비교표
🏆 면접 Q&A 10선

📚 InfraDevGuide Series | ToBeFullStackDev
🕐 최종 업데이트: 2026.03 | ★ 현업 인프라 엔지니어 기준 작성