<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>QnA on blog.212clab</title><link>https://212clab.pages.dev/qna/</link><description>Recent content in QnA on blog.212clab</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Sat, 02 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://212clab.pages.dev/qna/index.xml" rel="self" type="application/rss+xml"/><item><title>iptables와 Security Group</title><link>https://212clab.pages.dev/qna/2026-05-02-iptables-vs-sg/</link><pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate><guid>https://212clab.pages.dev/qna/2026-05-02-iptables-vs-sg/</guid><description>&lt;h2 id="한-줄-답변"&gt;한 줄 답변&lt;/h2&gt;
&lt;p&gt;iptables는 &lt;strong&gt;OS 커널 레벨&lt;/strong&gt; 방화벽이고, Security Group은 &lt;strong&gt;AWS VPC 레벨&lt;/strong&gt; 가상 방화벽이다. iptables는 호스트 안에서, SG는 호스트 밖(하이퍼바이저)에서 동작한다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="동작-위치"&gt;동작 위치&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[인터넷]
 ↓
[AWS VPC]
 ↓
[Security Group] ← 하이퍼바이저(ENI) 레벨, EC2 밖에서 필터링
 ↓
[EC2 인스턴스]
 ↓
[iptables] ← OS 커널(netfilter) 레벨, EC2 안에서 필터링
 ↓
[애플리케이션]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;SG는 트래픽이 EC2에 도달하기 &lt;strong&gt;전에&lt;/strong&gt; 필터링한다. iptables는 EC2 안에서 커널이 필터링한다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="iptables는-linux-전용이다"&gt;iptables는 Linux 전용이다&lt;/h2&gt;
&lt;p&gt;iptables는 Linux 커널의 &lt;strong&gt;netfilter&lt;/strong&gt; 프레임워크 위에서 동작한다. 다른 OS에는 각자의 방화벽이 있다:&lt;/p&gt;</description></item><item><title>Stateless 서비스(ECS)가 Private DB에 접근하는 방법</title><link>https://212clab.pages.dev/qna/2026-05-02-ecs-private-db-sg/</link><pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate><guid>https://212clab.pages.dev/qna/2026-05-02-ecs-private-db-sg/</guid><description>&lt;h2 id="한-줄-답변"&gt;한 줄 답변&lt;/h2&gt;
&lt;p&gt;ECS 태스크의 Security Group을 RDS Security Group의 인바운드에 &lt;strong&gt;소스로 등록&lt;/strong&gt;하면 된다. IP가 아니라 SG 참조 방식.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="왜-ip로-못-하나"&gt;왜 IP로 못 하나&lt;/h2&gt;
&lt;p&gt;ECS Fargate는 태스크가 뜰 때마다 &lt;strong&gt;IP가 바뀐다&lt;/strong&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;태스크 A: 10.0.1.23 → 종료
태스크 B: 10.0.2.87 → 새로 생성 (다른 IP)
태스크 C: 10.0.1.45 → 스케일 아웃 (또 다른 IP)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;오토스케일링으로 태스크 수도 변하기 때문에, IP를 SG에 등록하는 건 불가능하다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="security-group-참조-방식"&gt;Security Group 참조 방식&lt;/h2&gt;
&lt;p&gt;IP 대신 &lt;strong&gt;SG 자체를 소스로 지정&lt;/strong&gt;한다:&lt;/p&gt;</description></item><item><title>NLB와 ALB의 차이</title><link>https://212clab.pages.dev/qna/2026-03-22-nlb-vs-alb/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://212clab.pages.dev/qna/2026-03-22-nlb-vs-alb/</guid><description>&lt;h2 id="한-줄-답변"&gt;한 줄 답변&lt;/h2&gt;
&lt;p&gt;NLB는 &lt;strong&gt;L4(TCP/UDP)&lt;/strong&gt;, ALB는 &lt;strong&gt;L7(HTTP/HTTPS)&lt;/strong&gt; 로드밸런서입니다. NLB는 패킷을 그대로 전달하고, ALB는 HTTP 요청을 해석해서 라우팅합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="동작-계층"&gt;동작 계층&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;NLB (L4):
 클라이언트 → [NLB: TCP 패킷 전달] → 서버
 - 패킷 내용을 보지 않음
 - IP + Port로만 분기

ALB (L7):
 클라이언트 → [ALB: HTTP 요청 해석] → 서버
 - Host 헤더, URL 경로, HTTP 메서드 확인
 - 요청 내용 기반으로 라우팅 결정
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="핵심-차이"&gt;핵심 차이&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;항목&lt;/th&gt;
 &lt;th&gt;NLB&lt;/th&gt;
 &lt;th&gt;ALB&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;OSI 계층&lt;/td&gt;
 &lt;td&gt;L4 (TCP/UDP)&lt;/td&gt;
 &lt;td&gt;L7 (HTTP/HTTPS)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;라우팅 기준&lt;/td&gt;
 &lt;td&gt;IP + Port&lt;/td&gt;
 &lt;td&gt;Host, Path, Header, Method&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;지연&lt;/td&gt;
 &lt;td&gt;~100us (극저지연)&lt;/td&gt;
 &lt;td&gt;~1ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;고정 IP&lt;/td&gt;
 &lt;td&gt;제공 (AZ당 1개)&lt;/td&gt;
 &lt;td&gt;미제공 (DNS 기반)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;처리량&lt;/td&gt;
 &lt;td&gt;초당 수백만 요청&lt;/td&gt;
 &lt;td&gt;초당 수만 요청&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;프로토콜&lt;/td&gt;
 &lt;td&gt;TCP, UDP, TLS&lt;/td&gt;
 &lt;td&gt;HTTP, HTTPS, gRPC, WebSocket&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="라우팅-기능"&gt;라우팅 기능&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;NLB:
 - 포트 기반 분기만 가능
 - :443 → 타겟 그룹 A
 - :8080 → 타겟 그룹 B

ALB:
 - api.example.com/users → User 서비스
 - api.example.com/orders → Order 서비스
 - admin.example.com/* → Admin 서비스
 - Header X-Version: v2 → V2 서비스
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ALB는 하나의 로드밸런서로 여러 서비스를 Host/Path 기반으로 분기할 수 있다. NLB는 포트를 나누거나 별도 NLB를 만들어야 한다.&lt;/p&gt;</description></item></channel></rss>