본문 바로가기

전체 글

(65)
Nginx 핵심 개념 정리 1. Nginx 소개Nginx는 2004년 러시아의 개발자 이고르 시쇼예프가 당시 웹 서버들이 직면했던 C10K 상태, 즉 수천~수만 개의 동시 연결을 효율적으로 처리하기 어려운 문제를 해결하기 위해 등장한 기술이다. Nginx는 주로 HTTP 웹 서버로 사용되며, 특히 HTML, CSS, JavaScript, 이미지와 같은 정적 콘텐츠를 서비스하는 데 최적화되어 있다. 동적 요청은 뒤에 있는 애플리케이션 서버(WAS)로 넘기고, 자신은 가볍고 빠르게 정적 파일만 응답하거나 클라이언트와의 연결을 유지하는 역할을 수행한다. 현재는 웹 서버뿐만 아니라 리버스 프록시, 로드 밸런서, 메일 프록시 등 네트워크 인프라의 핵심 엔진으로 활용되고 있다.2. Apache와 Nginx 비교 및 장단점2.1. Apach..
애자일(Agile) 철학과 방법론 정리 1. 소프트웨어 공학의 패러다임 변화전통적인 폭포수(Waterfall) 모델은 요구사항 정의부터 설계, 개발, 테스트까지 선형적으로 진행된다. 이는 구조가 명확하다는 장점이 있지만, 현대의 급변하는 비즈니스 환경과 불확실한 사용자 요구사항에 대응하기에는 치명적인 한계가 있다. 프로젝트 후반부에 발생하는 설계 변경은 막대한 비용을 초래하기 때문이다. 이러한 배경 속에서 등장한 애자일(Agile)은 단순한 방법론을 넘어, 변화를 관리하고 가치를 빠르게 전달하기 위한 개발 철학이다.2. 애자일 선언문: 네 가지 핵심 가치애자일의 근간은 2001년 발표된 애자일 소프트웨어 개발 선언문에 있다. 이는 효율적인 개발 팀이 지향해야 할 우선순위를 다음과 같이 정의한다.프로세스와 도구보다는 개인과 상호작용을 우선한다...
하이퍼바이저(Hypervisor)란? 지난 포스팅에서 vCPU의 개념과 하이퍼스레딩의 관계를 살펴보았다면, 오늘은 그 vCPU를 실제로 생성하고 물리 자원(pCPU)에 매핑하는 핵심 소프트웨어인 하이퍼바이저(Hypervisor)에 대해 정리해보고자 한다. 가상 머신 모니터(VMM)라고도 불리는 이 기술이 어떻게 하드웨어를 추상화하는지 그 갈래를 나누어 분석해 보았다.1. 하이퍼바이저의 정의와 역할하이퍼바이저는 하나의 물리 서버에서 여러 개의 Guest OS를 동시에 실행할 수 있도록 해주는 가상화 플랫폼이다. VMM(Virtual Machine Manager)이라고도 부르며, 가상 머신을 생성, 삭제하고 리소스를 제어하는 소프트웨어이다. 물리적 하드웨어와 Guest OS 사이의 중개자 역할을 수행한다.역할자원 분할 및 할당: 물리 서버의 자..
vCPU 동작 원리 운영체제와 시스템 아키텍처를 공부하다 보면 하드웨어 자원의 효율적 분배라는 문에 직면하게 된다. 최근 클라우드 컴퓨팅과 컨테이너 기술을 공부하면서, 물리 하드웨어 하나가 어떻게 수십 개의 독립된 인스턴스를 안정적으로 구동하는 방법이 궁금해졌다. 그 중심에 있는 vCPU의 개념과 동작 원리를 정리해보았다.1. vCPU의 정의와 등장 배경vCPU는 가상 머신(VM) 내에서 할당받는 논리적인 프로세싱 단위를 의미한다. 과거에는 하나의 OS가 하나의 물리 하드웨어를 점유하는 것이 당연했으나, 이는 하드웨어 자원의 유휴 시간을 발생시켜 효율성을 저하시켰다. 이러한 낭비를 줄이고 하드웨어 추상화를 통해 유연한 인프라를 구축하기 위해 하이퍼바이저 기반의 가상화 기술이 등장하게 되었다.2. CPU와 vCPU의 차이점구..
AWS 네트워크 핵심 구성 요소 정리 AWS에서 인프라를 설계할 때 가장 먼저 이해해야 하는 것이 바로 네트워크 구조이다.이 글에서는 AWS 네트워크의 핵심 개념을 인프라 → 주소 → 라우팅 → 보안 흐름으로 정리하였다.1. 인프라 개념 : Region, AZRegion AWS 서비스가 호스팅되는 전 세계의 물리적 지리 영역이다.ex. 서울(ap-northeast-2), 도쿄(ap-northeast-1)특징각 리전은 완전히 독립되어 있기 때문에, 장애가 발생해도 다른 리전에 영향이 없다.리전 간 통신엔 비용이 발생하고, 지연이 높아지기 때문에 서비스는 보통 한 리전 내에서 설계하게된다.AZ(Availability Zone)하나의 리전 내에서 물리적으로 격리된 데이터 센터 그룹이다.특징서로 다른 AZ는 물리적으로 거리가 존재해 전력망, 네트워..
Kata Containers와 gVisor 리눅스 컨테이너는 기본적으로 호스트 커널을 공유하는 구조를 가진다. 이는 가볍고 빠르다는 장점이 있지만, 하나의 컨테이너가 권한 탈취를 당했을 때 호스트 커널 전체가 위협에 노출될 수 있다는 보안적 한계가 존재한다. 이러한 취약점을 극복하기 위해 등장한 기술이 바로 샌드박스형 런타임인 Kata Containers와 gVisor이다.1. Kata Containers: 하드웨어 기반 가상화카타 컨테이너는 각 컨테이너를 매우 가벼운 가상 머신(MicroVM) 안에서 실행하는 방식을 취한다. 호스트와 커널을 공유하지 않고 각 컨테이너마다 독립적인 게스트 커널을 할당한다.격리 방식: 하드웨어 가상화 기술을 활용하여 VM 수준의 강력한 격리를 제공한다.각 컨테이너는 호스트 OS 커널을 공유하지 않고 전용 게스트 커..
도커(Docker)의 단점과 카타 컨테이너(Kata Containers) 컨테이너 기술의 표준으로 자리 잡은 도커는 현대 개발 환경에서 필수적인 도구이다. 가볍고 빠르며 배포가 쉽다는 강력한 장점이 있지만, 시스템 레벨에서 인프라 구조를 깊이 들여다보면 도커 역시 완벽한 기술은 아니며 명확한 한계를 지니고 있다. 이번 글에서는 도커의 단점과 그 근본적인 원인을 알아보고, 이를 보완하기 위해 등장한 MicroVM 개념과 Kata Containers에 대해 정리해 본다.1. 도커의 단점: 불완전한 격리도커는 리눅스의 cgroup과 namespace 기술을 활용해 프로세스를 논리적으로 격리한다. VM처럼 무거운 Guest OS를 띄우지 않아 가볍다는 장점이 있지만, Host OS의 커널을 그대로 공유하기 때문에 다음과 같은 치명적인 단점들이 발생한다.보안 취약점 (Docker Co..
도커(Docker)의 가상화 원리와 리눅스 커널 구조 이전 포스팅에서 도커의 기본 개념과 간단한 사용법을 알아보았다. 이번 글에선 도커의 구조를 자세히 알아보려한다. 1. 도커 컨테이너의 가상화 구조도커 컨테이너는 OS 레벨의 가상화를 제공한다. 이를 VM의 가상화 기술의 구조와 비교해보자. 오른쪽 그림의 컨테이너 엔진에 해당하는 것이 도커 엔진이다. 비교 항목가상 머신 (VM)컨테이너 (Container)오버헤드 높음 (High) 낮음 (Low)시작 시간 수 분 소요 (Slow) 수 초 이내 (Fast)자원 사용 덜 효율적임 효율적임격리 수준 가상 하드웨어 수준 격리 프로세스 수준 격리커널 공유 각 VM마다 별도의 Guest OS 필요 호스트 OS 커널 공유2. 도커가 이용하는 리눅스 커널 핵심 기능: Namespaces & Cgroups 도커가 독립된 ..