본문 바로가기

DevOps

(7)
[Kubernetes] Service Service는 프로세스가 아니라 규칙(rule) 이다.어딘가에 트래픽을 받아 넘겨주는 프록시 서버가 떠 있는 게 아니라, 모든 노드의 커널에 심어진 패킷 변환 규칙의 집합이다. 이 한 문장을 이해하면 Service의 거의 모든 동작이 설명된다.Service가 왜 필요한가Pod는 일회용(ephemeral) 이다. 재시작되면 새 IP를 받고, 스케일 아웃되면 개수가 바뀌고, 노드가 죽으면 다른 노드에서 태어난다. 그래서 Pod IP를 직접 부르는 구조는 성립할 수 없다.문제Service가 없다면Service가 있다면Pod 재생성 시 IP 변경호출하는 쪽 설정을 매번 수정ClusterIP는 Service 수명 동안 불변Pod가 N개클라이언트가 직접 분배 로직 구현커널 레벨에서 자동 분산Pod 위치를 모름IP..
[AWS] AWS SAA-C03 합격 후기 SAA-C03 자격증 시험 합격 후기토요일 오전 8시에 시험을 보고 12시간 정도 뒤에 바로 결과가 나왔다. 결과는 다행히 합격이었다. 720점 부터 합격인데 765점으로 아슬아슬하게 합격했다.시험은 집에서 온라인 비대면으로 치뤘다. 비대면으로 응시해서 외국인 분이 웹캠 확인 하면서 이것저것 영어로 물어보고 요구하는데 그게 AWS 자격증 시험 중에서 가장 어렵고 고달픈 시간이었다. 시험 시간은 120분 정도 주어지며 다 푸는데에는 80분 정도 걸린 것 같다.시험 준비AWS 자격증 공부를 할 때 보통 udemy 강의를 많이 듣는다고 알고 있었다. 그래서 마찬가지로 udemy 강의 통해서 공부를 하려고 하던 때에 인프런 JSCODE 님이 SAA-C03 자격증 벼락치기 강의를 냈다는 메일을 받았다. JSCOD..
[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..