<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jongc__c.log</title>
        <link>https://velog.io/</link>
        <description>능동적인 삶을 위하여</description>
        <lastBuildDate>Tue, 27 Jan 2026 15:17:31 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. jongc__c.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jongc__c" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[AWS Gateway Load Balancer (GWLB) ]]></title>
            <link>https://velog.io/@jongc__c/AWS-Gateway-Load-Balancer-GWLB</link>
            <guid>https://velog.io/@jongc__c/AWS-Gateway-Load-Balancer-GWLB</guid>
            <pubDate>Tue, 27 Jan 2026 15:17:31 GMT</pubDate>
            <description><![CDATA[<h2 id="1-gateway-load-balancer란">1. Gateway Load Balancer란?</h2>
<p>Gateway Load Balancer는 <strong>3rd party 네트워크 가상 어플라이언스의 배포, 확장, 관리</strong>를 위한 AWS 관리형 서비스입니다.</p>
<p><strong>Layer 3 (Network Layer) - IP Protocol</strong>에서 작동하며, 모든 네트워크 트래픽을 투명하게 처리합니다.</p>
<h2 id="2-주요-사용-사례">2. 주요 사용 사례</h2>
<h3 id="보안-어플라이언스">보안 어플라이언스</h3>
<ul>
<li><strong>방화벽 (Firewalls)</strong></li>
<li><strong>침입 탐지 시스템 (IDS)</strong></li>
<li><strong>침입 방지 시스템 (IPS)</strong></li>
<li><strong>딥 패킷 인스펙션 (DPI)</strong></li>
<li><strong>페이로드 조작 (Payload Manipulation)</strong></li>
</ul>
<h2 id="3-핵심-기능">3. 핵심 기능</h2>
<h3 id="transparent-network-gateway">Transparent Network Gateway</h3>
<ul>
<li>모든 트래픽의 <strong>단일 진입/출구점</strong> 역할</li>
<li>VPC 라우팅 테이블을 자동으로 업데이트</li>
<li>애플리케이션에 투명하게 작동</li>
</ul>
<h3 id="load-balancer">Load Balancer</h3>
<ul>
<li>가상 어플라이언스 Target Group으로 트래픽 분산</li>
<li>여러 보안 어플라이언스 간 부하 분산</li>
<li>Health Check를 통한 어플라이언스 상태 관리</li>
</ul>
<h3 id="기술적-세부사항">기술적 세부사항</h3>
<ul>
<li><strong>프로토콜</strong>: GENEVE protocol</li>
<li><strong>포트</strong>: 6081</li>
<li><strong>계층</strong>: Layer 3 (가장 낮은 수준의 로드 밸런서)</li>
</ul>
<h2 id="4-작동-원리">4. 작동 원리</h2>
<h3 id="기존-방식-glb-없이">기존 방식 (GLB 없이)</h3>
<pre><code>사용자 → ALB → 애플리케이션</code></pre><p><strong>문제점</strong>: 보안 검사 없이 직접 애플리케이션 접근</p>
<h3 id="glb-적용-후">GLB 적용 후</h3>
<pre><code>사용자 → GWLB → 보안 어플라이언스 → GWLB → 애플리케이션
     ↑                    ↓
   라우팅 테이블        트래픽 분석/필터링
   자동 업데이트        (정상: 통과, 위험: 드롭)</code></pre><h2 id="5-상세-동작-과정">5. 상세 동작 과정</h2>
<h3 id="1단계-라우팅-설정">1단계: 라우팅 설정</h3>
<ul>
<li>GWLB 생성 시 VPC 라우팅 테이블이 자동으로 업데이트</li>
<li>모든 트래픽이 GWLB를 먼저 거치도록 설정</li>
</ul>
<h3 id="2단계-트래픽-분산">2단계: 트래픽 분산</h3>
<ul>
<li>사용자 트래픽이 GWLB에 도달</li>
<li>GWLB가 보안 어플라이언스 Target Group으로 트래픽 분산</li>
</ul>
<h3 id="3단계-보안-검사">3단계: 보안 검사</h3>
<ul>
<li>각 보안 어플라이언스가 트래픽 분석</li>
<li><strong>정상 트래픽</strong>: GWLB로 다시 전송</li>
<li><strong>위험 트래픽</strong>: 드롭하여 차단</li>
</ul>
<h3 id="4단계-애플리케이션-전달">4단계: 애플리케이션 전달</h3>
<ul>
<li>검증된 트래픽만 GWLB를 통해 최종 애플리케이션으로 전달</li>
</ul>
<h2 id="6-실제-구현-시나리오">6. 실제 구현 시나리오</h2>
<h3 id="방화벽-구성-예시">방화벽 구성 예시</h3>
<pre><code>Internet Gateway
       ↓
   Gateway Load Balancer
       ↓
Firewall Appliances (EC2)
- Palo Alto Networks
- Fortinet FortiGate  
- Check Point CloudGuard
       ↓
   Gateway Load Balancer
       ↓
Application Load Balancer
       ↓
   Web Servers (EC2)</code></pre><h3 id="침입-탐지-시스템-구성">침입 탐지 시스템 구성</h3>
<pre><code>VPC Traffic
       ↓
   Gateway Load Balancer
       ↓
IDS/IPS Appliances
- Suricata
- Snort
- Commercial IDS Solutions
       ↓
Log Analysis &amp; Alert</code></pre><h2 id="7-glb-vs-다른-load-balancer">7. GLB vs 다른 Load Balancer</h2>
<table>
<thead>
<tr>
<th>특징</th>
<th>ALB</th>
<th>NLB</th>
<th><strong>GLB</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>계층</strong></td>
<td>Layer 7</td>
<td>Layer 4</td>
<td><strong>Layer 3</strong></td>
</tr>
<tr>
<td><strong>프로토콜</strong></td>
<td>HTTP/HTTPS</td>
<td>TCP/UDP</td>
<td><strong>IP</strong></td>
</tr>
<tr>
<td><strong>주요 용도</strong></td>
<td>웹 애플리케이션</td>
<td>고성능 앱</td>
<td><strong>보안 어플라이언스</strong></td>
</tr>
<tr>
<td><strong>트래픽 처리</strong></td>
<td>콘텐츠 기반</td>
<td>연결 기반</td>
<td><strong>패킷 기반</strong></td>
</tr>
<tr>
<td><strong>투명성</strong></td>
<td>애플리케이션 인식</td>
<td>연결 인식</td>
<td><strong>완전 투명</strong></td>
</tr>
</tbody></table>
<h2 id="8-구현-시-고려사항">8. 구현 시 고려사항</h2>
<h3 id="성능">성능</h3>
<ul>
<li>모든 트래픽이 보안 어플라이언스를 거치므로 지연 시간 증가</li>
<li>어플라이언스 성능이 전체 시스템 성능 결정</li>
</ul>
<h3 id="비용">비용</h3>
<ul>
<li>보안 어플라이언스 EC2 인스턴스 비용</li>
<li>GWLB 자체 사용 비용</li>
<li>데이터 처리 비용</li>
</ul>
<h3 id="가용성">가용성</h3>
<ul>
<li>보안 어플라이언스의 고가용성 설계 필수</li>
<li>Multi-AZ 배포 권장</li>
</ul>
<h2 id="💡-핵심-포인트">💡 핵심 포인트</h2>
<ul>
<li><strong>GLB는 보안 특화 Load Balancer</strong>: 일반적인 애플리케이션 로드 밸런싱이 아닌 보안 검사 목적</li>
<li><strong>투명한 네트워크 게이트웨이</strong>: 애플리케이션 코드 변경 없이 모든 트래픽 검사 가능</li>
<li><strong>3rd Party 어플라이언스 지원</strong>: AWS 네이티브 보안 서비스가 아닌 상용 보안 솔루션 통합</li>
<li><strong>Layer 3 동작</strong>: 가장 낮은 수준에서 모든 IP 트래픽 처리</li>
<li><strong>GENEVE 프로토콜</strong>: 표준 네트워크 가상화 프로토콜 사용 (Port 6081)</li>
</ul>
<hr>
<p><em>작성일: 2026-01-29</em>  </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AWS Load Balancer
ALB vs NLB vs GLB
]]></title>
            <link>https://velog.io/@jongc__c/AWS-Load-BalancerALB-vs-NLB-vs-GLB</link>
            <guid>https://velog.io/@jongc__c/AWS-Load-BalancerALB-vs-NLB-vs-GLB</guid>
            <pubDate>Tue, 27 Jan 2026 15:02:55 GMT</pubDate>
            <description><![CDATA[<h2 id="1-load-balancer-기본-개념">1. Load Balancer 기본 개념</h2>
<p>Load Balancer는 <strong>여러 서버로 트래픽을 분산시키는 중간 계층</strong>입니다. 사용자는 단일 DNS 엔드포인트를 통해 접근하며, 백엔드에 몇 대의 서버가 있는지 알 필요가 없습니다.</p>
<h2 id="2-load-balancer의-핵심-장점">2. Load Balancer의 핵심 장점</h2>
<h3 id="트래픽-분산-및-고가용성">트래픽 분산 및 고가용성</h3>
<ul>
<li><strong>부하 분산</strong>: 여러 인스턴스에 트래픽을 균등하게 분배</li>
<li><strong>장애 대응</strong>: 한 인스턴스가 다운되면 정상 인스턴스로만 트래픽 전달</li>
<li><strong>Health Check</strong>: 대상 인스턴스의 상태를 지속적으로 모니터링</li>
</ul>
<h3 id="보안-강화">보안 강화</h3>
<p><strong>중요한 보안 설정</strong>:</p>
<pre><code>EC2 Security Group 인바운드 규칙:
- Source: Load Balancer Security Group ID
- 오직 Load Balancer에서 오는 트래픽만 허용</code></pre><p>이 설정으로 EC2 인스턴스는 <strong>Load Balancer를 통해서만</strong> 접근 가능하게 됩니다.</p>
<h2 id="3-aws-load-balancer-3가지-타입">3. AWS Load Balancer 3가지 타입</h2>
<h3 id="application-load-balancer-alb">Application Load Balancer (ALB)</h3>
<p><strong>Layer 7 (Application Layer)</strong></p>
<ul>
<li><strong>프로토콜</strong>: HTTP, HTTPS, WebSocket</li>
<li><strong>특화 기능</strong>: 고급 라우팅, 콘텐츠 기반 라우팅</li>
<li><strong>사용 사례</strong>: 웹 애플리케이션, 마이크로서비스</li>
</ul>
<p><strong>고급 라우팅 기능</strong>:</p>
<pre><code>Host-based: api.example.com → API Target Group
Path-based: /images/* → Image Server Target Group  
Query-based: ?version=v2 → V2 Target Group
Header-based: User-Agent → Mobile Target Group</code></pre><h3 id="network-load-balancer-nlb">Network Load Balancer (NLB)</h3>
<p><strong>Layer 4 (Transport Layer)</strong></p>
<ul>
<li><strong>프로토콜</strong>: TCP, UDP, TLS (TCP 기반)</li>
<li><strong>성능</strong>: <strong>초고성능, 초저지연</strong> (Ultra-low latency)</li>
<li><strong>처리량</strong>: 초당 <strong>수백만 개의 요청</strong> 처리</li>
</ul>
<p><strong>핵심 특징</strong>:</p>
<pre><code>✅ AZ당 하나의 고정 IP (Static IP)
✅ Elastic IP 할당 가능
✅ 특정 IP 화이트리스팅에 최적
✅ 극한 성능이 필요한 애플리케이션용
❌ AWS Free Tier 미포함</code></pre><p><strong>Target Groups</strong>:</p>
<ol>
<li><strong>EC2 인스턴스</strong></li>
<li><strong>Private IP 주소</strong> (온프레미스 서버 연결 가능)</li>
<li><strong>Application Load Balancer</strong> (NLB + ALB 조합)</li>
</ol>
<p><strong>Health Check 프로토콜</strong>: TCP, HTTP, HTTPS</p>
<h3 id="gateway-load-balancer-glb">Gateway Load Balancer (GLB)</h3>
<p><strong>Layer 3 (Network Layer)</strong></p>
<ul>
<li><strong>특화 분야</strong>: 보안, 네트워크 분석</li>
<li><strong>주요 용도</strong>: <ul>
<li>침입 탐지/방지 시스템 (IDS/IPS)</li>
<li>방화벽 어플라이언스</li>
<li>딥 패킷 인스펙션 (DPI)</li>
</ul>
</li>
</ul>
<h2 id="4-listener-rules와-라우팅">4. Listener Rules와 라우팅</h2>
<h3 id="alb-listener-rules">ALB Listener Rules</h3>
<p><strong>기본 규칙</strong>: 모든 요청을 기본 Target Group으로 전달</p>
<p><strong>조건부 라우팅 예시</strong>:</p>
<pre><code class="language-json">{
  &quot;Rules&quot;: [
    {
      &quot;Condition&quot;: &quot;Host Header = api.example.com&quot;,
      &quot;Action&quot;: &quot;Forward to API Target Group&quot;
    },
    {
      &quot;Condition&quot;: &quot;Path Pattern = /admin/*&quot;,
      &quot;Action&quot;: &quot;Forward to Admin Target Group&quot;
    }
  ]
}</code></pre>
<h2 id="5-nlb--alb-조합-아키텍처">5. NLB + ALB 조합 아키텍처</h2>
<p><strong>사용 시나리오</strong>: 고정 IP + HTTP 라우팅 기능을 동시에 필요로 할 때</p>
<pre><code>Internet → NLB (Static IP) → ALB (HTTP Routing) → Target Groups</code></pre><p><strong>장점</strong>:</p>
<ul>
<li>NLB: 고정 IP, 초고성능</li>
<li>ALB: 세밀한 HTTP 라우팅, 콘텐츠 기반 분산</li>
</ul>
<h2 id="6-선택-가이드">6. 선택 가이드</h2>
<table>
<thead>
<tr>
<th>요구사항</th>
<th>추천 Load Balancer</th>
<th>이유</th>
</tr>
</thead>
<tbody><tr>
<td>웹 애플리케이션</td>
<td><strong>ALB</strong></td>
<td>HTTP/HTTPS 최적화</td>
</tr>
<tr>
<td>극한 성능 필요</td>
<td><strong>NLB</strong></td>
<td>Layer 4, 초저지연</td>
</tr>
<tr>
<td>고정 IP 필요</td>
<td><strong>NLB</strong></td>
<td>Static IP 지원</td>
</tr>
<tr>
<td>마이크로서비스</td>
<td><strong>ALB</strong></td>
<td>고급 라우팅</td>
</tr>
<tr>
<td>보안 어플라이언스</td>
<td><strong>GLB</strong></td>
<td>네트워크 분석 특화</td>
</tr>
<tr>
<td>온프레미스 연동</td>
<td><strong>NLB</strong></td>
<td>Private IP 타겟 지원</td>
</tr>
</tbody></table>
<h2 id="7-health-check-모범-사례">7. Health Check 모범 사례</h2>
<p><strong>기본 설정</strong>:</p>
<pre><code>Path: /health (단순 / 보다 권장)
Port: 80 또는 애플리케이션 포트
Protocol: HTTP/HTTPS</code></pre><p><strong>실무 팁</strong>: <code>/health</code> 엔드포인트에서 DB 연결 상태, 외부 API 연결 등을 포함한 종합적인 상태 체크를 구현하는 것이 좋습니다.</p>
<h2 id="💡-핵심-포인트">💡 핵심 포인트</h2>
<ul>
<li><strong>ALB</strong>: HTTP/HTTPS 웹 애플리케이션의 표준 선택</li>
<li><strong>NLB</strong>: 고성능 + 고정 IP가 필요한 경우 (Free Tier 미포함)</li>
<li><strong>GLB</strong>: 보안 솔루션 통합 시에만 사용</li>
<li><strong>보안</strong>: Security Group 간 참조로 EC2를 Load Balancer 뒤에 완전히 숨김</li>
<li><strong>Health Check</strong>: 단순한 응답보다는 애플리케이션 로직까지 검증하는 별도 엔드포인트 구성 권장</li>
</ul>
<hr>
<p><em>작성일: 2026-01-28</em>  </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ALB (Application Load Balancer -v2)]]></title>
            <link>https://velog.io/@jongc__c/ALB-Application-Load-Balancer-v2</link>
            <guid>https://velog.io/@jongc__c/ALB-Application-Load-Balancer-v2</guid>
            <pubDate>Sun, 25 Jan 2026 15:13:27 GMT</pubDate>
            <description><![CDATA[<h2 id="1-application-load-balancer-alb-개요">1. Application Load Balancer (ALB) 개요</h2>
<p>ALB는 <strong>Layer 7 (HTTP) 레벨</strong>에서 작동하는 로드 밸런서입니다.</p>
<p><strong>핵심 기능</strong>:</p>
<ul>
<li>여러 머신의 HTTP 애플리케이션에 대한 로드 밸런싱 (Target Groups)</li>
<li>동일 머신의 여러 애플리케이션에 대한 로드 밸런싱 (예: 컨테이너)</li>
<li>HTTP/2 및 WebSocket 지원</li>
<li>리다이렉트 지원 (예: HTTP → HTTPS)</li>
</ul>
<h2 id="2-alb-라우팅-기능">2. ALB 라우팅 기능</h2>
<p>ALB는 <strong>라우팅 테이블</strong>을 통해 다양한 Target Group으로 트래픽을 분산합니다.</p>
<h3 id="라우팅-방식">라우팅 방식</h3>
<p><strong>URL 경로 기반 라우팅</strong>:</p>
<ul>
<li><code>example.com/users</code> → User 서비스</li>
<li><code>example.com/posts</code> → Post 서비스</li>
</ul>
<p><strong>호스트명 기반 라우팅</strong>:</p>
<ul>
<li><code>one.example.com</code> → 첫 번째 서비스</li>
<li><code>other.example.com</code> → 두 번째 서비스</li>
</ul>
<p><strong>쿼리 스트링/헤더 기반 라우팅</strong>:</p>
<ul>
<li><code>example.com/user?id=123&amp;order=false</code></li>
<li>HTTP 헤더 값에 따른 라우팅</li>
</ul>
<h3 id="마이크로서비스-최적화">마이크로서비스 최적화</h3>
<ul>
<li><strong>마이크로서비스 &amp; 컨테이너 기반 애플리케이션</strong>에 최적 (Docker, Amazon ECS)</li>
<li><strong>포트 매핑 기능</strong>: ECS의 동적 포트로 리다이렉트</li>
<li><strong>비교</strong>: Classic Load Balancer는 애플리케이션마다 별도 필요</li>
</ul>
<h2 id="3-target-groups-대상-그룹">3. Target Groups (대상 그룹)</h2>
<p>ALB가 트래픽을 전달할 수 있는 <strong>4가지 Target Group 유형</strong>:</p>
<p><strong>EC2 인스턴스</strong>:</p>
<ul>
<li>Auto Scaling Group으로 관리 가능</li>
<li>HTTP 프로토콜 사용</li>
</ul>
<p><strong>ECS 태스크</strong>:</p>
<ul>
<li>ECS 자체에서 관리</li>
<li>HTTP 프로토콜 사용</li>
</ul>
<p><strong>Lambda 함수</strong>:</p>
<ul>
<li>HTTP 요청이 JSON 이벤트로 변환됨</li>
</ul>
<p><strong>IP 주소</strong>:</p>
<ul>
<li>반드시 <strong>사설 IP</strong>여야 함</li>
<li>온프레미스 서버 연결 시 사용</li>
</ul>
<h3 id="target-group-특징">Target Group 특징</h3>
<ul>
<li>ALB는 <strong>여러 Target Group으로 라우팅</strong> 가능</li>
<li><strong>Health Check는 Target Group 레벨</strong>에서 수행</li>
</ul>
<h2 id="4-실제-라우팅-예시">4. 실제 라우팅 예시</h2>
<h3 id="마이크로서비스-라우팅">마이크로서비스 라우팅</h3>
<pre><code>ALB → /user 경로 → User 서비스 Target Group (EC2)
    → /search 경로 → Search 서비스 Target Group (EC2)</code></pre><h3 id="플랫폼별-라우팅">플랫폼별 라우팅</h3>
<pre><code>ALB → ?Platform=Mobile → 모바일 Target Group (AWS EC2)
    → ?Platform=Desktop → 데스크톱 Target Group (온프레미스)</code></pre><h2 id="5-alb-주요-특징">5. ALB 주요 특징</h2>
<h3 id="고정-호스트명">고정 호스트명</h3>
<ul>
<li><strong>형식</strong>: <code>XXX.region.elb.amazonaws.com</code></li>
<li>애플리케이션에서 사용할 고정된 DNS 엔드포인트 제공</li>
</ul>
<h3 id="클라이언트-ip-처리">클라이언트 IP 처리</h3>
<p>ALB는 <strong>연결 종료(Connection Termination)</strong>를 수행합니다.</p>
<p><strong>문제</strong>: 애플리케이션 서버는 클라이언트의 실제 IP를 직접 볼 수 없음</p>
<ul>
<li>서버가 보는 IP: 로드 밸런서의 사설 IP</li>
</ul>
<p><strong>해결</strong>: HTTP 헤더를 통한 클라이언트 정보 전달</p>
<ul>
<li><strong>X-Forwarded-For</strong>: 클라이언트의 실제 IP</li>
<li><strong>X-Forwarded-Port</strong>: 클라이언트가 사용한 포트</li>
<li><strong>X-Forwarded-Proto</strong>: 사용된 프로토콜 (HTTP/HTTPS)</li>
</ul>
<h3 id="트래픽-흐름">트래픽 흐름</h3>
<pre><code>클라이언트 (12.34.56.78) 
    ↓ 
ALB (연결 종료) 
    ↓ 
EC2 인스턴스 (ALB 사설 IP로 수신)
    ↓
X-Forwarded-For 헤더로 실제 클라이언트 IP 확인</code></pre><h2 id="💡-핵심-포인트">💡 핵심 포인트</h2>
<ul>
<li>ALB는 <strong>Layer 7</strong>에서 작동하여 HTTP 기반의 지능적 라우팅 제공</li>
<li><strong>마이크로서비스 아키텍처</strong>에 최적화된 설계</li>
<li><strong>다양한 라우팅 규칙</strong>으로 복잡한 애플리케이션 구조 지원</li>
<li><strong>Target Group 레벨</strong>에서 Health Check 및 관리 수행</li>
<li>클라이언트 정보는 <strong>HTTP 헤더</strong>를 통해 애플리케이션에 전달</li>
</ul>
<hr>
<p><em>작성일: 2026-01-26</em><br>*주제: AWS ALB *</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ELB (Elastic Load Balancer)]]></title>
            <link>https://velog.io/@jongc__c/ELB-Elastic-Load-Balancer</link>
            <guid>https://velog.io/@jongc__c/ELB-Elastic-Load-Balancer</guid>
            <pubDate>Sun, 25 Jan 2026 14:49:16 GMT</pubDate>
            <description><![CDATA[<h2 id="1-로드-밸런싱load-balancing이란">1. 로드 밸런싱(Load Balancing)이란?</h2>
<p>로드 밸런서는 <strong>트래픽을 여러 대의 다운스트림 서버(EC2 인스턴스)로 전달하는 서버</strong>입니다.</p>
<p><strong>핵심 개념</strong>: 사용자는 로드 밸런서의 <strong>단일 접점(DNS)</strong>을 통해 애플리케이션에 접근하며, 내부에 몇 대의 서버가 있는지 알 필요가 없습니다.</p>
<h2 id="2-로드-밸런서를-사용하는-이유">2. 로드 밸런서를 사용하는 이유</h2>
<ul>
<li><strong>부하 분산</strong>: 여러 다운스트림 인스턴스에 부하를 분산</li>
<li><strong>단일 접점 제공</strong>: 애플리케이션에 대한 단일 DNS 접점 노출</li>
<li><strong>장애 처리</strong>: 다운스트림 인스턴스의 장애를 원활하게 처리</li>
<li><strong>Health Check</strong>: 인스턴스에 대한 정기적인 상태 확인 수행</li>
<li><strong>SSL Termination</strong>: 웹사이트에 대한 HTTPS SSL 종료 제공</li>
<li><strong>쿠키 고정성</strong>: 쿠키를 통한 Stickiness 강제 적용</li>
<li><strong>고가용성</strong>: 여러 가용 영역에 걸친 고가용성 제공</li>
<li><strong>트래픽 분리</strong>: 공용 트래픽과 사설 트래픽 분리</li>
</ul>
<h2 id="3-elastic-load-balancer를-사용하는-이유">3. Elastic Load Balancer를 사용하는 이유</h2>
<p>ELB는 <strong>AWS 관리형 로드 밸런서</strong>입니다.</p>
<p><strong>AWS 보장사항</strong>:</p>
<ul>
<li>AWS가 작동을 보장</li>
<li>업그레이드, 유지보수, 고가용성을 AWS가 담당</li>
<li>제한된 구성 옵션만 제공 (간편함)</li>
</ul>
<p><strong>비용 효율성</strong>: 다른 AWS 서비스와의 통합으로 설정 비용 절감</p>
<ul>
<li>EC2, Auto Scaling Groups, Amazon ECS</li>
<li>AWS Certificate Manager (ACM), CloudWatch</li>
<li>Route 53, AWS WAF, AWS Global Accelerator</li>
</ul>
<h2 id="4-health-checks-상태-확인">4. Health Checks (상태 확인)</h2>
<p>Health Check는 <strong>로드 밸런서에게 중요한 기능</strong>입니다.</p>
<p><strong>목적</strong>: 로드 밸런서가 트래픽을 전달하는 인스턴스가 요청에 응답할 수 있는지 확인</p>
<p><strong>작동 방식</strong>:</p>
<ul>
<li>특정 포트와 경로에서 상태 확인 수행 (일반적으로 <code>/health</code>)</li>
<li>응답이 200 (OK)이 아니면 인스턴스를 Unhealthy로 판단</li>
<li><strong>Unhealthy 인스턴스에는 트래픽을 보내지 않음</strong></li>
</ul>
<h2 id="5-aws-로드-밸런서의-4가지-종류">5. AWS 로드 밸런서의 4가지 종류</h2>
<p>AWS는 <strong>4가지 관리형 로드 밸런서</strong>를 제공합니다.</p>
<p><strong>Classic Load Balancer (CLB)</strong> - v1 (구세대):</p>
<ul>
<li>HTTP, HTTPS, TCP, SSL (secure TCP) 지원</li>
</ul>
<p><strong>Application Load Balancer (ALB)</strong> - v2 (신세대):</p>
<ul>
<li>HTTP, HTTPS, WebSocket 지원</li>
<li>Layer 7에서 작동</li>
</ul>
<p><strong>Network Load Balancer (NLB)</strong> - v2 (신세대):</p>
<ul>
<li>TCP, TLS (secure TCP), UDP 지원</li>
<li>Layer 4에서 작동, 초고성능</li>
</ul>
<p><strong>Gateway Load Balancer (GWLB)</strong>:</p>
<ul>
<li>Layer 3 (Network layer) - IP Protocol에서 작동</li>
<li>방화벽, IDS/IPS 등 네트워크 가상 어플라이언스용</li>
</ul>
<p><strong>권장사항</strong>: 더 많은 기능을 제공하는 <strong>신세대 로드 밸런서 사용 권장</strong></p>
<p><strong>배치 옵션</strong>: 모든 로드 밸런서는 Internal (private) 또는 External (public)로 설정 가능</p>
<h2 id="6-로드-밸런서-보안-그룹-설정">6. 로드 밸런서 보안 그룹 설정</h2>
<p>로드 밸런서 보안을 위한 <strong>보안 그룹 간 참조</strong> 방식이 핵심입니다.</p>
<p><strong>ELB 보안 그룹</strong>:</p>
<ul>
<li>포트: 80 (HTTP), 443 (HTTPS)</li>
<li>소스: 0.0.0.0/0 (어디서든 접근 허용)</li>
<li>사용자가 어디서든 로드 밸런서에 접근 가능</li>
</ul>
<p><strong>EC2 보안 그룹</strong>:</p>
<ul>
<li>포트: 80 (HTTP)</li>
<li>소스: <strong>로드 밸런서의 보안 그룹 ID</strong> (IP 범위가 아님)</li>
<li>EC2 인스턴스를 로드 밸런서의 보안 그룹에 연결</li>
</ul>
<p><strong>보안 효과</strong>: EC2 인스턴스는 <strong>로드 밸런서를 통해서만</strong> 트래픽을 받을 수 있어 강화된 보안 메커니즘을 제공합니다.</p>
<h2 id="💡-핵심-포인트">💡 핵심 포인트</h2>
<ul>
<li>ELB는 관리형 서비스라 AWS가 알아서 확장(Scaling)과 유지보수를 다 해줌</li>
<li>Health Check 경로를 단순히 /로 두기보다, 애플리케이션의 로직이나 DB 연결 상태까지 체크하는 별도의 /health 경로를 만드는 게 실무에서 더 확실함</li>
<li>NLB는 정적 IP(Static IP)를 가질 수 있다는 점이 ALB와의 큰 차이. 화이트리스트 관리가 필요한 환경이라면 NLB를 고려</li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[고가용성 및 스케일링]]></title>
            <link>https://velog.io/@jongc__c/%EA%B3%A0%EA%B0%80%EC%9A%A9%EC%84%B1-%EB%B0%8F-%EC%8A%A4%EC%BC%80%EC%9D%BC%EB%A7%81</link>
            <guid>https://velog.io/@jongc__c/%EA%B3%A0%EA%B0%80%EC%9A%A9%EC%84%B1-%EB%B0%8F-%EC%8A%A4%EC%BC%80%EC%9D%BC%EB%A7%81</guid>
            <pubDate>Sun, 25 Jan 2026 14:19:19 GMT</pubDate>
            <description><![CDATA[<h2 id="1-확장성-scalability">1. 확장성 (Scalability)</h2>
<p>확장성은 애플리케이션이나 시스템이 <strong>증가하는 부하(Load)에 맞춰 적응하고 처리할 수 있는 능력</strong>을 의미합니다.</p>
<h3 id="수직적-확장-vertical-scaling">수직적 확장 (Vertical Scaling)</h3>
<ul>
<li><strong>정의</strong>: 인스턴스의 <strong>사양(Size)</strong>을 향상시키는 방식</li>
<li><strong>별칭</strong>: Scale Up (확장) / Scale Down (축소)</li>
<li><strong>예시</strong>: <code>t2.micro</code> → <code>t2.large</code> → <code>m5.xlarge</code>로 업그레이드</li>
</ul>
<pre><code class="language-bash"># AWS CLI로 인스턴스 타입 변경 예시
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --instance-type m5.large</code></pre>
<p><strong>적용 사례</strong>:</p>
<ul>
<li>Amazon RDS (관계형 데이터베이스)</li>
<li>Amazon ElastiCache (인메모리 캐시)</li>
<li>단일 노드 애플리케이션</li>
</ul>
<p><strong>한계점</strong>:</p>
<ul>
<li>하드웨어의 물리적 제약 (현재 AWS 최대 사양: <code>u-24tb1.112xlarge</code> - 24TB RAM)</li>
<li>단일 장애점(Single Point of Failure) 위험</li>
</ul>
<h3 id="수평적-확장-horizontal-scaling--elasticity">수평적 확장 (Horizontal Scaling = Elasticity)</h3>
<ul>
<li><strong>정의</strong>: 인스턴스의 <strong>개수(Number)</strong>를 증가시키는 방식</li>
<li><strong>별칭</strong>: Scale Out (확장) / Scale In (축소)</li>
<li><strong>예시</strong>: EC2 인스턴스 1대 → 10대로 확장</li>
</ul>
<pre><code class="language-yaml"># Auto Scaling Group 설정 예시
AutoScalingGroup:
  MinSize: 2
  MaxSize: 10
  DesiredCapacity: 3
  TargetGroupARNs:
    - !Ref ApplicationLoadBalancer</code></pre>
<p><strong>핵심 AWS 서비스</strong>:</p>
<ul>
<li><strong>Auto Scaling Groups (ASG)</strong>: 자동 인스턴스 관리</li>
<li><strong>Elastic Load Balancer (ELB)</strong>: 트래픽 분산</li>
<li><strong>Amazon ECS/EKS</strong>: 컨테이너 오케스트레이션</li>
</ul>
<h2 id="2-고가용성-high-availability">2. 고가용성 (High Availability)</h2>
<p>고가용성은 <strong>시스템 장애 발생 시에도 서비스 중단 없이 운영을 지속</strong>할 수 있는 능력입니다.</p>
<h3 id="핵심-원칙-multi-az-배치">핵심 원칙: Multi-AZ 배치</h3>
<ul>
<li><strong>최소 2개 이상의 가용 영역(Availability Zone)</strong>에 리소스 분산</li>
<li><strong>목표</strong>: 데이터센터 전체 장애 상황에서도 서비스 생존</li>
</ul>
<h3 id="구현-방식">구현 방식</h3>
<p><strong>1. Passive HA (수동 고가용성)</strong></p>
<pre><code class="language-bash"># RDS Multi-AZ 설정
aws rds create-db-instance \
    --db-instance-identifier mydb \
    --multi-az \
    --availability-zone us-east-1a</code></pre>
<ul>
<li>평상시: Primary에서만 서비스, Standby는 대기</li>
<li>장애시: 자동 Failover (RDS Multi-AZ, EFS 등)</li>
</ul>
<p><strong>2. Active HA (능동 고가용성)</strong></p>
<pre><code class="language-yaml"># 다중 AZ에 걸친 ASG 설정
AutoScalingGroup:
  VPCZoneIdentifier:
    - subnet-12345 # us-east-1a
    - subnet-67890 # us-east-1b
    - subnet-abcde # us-east-1c</code></pre>
<ul>
<li>모든 AZ의 인스턴스가 동시에 트래픽 처리</li>
<li>Load Balancer가 트래픽 분산<h2 id="3-비교-요약표">3. 비교 요약표</h2>
</li>
</ul>
<table>
<thead>
<tr>
<th>구분</th>
<th>확장성 (Scalability)</th>
<th>고가용성 (High Availability)</th>
</tr>
</thead>
<tbody><tr>
<td><strong>목적</strong></td>
<td>증가하는 부하 처리</td>
<td>장애 상황에서 서비스 지속</td>
</tr>
<tr>
<td><strong>방법</strong></td>
<td>Scale Up/Out</td>
<td>Multi-AZ 배치</td>
</tr>
<tr>
<td><strong>핵심 서비스</strong></td>
<td>ASG, ELB</td>
<td>Multi-AZ RDS, ELB</td>
</tr>
<tr>
<td><strong>측정 지표</strong></td>
<td>RPS, Latency</td>
<td>Uptime, MTTR</td>
</tr>
</tbody></table>
<p><strong>함정 주의</strong>: 단일 AZ에서 인스턴스를 아무리 많이 늘려도 고가용성은 확보되지 않습니다. 반드시 <strong>Multi-AZ</strong>가 핵심입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Amazon EFS(Elastic File System)]]></title>
            <link>https://velog.io/@jongc__c/Amazon-EFSElastic-File-System</link>
            <guid>https://velog.io/@jongc__c/Amazon-EFSElastic-File-System</guid>
            <pubDate>Thu, 22 Jan 2026 15:28:40 GMT</pubDate>
            <description><![CDATA[<h2 id="1-efs-개요">1. EFS 개요</h2>
<h3 id="efs란">EFS란?</h3>
<p>Amazon EFS는 <strong>관리형 NFS(Network File System)</strong>로, 여러 EC2 인스턴스에서 동시에 마운트할 수 있는 공유 파일 시스템입니다.</p>
<h3 id="핵심-특징">핵심 특징</h3>
<ul>
<li><strong>Multi-AZ 지원</strong>: 여러 가용영역의 EC2에서 동시 접근</li>
<li><strong>고가용성 및 확장성</strong>: 자동 확장, 페타바이트 규모까지</li>
<li><strong>Pay-per-use</strong>: 사용한 만큼만 과금</li>
<li><strong>비용</strong>: EBS gp2 대비 약 3배 비싸지만 공유 기능 제공</li>
</ul>
<h3 id="실제-사용-예시">실제 사용 예시</h3>
<pre><code>Multi-AZ EFS 구성:
┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   us-east-1a │    │   us-east-1b │    │   us-east-1c │
│             │    │             │    │             │
│ ┌─────────┐ │    │ ┌─────────┐ │    │ ┌─────────┐ │
│ │  EC2-1  │ │    │ │  EC2-2  │ │    │ │  EC2-3  │ │
│ └─────────┘ │    │ └─────────┘ │    │ └─────────┘ │
└─────────────┘    └─────────────┘    └─────────────┘
       │                   │                   │
       └───────────────────┼───────────────────┘
                           │
                  ┌─────────────────┐
                  │   Amazon EFS    │
                  │ (공유 파일시스템)  │
                  └─────────────────┘</code></pre><h2 id="2-efs-기술-사양">2. EFS 기술 사양</h2>
<h3 id="프로토콜-및-호환성">프로토콜 및 호환성</h3>
<ul>
<li><strong>프로토콜</strong>: NFSv4.1</li>
<li><strong>보안</strong>: Security Group으로 접근 제어</li>
<li><strong>OS 호환성</strong>: Linux 기반 AMI만 지원 (Windows 불가)</li>
<li><strong>암호화</strong>: KMS를 통한 저장 데이터 암호화</li>
<li><strong>파일시스템</strong>: POSIX 호환 (~Linux 표준)</li>
</ul>
<h3 id="확장성">확장성</h3>
<ul>
<li><strong>동시 클라이언트</strong>: 수천 개의 NFS 클라이언트</li>
<li><strong>처리량</strong>: 10GB/s 이상</li>
<li><strong>용량</strong>: 페타바이트 규모까지 자동 확장</li>
<li><strong>용량 계획</strong>: 불필요 (자동 확장)</li>
</ul>
<h2 id="3-성능-모드-performance-mode">3. 성능 모드 (Performance Mode)</h2>
<p>EFS 생성 시 설정하며, 이후 변경 불가능합니다.</p>
<h3 id="general-purpose-기본값">General Purpose (기본값)</h3>
<p><strong>특징</strong>:</p>
<ul>
<li>지연시간에 민감한 워크로드에 최적화</li>
<li>낮은 지연시간 제공</li>
</ul>
<p><strong>사용 사례</strong>:</p>
<ul>
<li>웹 서버</li>
<li>CMS (Content Management System)</li>
<li>일반적인 파일 공유</li>
</ul>
<h3 id="max-io">Max I/O</h3>
<p><strong>특징</strong>:</p>
<ul>
<li>높은 지연시간이지만 더 높은 처리량과 병렬성</li>
<li>대규모 병렬 처리에 적합</li>
</ul>
<p><strong>사용 사례</strong>:</p>
<ul>
<li>빅데이터 분석</li>
<li>미디어 처리</li>
<li>고도로 병렬화된 워크로드</li>
</ul>
<h2 id="4-처리량-모드-throughput-mode">4. 처리량 모드 (Throughput Mode)</h2>
<h3 id="bursting-기본값">Bursting (기본값)</h3>
<pre><code>처리량 계산:
기본 처리량 = 저장 용량(TB) × 50 MiB/s
버스트 처리량 = 최대 100 MiB/s

예시:
1TB 저장 → 50 MiB/s 기본 + 100 MiB/s 버스트
2TB 저장 → 100 MiB/s 기본 + 100 MiB/s 버스트</code></pre><h3 id="provisioned">Provisioned</h3>
<ul>
<li><strong>특징</strong>: 저장 용량과 무관하게 처리량 설정</li>
<li><strong>예시</strong>: 1TB 저장소에 1GiB/s 처리량 설정 가능</li>
<li><strong>용도</strong>: 일정한 고성능이 필요한 경우</li>
</ul>
<h3 id="elastic-권장">Elastic (권장)</h3>
<ul>
<li><strong>자동 조정</strong>: 워크로드에 따라 처리량 자동 확장/축소</li>
<li><strong>최대 성능</strong>: 읽기 3GiB/s, 쓰기 1GiB/s</li>
<li><strong>용도</strong>: 예측 불가능한 워크로드</li>
</ul>
<h2 id="5-스토리지-클래스">5. 스토리지 클래스</h2>
<h3 id="계층별-특징">계층별 특징</h3>
<table>
<thead>
<tr>
<th>스토리지 클래스</th>
<th>용도</th>
<th>비용</th>
<th>검색 비용</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Standard</strong></td>
<td>자주 액세스하는 파일</td>
<td>높음</td>
<td>없음</td>
</tr>
<tr>
<td><strong>Infrequent Access (IA)</strong></td>
<td>가끔 액세스하는 파일</td>
<td>중간</td>
<td>있음</td>
</tr>
<tr>
<td><strong>Archive</strong></td>
<td>연간 몇 번만 액세스</td>
<td>낮음 (50% 절약)</td>
<td>있음</td>
</tr>
</tbody></table>
<h3 id="라이프사이클-정책">라이프사이클 정책</h3>
<pre><code>자동 계층 이동 설정:
Standard → (N일 후) → IA → (N일 후) → Archive

예시 정책:
- 30일 후 IA로 이동
- 90일 후 Archive로 이동</code></pre><h2 id="6-가용성-및-내구성">6. 가용성 및 내구성</h2>
<h3 id="standard-프로덕션-권장">Standard (프로덕션 권장)</h3>
<ul>
<li><strong>Multi-AZ</strong>: 여러 가용영역에 복제</li>
<li><strong>고가용성</strong>: 99.999999999% (11 9&#39;s) 내구성</li>
<li><strong>용도</strong>: 프로덕션 환경</li>
</ul>
<h3 id="one-zone-개발테스트-권장">One Zone (개발/테스트 권장)</h3>
<ul>
<li><strong>Single AZ</strong>: 하나의 가용영역에만 저장</li>
<li><strong>비용 절약</strong>: Standard 대비 90% 이상 절약</li>
<li><strong>백업</strong>: 기본적으로 활성화</li>
<li><strong>호환성</strong>: IA와 함께 사용 가능 (EFS One Zone-IA)</li>
</ul>
<h2 id="7-efs-vs-ebs-상세-비교">7. EFS vs EBS 상세 비교</h2>
<h3 id="ebs-elastic-block-store">EBS (Elastic Block Store)</h3>
<pre><code>연결 방식: 1:1 (인스턴스당 하나의 볼륨)
예외: Multi-Attach (io1/io2만 가능)

제약사항:
- AZ 레벨에서 잠김
- 다른 AZ로 이동 시 스냅샷 필요
- 백업 시 I/O 사용 (트래픽 많을 때 주의)

성능:
- gp2: 디스크 크기에 따라 IOPS 증가
- gp3/io1: IOPS 독립적으로 증가 가능

종료 시 동작:
- Root 볼륨: 기본적으로 함께 삭제
- 추가 볼륨: 보존 (설정 변경 가능)</code></pre><h3 id="efs-elastic-file-system">EFS (Elastic File System)</h3>
<pre><code>연결 방식: 1:N (수백 개 인스턴스 동시 마운트)

장점:
- Multi-AZ 자동 지원
- 웹사이트 파일 공유 (WordPress 등)
- Linux 전용 (POSIX 호환)

비용:
- EBS보다 높은 가격
- Storage Tier로 비용 최적화 가능</code></pre><h2 id="8-주요-사용-사례">8. 주요 사용 사례</h2>
<h3 id="content-management">Content Management</h3>
<pre><code>WordPress 멀티 인스턴스:
┌─────────┐    ┌─────────┐    ┌─────────┐
│WordPress│    │WordPress│    │WordPress│
│ Server 1│    │ Server 2│    │ Server 3│
└─────────┘    └─────────┘    └─────────┘
     │              │              │
     └──────────────┼──────────────┘
                    │
            ┌───────────────┐
            │ EFS (공유 파일) │
            │ - 이미지       │
            │ - 테마         │
            │ - 플러그인     │
            └───────────────┘</code></pre><h3 id="데이터-공유">데이터 공유</h3>
<ul>
<li><strong>로그 집계</strong>: 여러 서버의 로그를 중앙 집중화</li>
<li><strong>백업 저장소</strong>: 공통 백업 위치</li>
<li><strong>개발 환경</strong>: 팀 간 코드 및 데이터 공유</li>
</ul>
<h3 id="웹-서빙">웹 서빙</h3>
<ul>
<li><strong>정적 콘텐츠</strong>: 이미지, CSS, JavaScript 파일</li>
<li><strong>미디어 파일</strong>: 동영상, 오디오 파일 스트리밍</li>
</ul>
<h2 id="9-스토리지-선택-가이드">9. 스토리지 선택 가이드</h2>
<h3 id="efs-vs-ebs-vs-instance-store">EFS vs EBS vs Instance Store</h3>
<table>
<thead>
<tr>
<th>기준</th>
<th>EFS</th>
<th>EBS</th>
<th>Instance Store</th>
</tr>
</thead>
<tbody><tr>
<td><strong>공유</strong></td>
<td>✅ 다중 인스턴스</td>
<td>❌ 단일 인스턴스</td>
<td>❌ 단일 인스턴스</td>
</tr>
<tr>
<td><strong>지속성</strong></td>
<td>✅ 영구</td>
<td>✅ 영구</td>
<td>❌ 임시</td>
</tr>
<tr>
<td><strong>성능</strong></td>
<td>중간</td>
<td>높음</td>
<td>매우 높음</td>
</tr>
<tr>
<td><strong>비용</strong></td>
<td>높음</td>
<td>중간</td>
<td>낮음 (인스턴스 포함)</td>
</tr>
<tr>
<td><strong>AZ 제약</strong></td>
<td>❌ Multi-AZ</td>
<td>✅ Single AZ</td>
<td>✅ Single AZ</td>
</tr>
<tr>
<td><strong>OS 지원</strong></td>
<td>Linux만</td>
<td>모든 OS</td>
<td>모든 OS</td>
</tr>
</tbody></table>
<h3 id="선택-기준">선택 기준</h3>
<pre><code>파일 공유 필요 → EFS
고성능 블록 스토리지 → EBS
임시 고성능 스토리지 → Instance Store</code></pre><h2 id="10-실무-활용-전략">10. 실무 활용 전략</h2>
<h3 id="비용-최적화">비용 최적화</h3>
<ol>
<li><strong>적절한 스토리지 클래스 선택</strong></li>
<li><strong>라이프사이클 정책 설정</strong></li>
<li><strong>One Zone 사용</strong> (개발/테스트 환경)</li>
<li><strong>사용량 모니터링</strong> 및 정기적인 정리</li>
</ol>
<h3 id="성능-최적화">성능 최적화</h3>
<ol>
<li><strong>적절한 성능 모드 선택</strong></li>
<li><strong>Elastic 처리량 모드 사용</strong></li>
<li><strong>Security Group 최적화</strong></li>
<li><strong>네트워크 지연시간 고려</strong></li>
</ol>
<h3 id="보안-강화">보안 강화</h3>
<ol>
<li><strong>KMS 암호화 활성화</strong></li>
<li><strong>Security Group 세밀한 설정</strong></li>
<li><strong>IAM 정책을 통한 접근 제어</strong></li>
<li><strong>VPC 엔드포인트 사용</strong></li>
</ol>
<p>이러한 EFS의 특징과 활용 방법을 이해하면 AWS에서 확장 가능하고 효율적인 공유 파일 시스템을 구축할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[EC2 Instance Storage - EBS]]></title>
            <link>https://velog.io/@jongc__c/EC2-Instance-Storage-EBS</link>
            <guid>https://velog.io/@jongc__c/EC2-Instance-Storage-EBS</guid>
            <pubDate>Wed, 21 Jan 2026 14:43:32 GMT</pubDate>
            <description><![CDATA[<h2 id="1-ebs-elastic-block-store-개요">1. EBS (Elastic Block Store) 개요</h2>
<h3 id="ebs란">EBS란?</h3>
<p>EBS는 EC2 인스턴스에 연결할 수 있는 <strong>네트워크 드라이브</strong>입니다.</p>
<p><strong>핵심 특징</strong>:</p>
<ul>
<li>인스턴스 종료 후에도 데이터 지속성 보장</li>
<li>하나의 EBS는 하나의 EC2에만 마운트 가능 (CCP 레벨 기준)</li>
<li>특정 가용영역(AZ)에 종속</li>
<li><strong>비유</strong>: &quot;네트워크 USB 스틱&quot;</li>
</ul>
<h3 id="💡-free-tier-혜택">💡 Free Tier 혜택</h3>
<p>월 30GB의 General Purpose SSD 또는 Magnetic 스토리지 무료 제공</p>
<h2 id="2-ebs-핵심-특성">2. EBS 핵심 특성</h2>
<h3 id="네트워크-드라이브의-특징">네트워크 드라이브의 특징</h3>
<pre><code>EC2 Instance ←── 네트워크 ──→ EBS Volume
     │                           │
   물리적 서버                네트워크 스토리지</code></pre><p><strong>장점</strong>:</p>
<ul>
<li>빠른 분리/연결 가능</li>
<li>다른 인스턴스로 이동 가능</li>
</ul>
<p><strong>단점</strong>:</p>
<ul>
<li>네트워크 지연시간 존재</li>
</ul>
<h3 id="가용영역-제약">가용영역 제약</h3>
<pre><code>❌ 불가능한 연결
us-east-1a의 EBS → us-east-1b의 EC2

✅ 해결 방법
EBS 스냅샷 생성 → 다른 AZ로 복사 → 새 볼륨 생성</code></pre><h3 id="용량-관리">용량 관리</h3>
<ul>
<li><strong>프로비저닝 방식</strong>: 미리 용량(GB)과 IOPS 설정</li>
<li><strong>과금</strong>: 실제 사용량이 아닌 프로비저닝된 용량 기준</li>
<li><strong>확장</strong>: 운영 중에도 용량 증설 가능</li>
</ul>
<h2 id="3-delete-on-termination-속성">3. Delete on Termination 속성</h2>
<p>EC2 인스턴스 종료 시 EBS 볼륨의 동작을 제어하는 설정:</p>
<table>
<thead>
<tr>
<th>볼륨 타입</th>
<th>기본 설정</th>
<th>동작</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Root 볼륨</strong></td>
<td>활성화</td>
<td>인스턴스 종료 시 함께 삭제</td>
</tr>
<tr>
<td><strong>추가 볼륨</strong></td>
<td>비활성화</td>
<td>인스턴스 종료 후에도 보존</td>
</tr>
</tbody></table>
<p><strong>실무 팁</strong>: 중요한 데이터가 있는 Root 볼륨은 비활성화로 설정하여 실수로 인한 데이터 손실 방지</p>
<h2 id="4-ebs-스냅샷-snapshots">4. EBS 스냅샷 (Snapshots)</h2>
<h3 id="스냅샷이란">스냅샷이란?</h3>
<p>특정 시점의 EBS 볼륨 백업본</p>
<pre><code>EBS Volume → Snapshot → 다른 AZ/Region으로 복사 가능</code></pre><p><strong>모범 사례</strong>:</p>
<ul>
<li>스냅샷 생성 시 볼륨 분리 권장 (필수는 아님)</li>
<li>정기적인 백업 스케줄 설정</li>
</ul>
<h2 id="5-고급-스냅샷-기능">5. 고급 스냅샷 기능</h2>
<h3 id="51-ebs-snapshot-archive">5.1 EBS Snapshot Archive</h3>
<p><strong>목적</strong>: 비용 절약 (75% 저렴)</p>
<pre><code>일반 스냅샷 → Archive Tier 이동
복원 시간: 24~72시간</code></pre><p><strong>사용 사례</strong>: 장기 보관용 백업, 규정 준수용 데이터</p>
<h3 id="52-recycle-bin">5.2 Recycle Bin</h3>
<p><strong>목적</strong>: 실수로 삭제한 스냅샷 복구</p>
<p><strong>설정 옵션</strong>:</p>
<ul>
<li>보존 기간: 1일 ~ 1년</li>
<li>자동 복구 규칙 설정 가능</li>
</ul>
<pre><code>스냅샷 삭제 → Recycle Bin 이동 → 보존 기간 내 복구 가능</code></pre><h3 id="53-fast-snapshot-restore-fsr">5.3 Fast Snapshot Restore (FSR)</h3>
<p><strong>목적</strong>: 스냅샷에서 복원한 볼륨의 초기 성능 저하 방지</p>
<h4 id="fsr의-동작-원리">FSR의 동작 원리</h4>
<pre><code>일반 복원 과정:
스냅샷 → 새 볼륨 생성 → 첫 액세스 시 지연 발생

FSR 적용 시:
스냅샷 → 블록 미리 로딩 → 즉시 최적 성능</code></pre><p><strong>핵심 개념</strong>:</p>
<ul>
<li>❌ &quot;빈 디스크를 채우는 작업&quot;이 아님</li>
<li>✅ &quot;스냅샷 블록을 EBS로 미리 로딩하는 작업&quot;</li>
</ul>
<p><strong>특징</strong>:</p>
<ul>
<li>비용이 높음</li>
<li>즉시 최적 성능 필요한 경우에만 사용</li>
<li>미션 크리티컬 애플리케이션에 적합</li>
</ul>
<h2 id="6-실무-활용-가이드">6. 실무 활용 가이드</h2>
<h3 id="ebs-설계-원칙">EBS 설계 원칙</h3>
<ol>
<li><strong>데이터 중요도에 따른 Delete on Termination 설정</strong></li>
<li><strong>정기적인 스냅샷 백업 전략 수립</strong></li>
<li><strong>비용 최적화를 위한 Archive 활용</strong></li>
<li><strong>성능이 중요한 워크로드에는 FSR 고려</strong></li>
</ol>
<h3 id="비용-최적화-전략">비용 최적화 전략</h3>
<pre><code>단계별 스토리지 관리:
활성 데이터 → EBS Volume
백업 데이터 → Snapshot
장기 보관 → Archive Tier</code></pre><hr>
<h1 id="ebs-volume-types--고급-기능">EBS Volume Types &amp; 고급 기능</h1>
<h2 id="1-ebs-volume-types-개요">1. EBS Volume Types 개요</h2>
<p>EBS는 <strong>6가지 볼륨 타입</strong>을 제공하며, 각각 다른 성능과 비용 특성을 가집니다.</p>
<h3 id="볼륨-타입-분류">볼륨 타입 분류</h3>
<pre><code>SSD 기반 (부팅 가능):
├── gp2/gp3: 범용 SSD
└── io1/io2: 프로비저닝된 IOPS SSD

HDD 기반 (부팅 불가):
├── st1: 처리량 최적화 HDD
└── sc1: 콜드 HDD</code></pre><p><strong>핵심 특성 지표</strong>:</p>
<ul>
<li><strong>Size</strong>: 볼륨 크기 (GiB/TiB)</li>
<li><strong>Throughput</strong>: 처리량 (MiB/s)</li>
<li><strong>IOPS</strong>: 초당 입출력 작업 수</li>
</ul>
<h2 id="2-general-purpose-ssd-gp2gp3">2. General Purpose SSD (gp2/gp3)</h2>
<h3 id="특징-및-용도">특징 및 용도</h3>
<ul>
<li><strong>비용 효율적</strong> 스토리지</li>
<li><strong>낮은 지연시간</strong></li>
<li>다양한 워크로드에 적합</li>
</ul>
<p><strong>사용 사례</strong>:</p>
<ul>
<li>시스템 부트 볼륨</li>
<li>가상 데스크톱</li>
<li>개발/테스트 환경</li>
</ul>
<h3 id="gp3-vs-gp2-비교">gp3 vs gp2 비교</h3>
<table>
<thead>
<tr>
<th>구분</th>
<th>gp3</th>
<th>gp2</th>
</tr>
</thead>
<tbody><tr>
<td><strong>용량</strong></td>
<td>1 GiB - 16 TiB</td>
<td>1 GiB - 16 TiB</td>
</tr>
<tr>
<td><strong>기본 IOPS</strong></td>
<td>3,000 IOPS</td>
<td>볼륨 크기에 따라 결정</td>
</tr>
<tr>
<td><strong>최대 IOPS</strong></td>
<td>16,000 IOPS</td>
<td>16,000 IOPS</td>
</tr>
<tr>
<td><strong>기본 처리량</strong></td>
<td>125 MiB/s</td>
<td>볼륨 크기에 따라 결정</td>
</tr>
<tr>
<td><strong>최대 처리량</strong></td>
<td>1,000 MiB/s</td>
<td>250 MiB/s</td>
</tr>
<tr>
<td><strong>성능 조정</strong></td>
<td>IOPS와 처리량 독립 조정</td>
<td>볼륨 크기와 연동</td>
</tr>
</tbody></table>
<h3 id="gp2-성능-계산">gp2 성능 계산</h3>
<pre><code>gp2 IOPS = 볼륨 크기(GB) × 3
최대 IOPS 도달 볼륨 크기 = 16,000 ÷ 3 = 5,334 GB

예시:
- 100 GB → 300 IOPS
- 1,000 GB → 3,000 IOPS  
- 5,334 GB → 16,000 IOPS (최대)</code></pre><p><strong>gp2 버스트 기능</strong>: 작은 볼륨도 일시적으로 3,000 IOPS까지 버스트 가능</p>
<h2 id="3-provisioned-iops-ssd-io1io2">3. Provisioned IOPS SSD (io1/io2)</h2>
<h3 id="특징">특징</h3>
<ul>
<li><strong>미션 크리티컬</strong> 애플리케이션용</li>
<li><strong>지속적인 IOPS 성능</strong> 보장</li>
<li><strong>16,000 IOPS 이상</strong> 필요한 경우</li>
</ul>
<p><strong>사용 사례</strong>:</p>
<ul>
<li>데이터베이스 워크로드</li>
<li>스토리지 성능과 일관성에 민감한 애플리케이션</li>
</ul>
<h3 id="io1-vs-io2-block-express">io1 vs io2 Block Express</h3>
<table>
<thead>
<tr>
<th>구분</th>
<th>io1</th>
<th>io2 Block Express</th>
</tr>
</thead>
<tbody><tr>
<td><strong>용량</strong></td>
<td>4 GiB - 16 TiB</td>
<td>4 GiB - 64 TiB</td>
</tr>
<tr>
<td><strong>최대 IOPS</strong></td>
<td>64,000 (Nitro) / 32,000 (기타)</td>
<td>256,000</td>
</tr>
<tr>
<td><strong>IOPS:GiB 비율</strong></td>
<td>50:1</td>
<td>1,000:1</td>
</tr>
<tr>
<td><strong>지연시간</strong></td>
<td>밀리초</td>
<td><strong>서브 밀리초</strong></td>
</tr>
<tr>
<td><strong>Multi-Attach</strong></td>
<td>지원</td>
<td>지원</td>
</tr>
</tbody></table>
<h3 id="🔍-nitro-인스턴스-중요성">🔍 Nitro 인스턴스 중요성</h3>
<pre><code>32,000 IOPS 이상 필요 시:
EC2 Nitro 인스턴스 + io1/io2 조합 필수</code></pre><h2 id="4-hard-disk-drives-hdd">4. Hard Disk Drives (HDD)</h2>
<h3 id="공통-특징">공통 특징</h3>
<ul>
<li><strong>부팅 볼륨 불가</strong></li>
<li><strong>125 GiB - 16 TiB</strong> 용량 범위</li>
<li><strong>처리량 중심</strong> 설계</li>
</ul>
<h3 id="st1-throughput-optimized-hdd">st1 (Throughput Optimized HDD)</h3>
<p><strong>특징</strong>:</p>
<ul>
<li><strong>최대 처리량</strong>: 500 MiB/s</li>
<li><strong>최대 IOPS</strong>: 500</li>
</ul>
<p><strong>사용 사례</strong>:</p>
<ul>
<li>빅데이터 분석</li>
<li>데이터 웨어하우스</li>
<li>로그 처리</li>
</ul>
<h3 id="sc1-cold-hdd">sc1 (Cold HDD)</h3>
<p><strong>특징</strong>:</p>
<ul>
<li><strong>최대 처리량</strong>: 250 MiB/s</li>
<li><strong>최대 IOPS</strong>: 250</li>
<li><strong>최저 비용</strong></li>
</ul>
<p><strong>사용 사례</strong>:</p>
<ul>
<li>자주 액세스하지 않는 데이터</li>
<li>아카이브 스토리지</li>
<li>비용이 가장 중요한 시나리오</li>
</ul>
<h2 id="5-볼륨-타입-선택-가이드">5. 볼륨 타입 선택 가이드</h2>
<h3 id="워크로드별-권장사항">워크로드별 권장사항</h3>
<pre><code>데이터베이스 → gp3 또는 io1/io2
높은 처리량 → st1
최저 비용 → sc1
범용 용도 → gp3
부팅 볼륨 → gp3 또는 io1/io2 (SSD만 가능)</code></pre><h3 id="성능-요구사항별-선택">성능 요구사항별 선택</h3>
<pre><code>16,000 IOPS 이하 → gp3
16,000 IOPS 초과 → io1/io2
32,000 IOPS 초과 → Nitro + io1/io2
256,000 IOPS 필요 → io2 Block Express</code></pre><h2 id="6-ebs-multi-attach">6. EBS Multi-Attach</h2>
<h3 id="개요">개요</h3>
<p><strong>하나의 EBS 볼륨을 여러 EC2 인스턴스에 동시 연결</strong></p>
<p><strong>지원 볼륨</strong>: io1/io2 패밀리만 가능</p>
<h3 id="제약사항">제약사항</h3>
<ul>
<li><strong>동일 AZ 내</strong>에서만 가능</li>
<li><strong>최대 16개 인스턴스</strong> 동시 연결</li>
<li><strong>클러스터 인식 파일시스템</strong> 필요 (XFS, EXT4 불가)</li>
</ul>
<h3 id="사용-사례">사용 사례</h3>
<pre><code>클러스터링된 Linux 애플리케이션:
┌─────────┐    ┌─────────────┐    ┌─────────┐
│  EC2-1  │────│ EBS io2     │────│  EC2-2  │
└─────────┘    │Multi-Attach │    └─────────┘
               └─────────────┘
                      │
               ┌─────────┐
               │  EC2-3  │
               └─────────┘</code></pre><p><strong>적용 예시</strong>:</p>
<ul>
<li>Teradata 클러스터</li>
<li>고가용성 데이터베이스</li>
<li>분산 파일시스템</li>
</ul>
<p><strong>⚠️ 주의사항</strong>: 애플리케이션에서 동시 쓰기 작업을 직접 관리해야 함</p>
<h2 id="7-ebs-암호화">7. EBS 암호화</h2>
<h3 id="암호화-적용-범위">암호화 적용 범위</h3>
<p>EBS 볼륨 암호화 시 다음이 모두 암호화됩니다:</p>
<pre><code>암호화 적용 범위:
├── 볼륨 내부 저장 데이터 (Data at Rest)
├── 인스턴스-볼륨 간 전송 데이터 (Data in Transit)  
├── 모든 스냅샷
└── 스냅샷에서 생성된 모든 볼륨</code></pre><h3 id="암호화-특징">암호화 특징</h3>
<ul>
<li><strong>투명한 처리</strong>: 사용자 개입 불필요</li>
<li><strong>최소한의 지연시간</strong> 영향</li>
<li><strong>KMS 키 사용</strong>: AES-256 암호화</li>
<li><strong>스냅샷 복사 시 암호화</strong> 옵션 제공</li>
</ul>
<h3 id="기존-볼륨-암호화-방법">기존 볼륨 암호화 방법</h3>
<pre><code>1. 암호화되지 않은 볼륨의 스냅샷 생성
   ↓
2. 스냅샷 복사하면서 암호화 적용
   ↓  
3. 암호화된 스냅샷에서 새 볼륨 생성
   ↓
4. 새 볼륨을 인스턴스에 연결</code></pre><h2 id="8-실무-활용-전략">8. 실무 활용 전략</h2>
<h3 id="성능-최적화">성능 최적화</h3>
<pre><code>일반적인 워크로드 → gp3 (비용 효율적)
데이터베이스 → io2 (일관된 성능)
빅데이터 처리 → st1 (높은 처리량)
아카이브 → sc1 (최저 비용)</code></pre><h3 id="보안-강화">보안 강화</h3>
<ul>
<li><strong>민감한 데이터</strong>: 반드시 암호화 적용</li>
<li><strong>규정 준수</strong>: 암호화된 스냅샷으로 백업</li>
<li><strong>키 관리</strong>: KMS를 통한 중앙집중식 키 관리</li>
</ul>
<h3 id="비용-최적화">비용 최적화</h3>
<ul>
<li><strong>gp3 우선 고려</strong>: gp2 대비 20% 저렴하고 성능 독립 조정 가능</li>
<li><strong>적절한 볼륨 크기</strong>: 과도한 프로비저닝 방지</li>
<li><strong>사용하지 않는 볼륨</strong>: 정기적인 정리</li>
</ul>
<p>이러한 EBS 볼륨 타입과 고급 기능들을 이해하고 적절히 활용하면 AWS에서 안정적이고 확장 가능한 스토리지 인프라를 구축할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AMI & EC2 Instance Store]]></title>
            <link>https://velog.io/@jongc__c/AMI-EC2-Instance-Store</link>
            <guid>https://velog.io/@jongc__c/AMI-EC2-Instance-Store</guid>
            <pubDate>Wed, 21 Jan 2026 14:42:05 GMT</pubDate>
            <description><![CDATA[<h2 id="1-ami-amazon-machine-image-개요">1. AMI (Amazon Machine Image) 개요</h2>
<h3 id="ami란">AMI란?</h3>
<p>AMI는 EC2 인스턴스의 <strong>커스터마이징된 템플릿</strong>입니다.</p>
<p><strong>포함 요소</strong>:</p>
<ul>
<li>운영체제 (OS)</li>
<li>소프트웨어 패키지</li>
<li>애플리케이션 설정</li>
<li>모니터링 도구</li>
<li>보안 설정</li>
</ul>
<h3 id="💡-ami의-핵심-장점">💡 AMI의 핵심 장점</h3>
<pre><code>일반 EC2 부팅:
인스턴스 시작 → OS 설치 → 소프트웨어 설치 → 설정 → 사용 가능
(시간: 10-30분)

AMI 사용:
인스턴스 시작 → 즉시 사용 가능
(시간: 1-3분)</code></pre><p><strong>빠른 부팅의 이유</strong>: 모든 소프트웨어와 설정이 미리 패키징되어 있음</p>
<h2 id="2-ami-유형별-특징">2. AMI 유형별 특징</h2>
<h3 id="21-public-ami">2.1 Public AMI</h3>
<p><strong>제공자</strong>: AWS 공식</p>
<p><strong>특징</strong>:</p>
<ul>
<li>AWS에서 관리 및 업데이트</li>
<li>기본 OS 이미지 (Amazon Linux, Ubuntu, Windows 등)</li>
<li>무료 사용 가능</li>
<li>보안 패치 자동 적용</li>
</ul>
<h3 id="22-custom-ami-사용자-정의">2.2 Custom AMI (사용자 정의)</h3>
<p><strong>제공자</strong>: 직접 생성 및 관리</p>
<p><strong>장점</strong>:</p>
<ul>
<li>회사 표준 환경 구성 가능</li>
<li>특정 애플리케이션 사전 설치</li>
<li>보안 정책 사전 적용</li>
</ul>
<p><strong>단점</strong>:</p>
<ul>
<li>직접 관리 및 업데이트 필요</li>
<li>보안 패치 책임</li>
</ul>
<h3 id="23-aws-marketplace-ami">2.3 AWS Marketplace AMI</h3>
<p><strong>제공자</strong>: 서드파티 벤더</p>
<p><strong>특징</strong>:</p>
<ul>
<li>상용 소프트웨어 사전 설치</li>
<li>유료 라이선스 포함 가능</li>
<li>벤더 지원 제공</li>
</ul>
<h2 id="3-ami-생성-프로세스">3. AMI 생성 프로세스</h2>
<h3 id="단계별-ami-생성-과정">단계별 AMI 생성 과정</h3>
<pre><code>1. EC2 인스턴스 시작
   ↓
2. 소프트웨어 설치 및 설정
   ↓
3. 인스턴스 중지 (데이터 무결성 보장)
   ↓
4. AMI 생성 (EBS 스냅샷 자동 생성)
   ↓
5. 새로운 인스턴스에서 AMI 사용</code></pre><h3 id="🔍-중요-포인트">🔍 중요 포인트</h3>
<ul>
<li><strong>인스턴스 중지 필수</strong>: 데이터 일관성 보장</li>
<li><strong>EBS 스냅샷 자동 생성</strong>: AMI 생성 시 연결된 모든 EBS 볼륨의 스냅샷 생성</li>
<li><strong>리전별 제한</strong>: AMI는 특정 리전에 생성되며, 다른 리전 사용 시 복사 필요</li>
</ul>
<h2 id="4-ami-활용-전략">4. AMI 활용 전략</h2>
<h3 id="지역별-배포-전략">지역별 배포 전략</h3>
<pre><code>AMI 생성 (us-east-1) → 복사 → us-west-2
                     → 복사 → eu-west-1
                     → 복사 → ap-northeast-2</code></pre><h3 id="버전-관리-전략">버전 관리 전략</h3>
<pre><code>Production AMI v1.0 → 테스트 → 배포
                 ↓
Development AMI v1.1 → 테스트 → Production AMI v1.1</code></pre><h2 id="5-ec2-instance-store">5. EC2 Instance Store</h2>
<h3 id="instance-store-vs-ebs-비교">Instance Store vs EBS 비교</h3>
<table>
<thead>
<tr>
<th>구분</th>
<th>EBS Volume</th>
<th>EC2 Instance Store</th>
</tr>
</thead>
<tbody><tr>
<td><strong>타입</strong></td>
<td>네트워크 드라이브</td>
<td>물리적 하드웨어 디스크</td>
</tr>
<tr>
<td><strong>성능</strong></td>
<td>좋음 (제한적)</td>
<td>매우 높음</td>
</tr>
<tr>
<td><strong>지속성</strong></td>
<td>영구 저장</td>
<td>임시 저장 (Ephemeral)</td>
</tr>
<tr>
<td><strong>인스턴스 중지</strong></td>
<td>데이터 보존</td>
<td><strong>데이터 손실</strong></td>
</tr>
<tr>
<td><strong>하드웨어 장애</strong></td>
<td>데이터 보존</td>
<td><strong>데이터 손실</strong></td>
</tr>
<tr>
<td><strong>용도</strong></td>
<td>운영 데이터</td>
<td>임시 데이터</td>
</tr>
</tbody></table>
<h3 id="⚠️-instance-store-주의사항">⚠️ Instance Store 주의사항</h3>
<pre><code>인스턴스 중지/종료 → 데이터 완전 삭제
하드웨어 장애 → 데이터 복구 불가능
인스턴스 재부팅 → 데이터 보존 (OK)</code></pre><h2 id="6-instance-store-활용-사례">6. Instance Store 활용 사례</h2>
<h3 id="적합한-용도">적합한 용도</h3>
<ul>
<li><strong>버퍼/캐시 데이터</strong>: Redis, Memcached</li>
<li><strong>임시 처리 데이터</strong>: 로그 분석, 이미지 처리</li>
<li><strong>스크래치 공간</strong>: 대용량 데이터 임시 저장</li>
<li><strong>고성능 데이터베이스</strong>: NoSQL 임시 저장소</li>
</ul>
<h3 id="실제-사용-예시">실제 사용 예시</h3>
<pre><code>빅데이터 처리 파이프라인:
S3에서 데이터 다운로드 → Instance Store에서 고속 처리 → 결과를 S3에 업로드</code></pre><h2 id="7-데이터-보호-전략">7. 데이터 보호 전략</h2>
<h3 id="instance-store-사용-시-필수-고려사항">Instance Store 사용 시 필수 고려사항</h3>
<p><strong>백업 전략</strong>:</p>
<pre><code>Instance Store → 정기적 백업 → S3/EBS
실시간 복제 → 다른 인스턴스 Instance Store</code></pre><p><strong>고가용성 설계</strong>:</p>
<pre><code>Master Instance Store ← 실시간 동기화 → Slave Instance Store
        ↓                                    ↓
    EBS 백업                              EBS 백업</code></pre><h2 id="8-실무-활용-가이드">8. 실무 활용 가이드</h2>
<h3 id="ami-관리-모범-사례">AMI 관리 모범 사례</h3>
<ol>
<li><strong>정기적인 AMI 업데이트</strong>: 보안 패치 및 소프트웨어 업데이트</li>
<li><strong>태깅 전략</strong>: 버전, 환경, 팀별 태그 관리</li>
<li><strong>자동화</strong>: CI/CD 파이프라인에 AMI 생성 통합</li>
<li><strong>비용 관리</strong>: 오래된 AMI 및 스냅샷 정리</li>
</ol>
<h3 id="스토리지-선택-기준">스토리지 선택 기준</h3>
<pre><code>데이터 중요도가 높음 → EBS Volume
고성능이 필요함 → Instance Store + 백업 전략
비용 최적화 → 용도별 혼합 사용</code></pre><h3 id="성능-최적화-팁">성능 최적화 팁</h3>
<ul>
<li><strong>Instance Store</strong>: 고성능 I/O 작업</li>
<li><strong>EBS</strong>: 영구 저장이 필요한 데이터</li>
<li><strong>S3</strong>: 장기 보관 및 백업</li>
</ul>
<p>이러한 AMI와 Instance Store 개념을 이해하고 적절히 활용하면 AWS에서 효율적이고 안정적인 인프라를 구축할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[EC2 Instance Storage]]></title>
            <link>https://velog.io/@jongc__c/EC2-Instance-Storage</link>
            <guid>https://velog.io/@jongc__c/EC2-Instance-Storage</guid>
            <pubDate>Tue, 13 Jan 2026 14:52:33 GMT</pubDate>
            <description><![CDATA[<h2 id="ebs-elastic-block-store-개요">EBS (Elastic Block Store) 개요</h2>
<h3 id="ebs란">EBS란?</h3>
<p>EBS는 EC2 인스턴스에 연결할 수 있는 <strong>네트워크 드라이브</strong>입니다.</p>
<p><strong>핵심 특징</strong>:</p>
<ul>
<li>인스턴스 종료 후에도 데이터 지속성 보장</li>
<li>하나의 EBS는 하나의 EC2에만 마운트 가능 (CCP 레벨 기준)</li>
<li>특정 가용영역(AZ)에 종속</li>
<li><strong>비유</strong>: &quot;네트워크 USB 스틱&quot;</li>
</ul>
<h3 id="💡-free-tier-혜택">💡 Free Tier 혜택</h3>
<p>월 30GB의 General Purpose SSD 또는 Magnetic 스토리지 무료 제공</p>
<h2 id="ebs-핵심-특성">EBS 핵심 특성</h2>
<h3 id="네트워크-드라이브의-특징">네트워크 드라이브의 특징</h3>
<pre><code>EC2 Instance ←── 네트워크 ──→ EBS Volume
     │                           │
   물리적 서버                네트워크 스토리지</code></pre><p><strong>장점</strong>:</p>
<ul>
<li>빠른 분리/연결 가능</li>
<li>다른 인스턴스로 이동 가능</li>
</ul>
<p><strong>단점</strong>:</p>
<ul>
<li>네트워크 지연시간 존재</li>
</ul>
<h3 id="가용영역-제약">가용영역 제약</h3>
<pre><code>❌ 불가능한 연결
us-east-1a의 EBS → us-east-1b의 EC2

✅ 해결 방법
EBS 스냅샷 생성 → 다른 AZ로 복사 → 새 볼륨 생성</code></pre><h3 id="용량-관리">용량 관리</h3>
<ul>
<li><strong>프로비저닝 방식</strong>: 미리 용량(GB)과 IOPS 설정</li>
<li><strong>과금</strong>: 실제 사용량이 아닌 프로비저닝된 용량 기준</li>
<li><strong>확장</strong>: 운영 중에도 용량 증설 가능</li>
</ul>
<h2 id="delete-on-termination-속성">Delete on Termination 속성</h2>
<p>EC2 인스턴스 종료 시 EBS 볼륨의 동작을 제어하는 설정:</p>
<table>
<thead>
<tr>
<th>볼륨 타입</th>
<th>기본 설정</th>
<th>동작</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Root 볼륨</strong></td>
<td>활성화</td>
<td>인스턴스 종료 시 함께 삭제</td>
</tr>
<tr>
<td><strong>추가 볼륨</strong></td>
<td>비활성화</td>
<td>인스턴스 종료 후에도 보존</td>
</tr>
</tbody></table>
<p><strong>팁</strong>: 중요한 데이터가 있는 Root 볼륨은 비활성화로 설정하여 실수로 인한 데이터 손실 방지</p>
<h2 id="ebs-스냅샷-snapshots">EBS 스냅샷 (Snapshots)</h2>
<h3 id="스냅샷이란">스냅샷이란?</h3>
<p>특정 시점의 EBS 볼륨 백업본</p>
<pre><code>EBS Volume → Snapshot → 다른 AZ/Region으로 복사 가능</code></pre><p><strong>모범 사례</strong>:</p>
<ul>
<li>스냅샷 생성 시 볼륨 분리 권장 (필수는 아님)</li>
<li>정기적인 백업 스케줄 설정</li>
</ul>
<h2 id="고급-스냅샷-기능">고급 스냅샷 기능</h2>
<h3 id="ebs-snapshot-archive">EBS Snapshot Archive</h3>
<p><strong>목적</strong>: 비용 절약 (75% 저렴한 &quot;아카이브 계층&quot;)</p>
<pre><code>일반 스냅샷 → Archive Tier 이동
복원 시간: 24~72시간</code></pre><p><strong>사용 사례</strong>: 장기 보관용 백업, 규정 준수용 데이터</p>
<h3 id="recycle-bin">Recycle Bin</h3>
<p><strong>목적</strong>: 실수로 삭제한 스냅샷 복구</p>
<p><strong>설정 옵션</strong>:</p>
<ul>
<li>보존 기간: 1일 ~ 1년</li>
<li>자동 복구 규칙 설정 가능</li>
</ul>
<pre><code>스냅샷 삭제 → Recycle Bin 이동 → 보존 기간 내 복구 가능</code></pre><h3 id="fast-snapshot-restore-fsr">Fast Snapshot Restore (FSR)</h3>
<p><strong>목적</strong>: 스냅샷에서 복원한 볼륨의 초기 성능 저하 방지</p>
<h4 id="fsr의-동작-원리">FSR의 동작 원리</h4>
<pre><code>일반 복원 과정:
스냅샷 → 새 볼륨 생성 → 첫 액세스 시 지연 발생

FSR 적용 시:
스냅샷 → 블록 미리 로딩 → 즉시 최적 성능</code></pre><p><strong>핵심 개념</strong>:</p>
<ul>
<li>❌ &quot;빈 디스크를 채우는 작업&quot;이 아님</li>
<li>✅ &quot;스냅샷 블록을 EBS로 미리 로딩하는 작업&quot;</li>
</ul>
<p><strong>특징</strong>:</p>
<ul>
<li>스냅샷에서 볼륨을 생성할 때 발생하는 첫 번째 접근 지연(Latency)을 완전히 제거</li>
<li>비용이 높음</li>
<li>즉시 최적 성능 필요한 경우에만 사용</li>
<li>미션 크리티컬 애플리케이션에 적합</li>
</ul>
<h2 id="💡-학습-포인트-self-note">💡 학습 포인트 (Self-Note)</h2>
<ul>
<li><p>EBS는 <strong>&quot;가용 영역(AZ)에 묶여 있다&quot;</strong>는 사실을 절대 잊지 말자. 
다른 AZ로 이사가려면 무조건 Snapshot -&gt; Copy -&gt; Restore 과정을 거쳐야 함</p>
</li>
<li><p>비용 최적화를 하려면 사용하지 않는 스냅샷은 Archive로 보내거나 삭제하되, 만약을 위해 Recycle Bin 설정을 해두는 것이 안전함</p>
</li>
<li><p>Delete on Termination 설정 미스로 데이터 날려먹는 일이 없도록 주의!!</p>
</li>
</ul>
<h3 id="ebs-설계-원칙">EBS 설계 원칙</h3>
<ol>
<li><strong>데이터 중요도에 따른 Delete on Termination 설정</strong></li>
<li><strong>정기적인 스냅샷 백업 전략 수립</strong></li>
<li><strong>비용 최적화를 위한 Archive 활용</strong></li>
<li><strong>성능이 중요한 워크로드에는 FSR 고려</strong></li>
</ol>
<h3 id="비용-최적화-전략">비용 최적화 전략</h3>
<pre><code>단계별 스토리지 관리:
활성 데이터 → EBS Volume
백업 데이터 → Snapshot
장기 보관 → Archive Tier</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[IP 체계와 & Placement Groups (인스턴스 배치 전략)]]></title>
            <link>https://velog.io/@jongc__c/IP-%EC%B2%B4%EA%B3%84%EC%99%80-Placement-Groups-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EB%B0%B0%EC%B9%98-%EC%A0%84%EB%9E%B5</link>
            <guid>https://velog.io/@jongc__c/IP-%EC%B2%B4%EA%B3%84%EC%99%80-Placement-Groups-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EB%B0%B0%EC%B9%98-%EC%A0%84%EB%9E%B5</guid>
            <pubDate>Mon, 12 Jan 2026 15:49:47 GMT</pubDate>
            <description><![CDATA[<h2 id="1-ip-주소-기초-개념">1. IP 주소 기초 개념</h2>
<h3 id="ipv4-vs-ipv6">IPv4 vs IPv6</h3>
<p>네트워크에는 크게 두 가지 IP 체계(IPv4, IPv6)가 있지만, 아직은 IPv4가 대세다.</p>
<ul>
<li><strong>IPv4</strong>: <code>1.160.10.240</code> (현재 가장 널리 사용)</li>
<li><strong>IPv6</strong>: <code>3ffe:1900:4545:3:200:f8ff:fe21:67cf</code> (IoT 시대를 위한 차세대 프로토콜)</li>
</ul>
<p>IPv4는 <code>[0-255].[0-255].[0-255].[0-255]</code> 형식으로 약 37억 개의 주소를 제공합니다.</p>
<h2 id="2-private-ip-vs-public-ip">2. Private IP vs Public IP</h2>
<h3 id="핵심-차이점">핵심 차이점</h3>
<table>
<thead>
<tr>
<th>구분</th>
<th>Public IP</th>
<th>Private IP</th>
</tr>
</thead>
<tbody><tr>
<td><strong>접근 범위</strong></td>
<td>인터넷 전체</td>
<td>사설 네트워크 (VPC 내부만)</td>
</tr>
<tr>
<td><strong>고유성</strong></td>
<td>전 세계적으로 유일</td>
<td>사설 네트워크 내에서만 유일</td>
</tr>
<tr>
<td><strong>위치 추적</strong></td>
<td>지리적 위치 추적 가능</td>
<td>불가능</td>
</tr>
<tr>
<td><strong>인터넷 연결</strong></td>
<td>직접 연결</td>
<td>Internet Gateway를 통해 연결</td>
</tr>
</tbody></table>
<h3 id="실제-사용-예시">실제 사용 예시</h3>
<pre><code>회사 사설 네트워크 구조:
┌─────────────────────────────────────┐
│ 사설 네트워크 (Private Network)        │
│ ┌─────┐ ┌─────┐ ┌─────┐            │
│ │ PC1 │ │ PC2 │ │ PC3 │            │
│ └─────┘ └─────┘ └─────┘            │
│           │                        │
│    ┌─────────────┐                 │
│    │Internet GW  │ ← Public IP     │
│    └─────────────┘                 │
└─────────────────────────────────────┘
           │
      ┌─────────┐
      │Internet │
      └─────────┘</code></pre><h2 id="3-elastic-ip-eip---고정-ip-서비스">3. Elastic IP (EIP) - 고정 IP 서비스</h2>
<h3 id="eip란">EIP란?</h3>
<ul>
<li>EC2 인스턴스 재시작 시 Public IP가 변경되는 문제를 해결</li>
<li>삭제하지 않는 한 계속 소유하는 고정 Public IPv4 주소</li>
<li>한 번에 하나의 인스턴스에만 연결 가능</li>
<li>계정당 5개 제한 (증설 요청 가능)</li>
</ul>
<h3 id="⚠️-eip-사용을-피해야-하는-이유">⚠️ EIP 사용을 피해야 하는 이유</h3>
<p><strong>1. 단일 장애점 문제</strong></p>
<pre><code>❌ EIP 방식 (권장하지 않음)
User → 고정 IP(EIP) → EC2 1대
문제점: EC2 장애 = 서비스 중단</code></pre><p><strong>2. 확장성 제한</strong></p>
<ul>
<li>Auto Scaling과 호환성 문제</li>
<li>Multi-AZ 구성과 부적합</li>
<li>옛날 단일 서버 시대의 사고방식</li>
</ul>
<h3 id="✅-권장-대안-dns--load-balancer">✅ 권장 대안: DNS + Load Balancer</h3>
<pre><code>✅ 현대적 구조 (권장)
User → DNS → ALB → EC2 여러 대

장점:
- EC2 대수 제한 없음
- IP 변경되어도 DNS만 유지
- 자동 장애 복구
- Auto Scaling 지원</code></pre><h2 id="4-placement-groups---ec2-배치-전략">4. Placement Groups - EC2 배치 전략</h2>
<p>인스턴스가 물리적인 하드웨어 상에 어떻게 배치될지 결정하는 전략이다.</p>
<p>EC2 인스턴스의 물리적 배치를 제어하는 3가지 전략:</p>
<h3 id="41-cluster-클러스터-배치">4.1 Cluster (클러스터 배치)</h3>
<p><strong>특징</strong>: 모든 인스턴스를 동일 AZ의 근접한 위치에 배치</p>
<pre><code>┌─────────────────────────────────┐
│        Single AZ                │
│  ┌─────┐ ┌─────┐ ┌─────┐       │
│  │ EC2 │ │ EC2 │ │ EC2 │       │
│  └─────┘ └─────┘ └─────┘       │
│     └──── 10Gbps 네트워크 ────┘  │
└─────────────────────────────────┘</code></pre><ul>
<li><strong>장점</strong>: 초고속 네트워크 (10Gbps)</li>
<li><strong>단점</strong>: AZ 장애 시 모든 인스턴스 동시 장애</li>
<li><strong>용도</strong>: 빅데이터 처리, 초저지연 애플리케이션</li>
</ul>
<h3 id="42-spread-분산-배치">4.2 Spread (분산 배치)</h3>
<p><strong>특징</strong>: 각 인스턴스를 서로 다른 물리적 하드웨어에 배치</p>
<pre><code>AZ-1a        AZ-1b        AZ-1c
┌─────┐     ┌─────┐     ┌─────┐
│ EC2 │     │ EC2 │     │ EC2 │
└─────┘     └─────┘     └─────┘
다른 랙      다른 랙      다른 랙</code></pre><ul>
<li><strong>장점</strong>: 최대 가용성, 동시 장애 위험 최소화</li>
<li><strong>단점</strong>: AZ당 7개 인스턴스 제한</li>
<li><strong>용도</strong>: 가용성을 극대화해야 하는 핵심 애플리케이션, 서로 독립된 장애 격리가 필요한 경우.</li>
</ul>
<h3 id="43-partition-분할-배치">4.3 Partition (분할 배치)</h3>
<p><strong>특징</strong>: 여러 파티션으로 나누어 인스턴스 그룹 배치</p>
<pre><code>AZ-1a                    AZ-1b
┌─────────────────┐     ┌─────────────────┐
│ Partition 1     │     │ Partition 4     │
│ ┌─────┐┌─────┐  │     │ ┌─────┐┌─────┐  │
│ │ EC2 ││ EC2 │  │     │ │ EC2 ││ EC2 │  │
│ └─────┘└─────┘  │     │ └─────┘└─────┘  │
├─────────────────┤     ├─────────────────┤
│ Partition 2     │     │ Partition 5     │
│ ┌─────┐┌─────┐  │     │ ┌─────┐┌─────┐  │
│ │ EC2 ││ EC2 │  │     │ │ EC2 ││ EC2 │  │
│ └─────┘└─────┘  │     │ └─────┘└─────┘  │
└─────────────────┘     └─────────────────┘</code></pre><ul>
<li><strong>제한</strong>: AZ당 최대 7개 파티션</li>
<li><strong>확장성</strong>: 그룹당 수백 개 인스턴스 지원</li>
<li><strong>특징</strong>: 파티션 정보를 메타데이터로 제공</li>
<li><strong>용도</strong>: HDFS, HBase, Cassandra, Kafka 등 파티션 인식 빅데이터 애플리케이션</li>
</ul>
<h2 id="학습-포인트-요약">학습 포인트 요약</h2>
<h3 id="네트워킹-설계-원칙">네트워킹 설계 원칙</h3>
<ol>
<li><strong>EIP 대신 DNS(Route 53) + ALB 사용</strong></li>
<li><strong>Multi-AZ 구성으로 가용성 확보</strong></li>
<li><strong>Auto Scaling으로 확장성 보장</strong></li>
</ol>
<h3 id="placement-group-선택-기준">Placement Group 선택 기준</h3>
<ul>
<li><strong>고성능 컴퓨팅</strong>: Cluster</li>
<li><strong>미션 크리티컬</strong>: Spread  </li>
<li><strong>빅데이터 분산처리</strong>: Partition</li>
</ul>
<h3 id="✍️-정리-메모">✍️ 정리 메모</h3>
<p>EC2의 네트워크와 배치 전략은
단순히 “인스턴스를 띄우는 문제”가 아니라,
장애 범위·확장 방식·시스템 성격을 드러내는 설계 선택에 가깝다고 느꼈다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[EC2 Instance Role & Purchasing Options]]></title>
            <link>https://velog.io/@jongc__c/EC2-Instance-Role-Purchasing-Options</link>
            <guid>https://velog.io/@jongc__c/EC2-Instance-Role-Purchasing-Options</guid>
            <pubDate>Sun, 11 Jan 2026 14:53:59 GMT</pubDate>
            <description><![CDATA[<p>EC2 Instance Role 실습 메모
인스턴스 내부에서 AWS CLI를 쓸 때 보안을 챙기는 가장 좋은 방법은 IAM Role을 부여하는 것이다.</p>
<p>기존 방식: aws configure를 실행해 Access Key와 Secret Key를 직접 입력한다. 하지만 이건 인스턴스 내부에 자격 증명이 파일로 남아서 보안상 위험하다.</p>
<p>Role 방식: EC2 인스턴스의 Security &gt; Modify IAM Role 메뉴에서 적절한 정책이 담긴 역할을 부여한다.</p>
<p>Before: aws configure 필요</p>
<p>aws configure
aws iam list-users</p>
<p>After: IAM Role 연결 후</p>
<h3 id="ec2-console-→-security-→-modify-iam-role">EC2 Console → Security → Modify IAM Role</h3>
<p>이렇게 하면 aws configure를 따로 안 해도 바로 aws iam list-users 같은 명령어가 작동한다. EC2가 부여된 역할을 통해 임시 자격 증명을 자동으로 가져오기 때문이다. 
인스턴스 운영할 땐 무조건 IAM Role을 쓰는 게 원칙이다.</p>
<h3 id="ec2-purchasing-options-구매-옵션-요약">EC2 Purchasing Options (구매 옵션 요약)</h3>
<p>비용을 아끼려면 상황에 맞는 구매 방식을 선택해야 한다.</p>
<p>On-Demand Instances: 짧은 작업, 가격 예측 가능, 초 단위 결제. 가장 비싸지만 약정 없이 언제든 쓰고 버릴 수 있다.</p>
<p>Reserved Instances (RI): 1년 또는 3년 약정. 긴 작업에 적합하다.</p>
<p>Convertible Reserved Instances: 나중에 인스턴스 타입을 바꿀 수 있는 유연함이 포함된 약정.</p>
<p>Savings Plans: 일정량의 사용량을 약정하고 할인받는 방식. RI보다 좀 더 유연하다.</p>
<p>Spot Instances: 가장 저렴하지만(최대 90% 할인) AWS가 리소스가 필요하면 인스턴스를 회수해갈 수 있다. (신뢰성은 낮음)</p>
<p>Dedicated Hosts: 물리적 서버 한 대를 통째로 예약. 규제나 라이선스 이슈가 있을 때 쓴다.</p>
<p>Dedicated Instances: 하드웨어를 다른 고객과 공유하지 않는다.</p>
<p>Capacity Reservations: 특정 AZ에 용량을 미리 확보해두는 방식. 인스턴스를 실행하지 않아도 비용이 나간다.</p>
<p><strong>구매 옵션을 리조트에 비유하기 (Resort Analogy)</strong></p>
<p>On-demand: 리조트에 가고 싶을 때 언제든 가서 정가를 내고 묵는 것.</p>
<p>Reserved: 미리 계획을 세우고 장기 투숙을 예약해서 큰 할인을 받는 것.</p>
<p>Savings plans: 특정 기간 동안 시간당 일정 금액을 내기로 하고, 방 타입(킹, 스위트 등)을 유연하게 선택하는 것.</p>
<p>Spot instances: 빈방에 대해 경매(Bid)를 붙이는 것. 가장 높은 금액을 쓴 사람이 방을 차지하지만, 호텔이 필요하면 언제든 쫓겨날 수 있다.</p>
<p>Dedicated Hosts: 리조트 건물 한 동을 통째로 빌리는 것.</p>
<p>Capacity Reservations: 방을 미리 예약해두는 것. 실제로 가서 자든 안 자든 풀 가격을 지불해야 한다.</p>
<p>Public IPv4 과금 이슈
2024년 2월 1일부터 모든 퍼블릭 IPv4 주소에 대해 요금이 부과되기 시작했다.</p>
<p>가격: 시간당 $0.005 (한 달에 약 $3.6 정도).</p>
<p>Free Tier: 신규 계정은 처음 12개월 동안 EC2용 퍼블릭 IP 750시간 무료 제공. 하지만 다른 서비스(RDS 등)는 무료 혜택이 없다.</p>
<p>이유: 전 세계적인 IPv4 고갈 문제로 IPv6 전환을 독려하기 위함이다. 하지만 여전히 많은 곳이 IPv4를 쓰고 있어서 비용이 발생하더라도 쓰는 경우가 많다.</p>
<p>Troubleshooting: 내 계정에서 어디에 돈이 나가는지 보려면 AWS Bill을 보거나, IPAM (IP Address Manager)의 Public IP Insights를 확인하면 된다.</p>
<p>EC2 Spot Instance 상세
비용 절감의 핵심이지만 작동 방식을 정확히 알아야 사고가 안 난다.</p>
<p>작동 원리: 내가 설정한 Max Price보다 현재 Spot Price가 낮으면 인스턴스가 실행된다. 가격이 역전되면 인스턴스가 중단되는데, 이때 <strong>2분의 유예 시간(Grace period)</strong>이 주어진다.</p>
<p>Spot Block: 1~6시간 동안 끊김 없이 쓰도록 예약하는 방식인데, 정말 희귀한 상황에서는 회수될 수도 있다.</p>
<p>적합한 작업: 배치 작업, 데이터 분석 등 실패해도 다시 실행하면 되는 업무. DB나 중요한 운영 서버에는 절대 쓰면 안 된다.</p>
<p>★ 중요: 스팟 인스턴스 종료 방법 그냥 인스턴스만 종료(Terminate)하면 AWS가 &quot;어? 사용자가 인스턴스를 원한다고 했는데 왜 없지?&quot; 하고 스팟 요청(Spot Request)을 기반으로 새 인스턴스를 다시 띄워버린다.</p>
<p>먼저 Spot Request를 Cancel(취소) 한다. (그래야 AWS가 새로 안 만든다)</p>
<p>그 후에 실행 중인 Spot Instance를 Terminate 한다.</p>
<p>Spot Fleets (스팟 플릿)
비용 절감과 가용성을 동시에 챙기는 똑똑한 방법이다.</p>
<p>개념: 스팟 인스턴스 묶음 + (선택사항) 온디맨드 인스턴스.</p>
<p>장점: 여러 인스턴스 유형(m5.large, c5.large 등)과 여러 가용 영역(AZ)을 런치 풀(Launch Pool)로 정의해두면, 플릿이 알아서 가장 저렴하거나 안정적인 풀에서 인스턴스를 가져온다.</p>
<p>할당 전략 (Allocation Strategies):</p>
<p>lowestPrice: 가장 싼 풀에서 가져옴 (비용 최적화).</p>
<p>diversified: 모든 풀에 골고루 분산 (가용성 향상).</p>
<p>capacityOptimized: 용량이 넉넉한 풀을 우선 선택 (회수될 확률이 적음, 권장 방식).</p>
<p>**Spot vs Spot Fleet 차이점</p>
<p>Spot Instance: 특정 인스턴스 타입 + AZ 지정
Spot Fleet: 여러 인스턴스 타입 + AZ 중 최적 선택</p>
<p>💡 학습 포인트 (Self-Note)</p>
<p>보안 Best Practice</p>
<ul>
<li>EC2에는 IAM Role 필수 사용</li>
<li>Access Key 하드코딩 금지</li>
</ul>
<p>Spot Instance 관리</p>
<ul>
<li>중단 가능한 워크로드만 사용</li>
<li>중요한 DB나 서비스에는 비추천</li>
<li>종료 시 순서 준수 필수</li>
</ul>
<p>단순 스팟 요청은 내가 특정 타입과 AZ를 찍어서 요청하는 느낌이라면, 스팟 플릿은 &quot;이런 조건들을 만족하는 것 중에 제일 최적인 걸로 알아서 가져와&quot;라고 뭉텅이로 요청하는 느낌이다.</p>
<p>IPv4 비용이 이제는 무시 못 할 수준이니 안 쓰는 탄력적 IP(EIP)는 바로 반납하고, 퍼블릭 IP가 굳이 필요 없는 인스턴스는 프라이빗 서브넷으로 옮기는 습관을 들여야겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Security Group]]></title>
            <link>https://velog.io/@jongc__c/Security-Group</link>
            <guid>https://velog.io/@jongc__c/Security-Group</guid>
            <pubDate>Sun, 11 Jan 2026 08:46:09 GMT</pubDate>
            <description><![CDATA[<p>Security Groups ?
Security Groups는 AWS 네트워크 보안의 근간이다. EC2 인스턴스로 들어오거나 나가는 트래픽을 제어하는 가상 방화벽 역할을 한다.</p>
<p><strong>Allow rules only:</strong>
보안 그룹은 오직 허용(Allow) 규칙만 가질 수 있다. 특정 트래픽을 명시적으로 거부(Deny)하는 기능은 없다.</p>
<p>Referencing: 
규칙을 설정할 때 특정 IP 범위뿐만 아니라 다른 <strong>보안 그룹(Security Group ID)</strong>을 참조할 수 있다.</p>
<p>Stateful: 
보안 그룹은 상태를 기억한다. Inbound로 들어온 트래픽이 허용되었다면, 돌아나가는 Outbound 트래픽은 설정과 상관없이 자동으로 허용된다. 
( 기본적으로 모든 inbound 트래픽 차단, outbound 트래픽 허용 )</p>
<p>Security Groups Deeper Dive
보안 그룹이 구체적으로 어떤 것들을 규제하는지 정리한다.</p>
<p>Traffic Control 메커니즘
Internet ←→ Security Group ←→ EC2 Instance</p>
<p>Control points: 
포트(Ports) 접근 권한, 인증된 IP 범위(IPv4, IPv6), 인바운드 및 아웃바운드 네트워크 트래픽을 조절한다.</p>
<p>Outside the EC2: 
보안 그룹은 EC2 인스턴스 외부에서 작동한다. 만약 트래픽이 보안 그룹에서 차단된다면, EC2 인스턴스 자체는 해당 트래픽이 왔다는 사실조차 알지 못한다.</p>
<p>Region/VPC Locked: 보안 그룹은 특정 리전과 VPC 조합에 종속된다. 다른 리전으로 복사해서 쓸 수는 없다.</p>
<p>트래픽 허용 기본값 (Default Behavior):</p>
<p>All inbound traffic is blocked by default: 
외부에서 들어오는 모든 트래픽은 기본적으로 차단된다. (필요한 것만 열어줘야 함)</p>
<p>All outbound traffic is authorised by default: 
인스턴스에서 외부로 나가는 트래픽은 기본적으로 모두 허용된다.</p>
<p>알아둬야 할 중요한 포인트 (Good to know)
실제 운영이나 트러블슈팅 시 유용한 팁들이다.</p>
<p>Attached to multiple instances: 
하나의 보안 그룹을 여러 인스턴스에 적용할 수 있고, 반대로 하나의 인스턴스에 여러 보안 그룹을 붙일 수도 있다.</p>
<p>Separate SSH access: 
SSH 접속 전용 보안 그룹을 따로 관리하는 것이 보안상 좋다.</p>
<p>Troubleshooting: * Time out: 
트래픽이 응답 대기 시간을 초과한다면 높은 확률로 보안 그룹 설정 문제다. (트래픽이 아예 도달하지 못함)</p>
<p>Connection refused: 
연결이 거부되었다면 보안 그룹은 통과했지만, 소프트웨어가 실행 중이 아니거나 설정 오류인 경우다.</p>
<p>다른 보안 그룹 참조 (Referencing Other SGs)
IP 주소 대신 보안 그룹 ID를 규칙에 넣는 방식이다.</p>
<p>예를 들어, 보안 그룹 A를 가진 인스턴스가 보안 그룹 B를 참조하는 규칙을 갖고 있다면, 보안 그룹 B를 사용하는 모든 인스턴스의 트래픽을 허용하게 된다.</p>
<p>서버가 늘어나거나 IP가 바뀌어도 보안 그룹 기반으로 통신을 허용하므로 관리가 매우 유연해진다.</p>
<ul>
<li>IP 주소 변경에 관계없이 통신 허용</li>
<li>Auto Scaling 환경에서 유용</li>
<li>계층별 보안 구성 가능</li>
</ul>
<p>Classic Ports to know
네트워크 통신에서 표준으로 쓰이는 포트 번호들이다. 텍스트로 정리해둔다.</p>
<p>Port 22: SSH (Secure Shell) - 리눅스 인스턴스 로그인용.</p>
<p>Port 21: FTP (File Transfer Protocol) - 파일 전송.</p>
<p>Port 22: SFTP (Secure File Transfer Protocol) - SSH 기반 보안 파일 전송.</p>
<p>Port 80: HTTP - 비보안 웹사이트 접속.</p>
<p>Port 443: HTTPS - 보안 웹사이트 접속.</p>
<p>Port 3389: RDP (Remote Desktop Protocol) - 윈도우 인스턴스 원격 로그인용.</p>
<p>SSH Summary (How to access)
리모트 머신을 커맨드 라인으로 제어하기 위해 SSH는 필수다.</p>
<p>Linux / Mac OS X: 터미널에서 ssh 명령어를 통해 바로 접속 가능하다.</p>
<p>Windows: 예전에는 Putty 등을 썼지만, 최신 윈도우는 터미널에서 바로 접속하거나 전용 툴을 사용한다.</p>
<p>가장 중요한 점은 Port 22가 인바운드 보안 그룹에서 열려 있어야 한다는 것이다.</p>
<p>💡 정리하며 (Self-Note)
웹 서비스를 한다면 <strong>80(HTTP)</strong>과 <strong>443(HTTPS)</strong>은 기본으로 열어야 한다.</p>
<p>관리용으로는 <strong>22(SSH)</strong>나 <strong>3389(RDP)</strong>가 필요한데, 보안을 위해 My IP 옵션으로 내 컴퓨터에서만 접속되도록 제한하는 게 국룰이다.</p>
<h3 id="best-practices">Best Practices</h3>
<ol>
<li>SSH 전용 Security Group 별도 관리</li>
<li>최소 권한 원칙 적용</li>
<li>포트별 세분화 규칙 설정</li>
<li>정기적인 규칙 검토</li>
</ol>
<p>All inbound traffic is blocked by default라는 점을 항상 명심하자. 설정 안 하면 아무것도 안 들어온다.</p>
<p>*</p>
<ul>
<li>Security Group 변경사항은 즉시 적용</li>
<li>차단된 트래픽은 EC2 인스턴스에 도달하지 않음</li>
<li>로그 분석 시 Security Group 레벨에서 먼저 확인</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[EC2]]></title>
            <link>https://velog.io/@jongc__c/EC2</link>
            <guid>https://velog.io/@jongc__c/EC2</guid>
            <pubDate>Thu, 08 Jan 2026 16:34:46 GMT</pubDate>
            <description><![CDATA[<p>Amazon EC2 개요 (Elastic Compute Cloud)
EC2는 AWS에서 가장 대표적인 IaaS(Infrastructure as a Service) 서비스다. 쉽게 말해 클라우드에서 가상 서버를 빌려 쓰는 것.</p>
<p>핵심 구성 요소:</p>
<p>EC2: 가상 머신 그 자체.</p>
<p>EBS: 가상 드라이브 (데이터 저장).</p>
<p>ELB: 여러 서버로 트래픽을 분산해주는 장치.</p>
<p>ASG: 상황에 따라 서버 대수를 자동으로 늘리고 줄여주는 그룹.</p>
<p>EC2 설정 및 구성 옵션
서버를 만들 때 결정해야 할 게 꽤 많다. 사양에 따라 비용이 달라지니 신중해야 함.</p>
<p>OS: Linux, Windows, Mac OS 중 선택 가능.</p>
<p>CPU / RAM: 작업 부하에 맞는 컴퓨팅 파워와 메모리 크기 결정.</p>
<p>Storage (중요):</p>
<p>EBS / EFS: 네트워크로 연결된 드라이브. 인스턴스를 삭제해도 데이터 보존 가능.</p>
<p>EC2 Instance Store: 서버 본체에 직접 달린 물리적 하드웨어. 속도는 빠르지만 <strong>인스턴스 중단 시 데이터가 날아가는 휘발성(Ephemeral)</strong>이라 임시 데이터용으로만 써야 함.</p>
<p>Security Group: 방화벽 규칙. 어떤 포트를 열고 닫을지 설정.</p>
<p>EC2 User Data (부트스트래핑):</p>
<p>인스턴스가 처음 시작될 때 딱 한 번 실행되는 스크립트.</p>
<p>업데이트 설치, 소프트웨어 다운로드 등을 자동화할 때 쓴다.</p>
<p>root 권한으로 실행되기 때문에 모든 명령에 sudo를 붙일 필요가 없음.</p>
<p>인스턴스 명명 규칙 (Naming Convention)
예를 들어 m5.2xlarge라는 이름이 있다면 각각의 의미가 있다.</p>
<p>m: 인스턴스 클래스 (타입)</p>
<p>5: 세대 (숫자가 높을수록 최신/고성능)</p>
<p>2xlarge: 해당 클래스 내에서의 크기 (CPU, RAM 양이 결정됨)</p>
<p>EC2 인스턴스 타입별 용도 (Instance Types)
상황에 맞는 타입을 골라야 비용 낭비를 안 한다.</p>
<p>■ General Purpose (범용) Compute, Memory, Networking의 균형이 잘 잡힌 타입이다.</p>
<p>Prefix: M, T</p>
<p>Use Cases: 웹 서버, 코드 저장소(Code repositories) 등 다양한 워크로드.</p>
<p>■ Compute Optimized (컴퓨팅 최적화) 고성능 프로세서가 필요한 계산 집약적 작업에 적합하다.</p>
<p>Prefix: C</p>
<p>Use Cases: Batch processing, 미디어 트랜스코딩, 고성능 웹 서버, HPC(고성능 컴퓨팅), 머신러닝, 게임 서버.</p>
<p>■ Memory Optimized (메모리 최적화) 메모리 내에서 대규모 데이터셋을 처리하는 작업에 최적화되어 있다.</p>
<p>Prefix: R, X1, Z1 (R은 RAM의 R로 외우면 편함)</p>
<p>Use Cases: 고성능 관계형/비관계형 DB, 분산 웹 스케일 캐시 스토어, 실시간 빅데이터 분석.</p>
<p>■ Storage Optimized (스토리지 최적화) 로컬 스토리지에 대규모 데이터셋을 고속으로 읽고 써야 할 때 사용한다.</p>
<p>Prefix: I, D, H1</p>
<p>Use Cases: OLTP 시스템, NoSQL DB, Redis 캐시, 데이터 웨어하우징 애플리케이션</p>
<p>💡 학습 포인트 요약 (Self-Note)
서버를 껐다 켰을 때 데이터가 날아가면 안 된다면 반드시 EBS를 써야 한다. Instance Store는 임시 작업용으로만 쓰자.</p>
<p>User Data는 처음 생성 시에만 동작한다는 걸 잊지 말자. 나중에 수정하고 싶으면 인스턴스를 새로 만드는 게 빠를 수도 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[IAM]]></title>
            <link>https://velog.io/@jongc__c/IAM-tmk29tcd</link>
            <guid>https://velog.io/@jongc__c/IAM-tmk29tcd</guid>
            <pubDate>Wed, 07 Jan 2026 15:48:00 GMT</pubDate>
            <description><![CDATA[<ol>
<li>IAM Policy (정책) 구조 분석
IAM 정책은 JSON 형식으로 정의된다. 각 항목이 의미하는 바를 정확히 알아야 나중에 정책을 직접 짤 수 있다.</li>
</ol>
<p>JSON</p>
<pre><code>{
    &quot;Version&quot;: &quot;2012-10-17&quot;,
    &quot;Statement&quot;: [
        {
            &quot;Sid&quot;: &quot;VisualEditor0&quot;,
            &quot;Effect&quot;: &quot;Allow&quot;,
            &quot;Principal&quot;: &quot;*&quot;,
            &quot;Action&quot;: &quot;s3:ListBucket&quot;,
            &quot;Resource&quot;: &quot;arn:aws:s3:::my-bucket&quot;,
            &quot;Condition&quot;: {&quot;IpAddress&quot;: {&quot;aws:SourceIp&quot;: &quot;1.2.3.4/32&quot;}}
        }
    ]
}</code></pre><p>Sid (Statement ID): 문장의 식별자. 어떤 역할을 하는 문장인지 적어둔다.</p>
<p>Effect: 허용(Allow)할지 거부(Deny)할지 결정. (가장 중요)</p>
<p>Principal: 특정 정책을 적용할 계정이나 유저를 지정한다.</p>
<p>Action: 어떤 API 호출을 허용/거부할지 목록을 적는다. (ex: S3 읽기, EC2 중지 등)</p>
<p>Resource: 액션이 적용될 구체적인 리소스 목록이다.</p>
<p>Condition: 정책이 언제 적용될지 결정하는 조건이다. (ex: 특정 IP에서만 접속 가능)</p>
<p>기억할 점: Effect, Principal, Action, Resource는 필수 요소다.</p>
<ol start="2">
<li>비밀번호 정책 및 MFA
계정 보안을 위해 반드시 설정해야 하는 부분들이다.</li>
</ol>
<p>Password Policy: 비밀번호 복잡도나 만료 기간을 설정한다.</p>
<p>MFA (다중 인증): 비밀번호 + 물리적 보안 장치 조합이다. 비밀번호가 털려도 물리 장치가 없으면 접속을 못 하니 보안성이 확 올라간다.</p>
<p>가상 MFA: Google Authenticator 같은 앱 사용. 폰 하나에 귀속됨.</p>
<p>U2F (물리적 보안 키): YubiKey 같은 전용 장치.</p>
<p>Hardware Key Fob: 하드웨어 보안 토큰 (TOTP 방식).</p>
<p>GovCloud용: 미국 정부용 클라우드 전용 장치.</p>
<ol start="3">
<li>AWS 접근 방식 및 Access Key
유저가 AWS에 접근하는 방법은 크게 3가지가 있다.</li>
</ol>
<p>Management Console: 웹 브라우저 접속 (ID/PW + MFA 방식).</p>
<p>AWS CLI: 터미널에서 명령어로 제어. Access Key가 필요하다.</p>
<p>AWS SDK: 코드 내에서 API를 호출할 때 사용. 역시 Access Key가 필요하다.</p>
<p>Access Key 관리 주의사항:</p>
<p>Access Key ID는 유저네임, Secret Access Key는 비밀번호와 같다.</p>
<p>절대 공유하면 안 되고, 특히 코드에 하드코딩해서 깃허브 같은 곳에 올리면 큰일 난다.</p>
<ol start="4">
<li>AWS CloudShell 활용
웹 콘솔에서 바로 터미널을 쓸 수 있는 기능이다.</li>
</ol>
<p>무료로 사용 가능한 터미널 개념이다.</p>
<p>내 계정의 자격 증명이 이미 적용되어 있어 aws iam list-users 같은 명령어가 바로 작동한다.</p>
<p>파일 저장소가 있어서 재시작해도 파일이 남아있는 게 큰 장점이다.</p>
<ol start="5">
<li>IAM Role (역할)
사람이 아니라 AWS 서비스에게 권한을 줄 때 사용한다.</li>
</ol>
<p>EC2나 Lambda 같은 서비스가 다른 AWS 리소스(S3 등)에 접근해야 할 때 Role을 만들어 부여한다.</p>
<p>실제 사람이 쓰는 게 아니므로 장기적인 비밀번호(Access Key)가 필요 없고, 임시 자격 증명을 사용해서 훨씬 안전하다.</p>
<p>대표적 예시: EC2 Instance Role, Lambda Function Role.</p>
<ol start="6">
<li>보안 검토 도구 (Audit)
내가 설정을 잘했는지, 안 쓰는 권한은 없는지 확인할 때 유용하다.</li>
</ol>
<p>IAM Credentials Report: 계정 내 모든 유저의 자격 증명 상태(MFA 설정 여부 등)를 보고서로 뽑아준다. 계정 수준의 점검에 좋다.</p>
<p>IAM Access Advisor: 유저가 부여받은 권한 중 실제로 언제 마지막으로 사용했는지 보여준다. 안 쓰는 권한을 찾아내서 삭제하는 &#39;최소 권한 원칙&#39;을 지키기에 딱이다.</p>
<Summary>
Root 계정은 초기 설정 후에는 절대 쓰지 말자.

<p>한 사람당 하나의 IAM 유저를 만들자.</p>
<p>유저에게 직접 권한을 주기보다 그룹에 유저를 넣고 그룹에 권한을 주자.</p>
<p>MFA는 나뿐만 아니라 다른 유저들에게도 강제하자.</p>
<p>Access Key는 꼭 필요할 때만 만들고 정기적으로 교체하자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AWS Cloud Service]]></title>
            <link>https://velog.io/@jongc__c/AWS-Cloud-Service</link>
            <guid>https://velog.io/@jongc__c/AWS-Cloud-Service</guid>
            <pubDate>Wed, 07 Jan 2026 15:36:51 GMT</pubDate>
            <description><![CDATA[<p>AWS</p>
<p>클라우드 서비스</p>
<ul>
<li>온디맨드(On-demand, 수요가 발생하는 즉시)로 리소스를 대여하거나 받은 후 사용한 만큼 금액을 지불하는 서비스.</li>
</ul>
<p>공용(Public) 클라우드 - 3대 공용클라우드 서비스(AWS,Azure,GCP)
사설(Private) 클라우드 - 오픈스택(사설클라우드를 구축하는 플랫폼,툴)같은 툴로 직접 구성.</p>
<p>클라우드 서비스 모델</p>
<p>IaaS(Infrastructure as a Service)</p>
<ul>
<li>서비스로써의 인프라. aaS = 제공(서비스 모델). IaaS = 인프라 제공
= 운영체제가 설치 되어있지 않은 서버(Bare-metal) = 내가 직접 OS를 선택하고 설치.</li>
</ul>
<p>PaaS(Plaform as a Service) = 플랫폼 제공.</p>
<ul>
<li>OS 이상 설치된 경우.</li>
</ul>
<p>ex) 내가 제공받은 서버에 ubuntu 운영체제가 이미 설치되어있더라.
ex) OS도 설치되어있고 개발환경(JAVA, Python)도 이미 구성되어있더라.
ex) lambda 를통한 앱을 배포한다.</p>
<p>SaaS(Software as Service)</p>
<p>= 서비스 그 자체. 내가 프로그램을 제작하지 않고, 이미 만들어져 있는 프로그램을 사용.</p>
<p>ex) 구글문서, 이메일서비스</p>
<p>보통 이 3가지를 갖춰야 일반적으로 클라우드 서비스라고 얘기할 수 있다.</p>
<p>EC2(Elastic Compute Cloud)</p>
<p>*Elastic - 탄력적인</p>
<p>인스턴스 생성.</p>
<p>VM, 도메인, 인스턴스 다 같은말.</p>
]]></description>
        </item>
    </channel>
</rss>