네트워크-스터디-7주차-2

msgo·2025년 11월 12일

혼공네 Final 챕터.


서버 안정성과 고가용성

안정성은 특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특성이다.
안정성을 수치화하는 대표적인 개념으로 가용성(Availability)고가용성(High Availability, HA) 이 있다.
이는 “컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율” 로 정의된다.

가용성(%) = 업타임 / (업타임 + 다운타임)

고가용성은 일반적으로 99.999%, 즉 파이브 나인즈(Five Nines) 로 표현된다.
이는 1년 기준 약 5.26분, 한 달 기준 26.3초의 다운타임을 의미하며,
하루로 환산하면 약 1초의 중단 시간만 허용되는 수준이다.


결함 감내(Fault Tolerance)와 이중화(Redundancy)

시스템은 다양한 이유로 장애를 겪는다.

  • 과도한 트래픽
  • 보안 공격
  • 소프트웨어 오류
  • 하드웨어 장애
  • 자연재해

이러한 상황에서도 기능을 유지할 수 있는 능력을 결함 감내(Fault Tolerance) 라 한다.
결함 감내를 실현하기 위한 대표적 방법이 이중화(Redundancy) 이다.
이중화란 핵심 구성요소를 예비로 중복 배치하여 장애 발생 시 즉시 대체할 수 있도록 하는 기술이다.

이중화의 대상은 시스템 전체 중단을 유발할 수 있는 지점으로,
이를 단일 장애점(SPOF, Single Point of Failure) 이라 부른다.

이중화 방식은 두 가지로 구분된다.

  • Active/Standby : 하나는 동작 중(Active), 다른 하나는 대기(Standby) 상태
  • Active/Active : 두 개 이상의 시스템이 동시에 동작하며 부하를 공유

이중화를 확장한 형태로 다중화(Multiplexing) 도 존재하며,
3개 이상의 예비 구성을 통해 높은 안정성을 확보할 수 있다.


이중화·다중화 사례: 티밍(Teaming)과 본딩(Bonding)

네트워크 인터페이스를 다중화하는 대표적인 기술이 티밍(Teaming)본딩(Bonding) 이다.

  • Teaming : Windows 환경에서 주로 사용
  • Bonding : Linux 환경에서 주로 사용

둘 다 여러 네트워크 인터페이스를 하나의 논리적 인터페이스처럼 동작시키는 기술이다.
이를 통해 대역폭을 확장하거나, 한 인터페이스에 장애가 발생하더라도
다른 인터페이스를 통해 지속적인 통신이 가능해진다.


로드 밸런싱 (Load Balancing)

서버에 과도한 트래픽이 집중되면 CPU 과열, 메모리 부족, 요청 지연 등의 문제가 발생한다.
이로 인해 가용성이 떨어질 수 있으며, 이를 방지하기 위한 기술이 로드 밸런싱이다.

로드 밸런싱(load balancing) 은 다수의 서버에 요청을 고르게 분산하여
시스템 전체의 부하를 균등하게 유지하는 기술이다.
하드웨어적으로는 L4/L7 스위치에서 수행할 수 있으며,
소프트웨어적으로는 Nginx, HAProxy, Envoy 등의 도구를 통해 구현할 수 있다.

로드 밸런서가 사용하는 대표적인 분배 알고리즘은 다음과 같다.

  • Round Robin : 서버에 순차적으로 요청 분배
  • Least Connection : 연결이 가장 적은 서버에 우선 분배
  • Random : 무작위로 서버 선택
  • Hash-Based : 요청 IP나 세션 ID를 기준으로 분배
  • Weighted Round Robin / Weighted Least Connection : 각 서버의 성능을 고려해 가중치 부여

소프트웨어 레벨의 부하 분산 사례

소프트웨어 시스템 내부에서도 부하를 분산하는 구조가 존재한다.
대표적으로 RabbitMQCelery 가 있다.

RabbitMQ

RabbitMQ는 메시지 브로커(Message Broker) 로,
서버 간 데이터를 안전하게 주고받는 비동기 메시징 시스템이다.
생산자(Producer)가 보낸 메시지를 큐에 저장하고,
소비자(Consumer)가 이를 꺼내 처리한다.
이를 통해 작업을 여러 워커로 분산시켜 서버 부하를 줄일 수 있다.

Celery

Celery는 분산 작업 큐(Distributed Task Queue) 로,
대량의 비동기 작업을 여러 워커 프로세스에 분배하여 실행하는 구조이다.
내부적으로 RabbitMQ 또는 Redis 같은 메시지 브로커를 사용한다.
예를 들어 대용량 이미지 처리, 로그 수집, 데이터 변환 등의 작업을 여러 노드에 분산할 수 있다.

┌────────────────────┐
│ Web App │
│ (Django/FastAPI) │
└────────┬───────────┘
│ ① delay()

┌────────────────────┐
│ RabbitMQ │ ← 메시지 브로커
│ (Task Queue) │
└────────┬───────────┘
│ ② 메시지 전달

┌────────────────────┐
│ Celery Worker │ ← 백그라운드에서 작업 수행
│ (Task Executor) │
└────────┬───────────┘
│ ③ 결과 저장

┌────────────────────┐
│ Result Backend │ ← Redis / DB
└────────────────────┘


헬스 체크 (Health Check)

이중화나 로드 밸런싱 구조에서는 각 서버의 상태를 지속적으로 확인해야 한다.
이를 헬스 체크(Health Check) 라 한다.
주기적으로 특정 엔드포인트나 포트를 호출해 정상 응답(200 OK 등) 이 오는지 확인하며,
문제가 감지된 서버는 자동으로 분배 대상에서 제외된다.
Nginx, Kubernetes, AWS ELB 등에서 모두 사용되는 핵심 기능이다.


프록시 (Proxy)

프록시 서버(Proxy Server) 는 클라이언트와 서버 사이에서 통신을 중개하는 시스템이다.
클라이언트는 실제 서버가 아닌 프록시 서버로 요청을 보내며,
프록시가 이를 대신 전달하고 응답을 반환한다.
이를 통해 보안, 캐싱, 부하 분산, IP 마스킹 등의 기능을 수행한다.

프록시는 동작 위치와 목적에 따라 구분된다.

  • Forward Proxy : 클라이언트 앞단에서 요청을 대리 (예: 회사 내부망, VPN)
  • Reverse Proxy : 서버 앞단에서 요청을 분산 (예: Nginx, Apache, Cloudflare)

리버스 프록시는 로드 밸런서 역할도 수행할 수 있으며,
캐시를 활용해 서버 부하를 줄이는 기능을 제공한다.


암호화와 복호화

암호화(Encryption) 는 원문 데이터를 제3자가 알아볼 수 없는 형태로 변환하는 과정이다.
복호화(Decryption) 는 암호화된 데이터를 원문 데이터로 되돌리는 과정이다.
암호화와 복호화는 데이터 송수신의 안전성 확보 뿐 아니라 인증서 기반 검증에도 활용된다.
핵심 요소는 키(Key) 로, 키의 특성과 사용 방식에 따라 암호화 방식이 구분된다.

대칭 키 암호화(Symmetric Key Encryption)

  • 암호화와 복호화에 같은 키 사용
  • 대표 알고리즘: AES, DES, 3DES
  • 장점: 속도 빠름, 계산량 적음
  • 단점: 키 관리 어려움, 키 유출 시 데이터 전체 위험

비대칭 키 암호화(Asymmetric Key Encryption / 공개키 암호화)

  • 암호화와 복호화에 서로 다른 키 사용
  • 공개키(Public Key): 모두에게 공개, 암호화 용도
  • 개인키(Private Key): 소유자만 보유, 복호화 용도
  • 대표 알고리즘: RSA, ECC
  • 장점: 키 관리 용이, 인증 및 서명 가능
  • 단점: 연산량 많음, 속도 느림

키 사례

  • AWS 키 : 서비스별 접근 제어를 위한 대칭 키 혹은 API 키 형태
  • OTP(One-Time Password) : 임시 비밀번호, 대칭 기반 인증
  • SSH 접속 : 공개키 기반 인증, 서버는 개인키로 접근 검증

인증서와 디지털 서명

  • 인증서(Certificate) : 공개키와 소유자 정보를 검증한 전자 문서, 신뢰 기관(CA) 발급

  • 디지털 서명(Digital Signature) : 데이터 무결성과 발신자 인증을 위한 전자 서명

    • 생성 과정: 원문 → 해시값 생성 → 개인키로 암호화
    • 검증 과정: 공개키로 복호화 → 해시값 비교

해시(Hash)와 해시 값

  • 해시(Hash) : 임의 길이 데이터를 고정 길이 값으로 변환하는 함수

  • 해시 값(Hash Value) : 해시 함수 출력 값, 데이터 변조 확인 가능

  • 특징:

    • 민감성: 입력값이 조금만 달라져도 결과가 완전히 달라짐
    • 예시: "민성"과 "민성 " (공백 포함) → 해시값 다름
    • 단방향성: 해시값만으로 원문 복원 불가
  • 용도:

    • 데이터 무결성 검증
    • 비밀번호 저장
    • 디지털 서명
    • 블록체인 트랜잭션

HTTPS, SSL, TLS

  • HTTPS(HyperText Transfer Protocol Secure) : HTTP + 암호화

  • SSL(Secure Socket Layer) : HTTPS 초기 암호화 프로토콜

  • TLS(Transport Layer Security) : SSL 업그레이드 버전, 현재 표준

  • 암호 스위트(Cipher Suite) : 통신 시 사용할 암호화 알고리즘 집합

    • 구성: 키 교환 방식, 암호화 알고리즘, 해시 알고리즘

전파와 주파수, Wi-Fi

  • 전파(Radio Wave) : 전자기파를 이용한 정보 전달 수단

  • 주파수(Frequency) : 전파의 진동 횟수, Hz 단위

  • Wi-Fi : IEEE 802.11 규격 기반 무선 통신

    • 주파수 대역: 2.4GHz, 5GHz
    • 2.4GHz: 회절성 좋음, 장애물 통과 용이, 간섭 많음, 속도 낮음
    • 5GHz: 회절성 낮음, 장애물 통과 제한, 간섭 적음, 속도 높음
  • AP(Access Point) : 클라이언트와 네트워크 연결 제공, 신호 중계 역할


0개의 댓글