본문 바로가기

DevOps

(5)
[Nginx] Nginx 이벤트 루프와 epoll 기반 I/O 다중화 NGINX 한 대가 초당 수만 건의 요청을 처리하면서도 메모리를 수백 MB 이상 잡아먹지 않는다. 스레드 기반 서버라면 스택만으로 수 GB가 사라지는 상황에서도 NGINX는 그러지 않는다. 이것이 가능한 이유는 하나다. I/O를 기다리지 않기 때문이다. Apache가 연결마다 스레드를 할당하는 구조적 한계를 드러내던 자리에서, NGINX는 OS 커널의 이벤트 알림 메커니즘을 활용해 단 몇 개의 프로세스로 수만 개의 연결을 동시에 관리한다. 이 글에서는 그 원리를 이벤트 루프(Event Loop)와 I/O 다중화(epoll/kqueue)를 중심으로 OS 레벨까지 파헤쳐본다.문제의 시작 - C10K2000년대 초, 웹 트래픽이 폭발적으로 증가하면서 하나의 서버로 동시 접속자 1만 명(10,000 Connec..
[Kubernetes] Kubernetes 아키텍처 - kubectl 명령 이후의 동작 이 글은 Kubernetes를 처음 접하는 사람들이 "도대체 내가 입력한 명령이 어디로 가는 거지?" 라는 궁금증을 해소할 수 있도록, 아키텍처 전체를 순서대로 뜯어보는 글이다.Kubernetes란 무엇인가?컨테이너를 혼자 쓰면 어떤 문제가 생길까?Docker를 처음 배우면 docker run 명령 하나로 컨테이너를 실행하는 것이 마법처럼 느껴진다. 하지만 실제 서비스를 운영하다 보면 금방 한계에 부딪힌다.컨테이너가 죽으면? → 직접 다시 실행해야 한다트래픽이 갑자기 몰리면? → 수동으로 컨테이너를 늘려야 한다서버가 10대, 100대면? → 어느 서버에서 무엇이 실행되는지 파악하기 어렵다배포 중 서비스를 중단하지 않으려면? → 복잡한 스크립트를 직접 작성해야 한다이 문제들을 해결하기 위해 등장한 것이 컨..
[Docker] Docker Compose로 Grafana / Prometheus / Loki 로컬 테스트 환경 구성하기 애플리케이션 개발과 운영에서 모니터링은 필수적인 요소이다. 하지만 Grafana, Prometheus, Loki와 같은 강력한 모니터링 도구들을 처음부터 완벽하게 구축하는 것은 결코 쉬운 일이 아니다. 특히 로컬 개발 환경이나 소규모 테스트 환경에서는 복잡한 설정보다는 빠르고 쉽게 동작하는 모니터링 스택이 필요하다.위 환경을 AWS EC2 (Amazon Linux) 환경에서 Docker Compose를 활용하여 Grafana, Prometheus, Loki 스택을 구축하고, 나아가 Spring Boot 애플리케이션의 메트릭과 로그를 연동하는 방법을 알아보자.목표AWS EC2 (Amazon Linux 2023) 인스턴스 위에서Docker Compose를 사용하여Grafana, Prometheus, Loki..
Docker Docker는 전통적인 하이퍼바이저 기반 가상머신(VM)과 달리, 리눅스 커널이 제공하는 다양한 기능을 조합해 호스트 커널을 공유하면서도 독립된 프로세스 환경을 제공하는 경량 컨테이너 플랫폼이다. OS 수준의 가상화(OS-level virtualization)라고 부르며, 프로세스 격리와 자원 제어만으로 빠르고 효율적인 애플리케이션 배포·운영을 가능케 한다.컨테이너 vs VM 가상머신 (VM) 컨테이너(Docker) 커널각 VM마다 별도 커널과 OS호스트 커널을 공유가동 시간수십 초 이상 (부팅 필요)수 밀리초~수 초 (프로세스로 실행)오버헤드메모리·디스크·CPU 오버헤드 큼최소한의 사용자 공간 레이어만 추가격리 수준꽉 막힌 격리네임스페이스·Cgroups 기반 격리컨테이너는 결국 “독립된 프로세스”이..
VPC란? VPC란?종류설명VPC(Virtual Private Cloud)AWS 전용 가상 네트워크서브넷(subnet)VPC의 IP주소 범위CIDR 블록클래스 없는 도메인 간 라우팅 기법라우팅 테이블틀래픽을 전달할 위치를 결정하는 라우팅 규칙 집합인터넷 게이트웨이(internet gateway)VPC에서 인터넷 간의 통신을 활성화하기 위한 리소스NAT 게이트웨이Private 서브넷의 EC2가 인터넷, 다른 VPC에 연결되도록 허용하는 AWS서비스보안 그룹AWS 리소스 대해서 in/outbound 트래픽을 제어하는 가상 방화벽네트워크 ACL(Network ACL)서브넷에서 들어오고 나가는 트래픽을 제어하기 위해 방화벽 역할을 수행하는 VPC에 대한 가상 방화벽EIP(Elastic IP)AWS에서 할당해주는 정적 IP..