본문 바로가기

소프트웨어-이야기/인프라

kodekloud: devops 온라인 실습 툴 유데미 강의에 실습 링크가 있어서 사용해봤다. 터미널에서 쿠버네티스 명령어를 실행하고, 퀴즈에 답하는 방식으로 해봤는데, 재밌다. 예전에 AWS / Google Cloud hands-on labs는 실습 시간동안 서버를 부여받고, 직접 클라우드 시스템을 설정해보는 방법이었다. 그런데 이건 웹 콘솔이 진짜 콘솔인 것처럼 느껴지게 만든, 가상의 학습 환경이다. AWS / Google Cloud hands-on labs + leetcode가 섞인 실습도구인 것 같다.
개발자를 위한 최소한의 모니터링 지식: spring actuator + prometheus + grafana prometheus이란? prometheus은 시스템 모니터링 시스템이다. prometheus은 시스템의 매트릭을 주기적으로 수집한다. 그래서 시스템에 문제가 발생했을 때, 이를 인지하고 디버깅할 수 있는 기준이 되는 지표를 제공해준다. prometheus를 사용하는 기본 아키텍처는 다음과 같다. spring actuator이란? spring actuator은 실행중인 애플리케이션의 내부 매트릭을 api으로 제공하는 역할을 담당한다. prometheus에서 spring의 매트릭을 수집할 수 있게 하려면, 두 개의 의존성을 추가해야한다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implement..
HTTP KeepAlive와 Spring Tomcat과 Netty ConnectionPool의 관계 persistent connection이란? 클라이언트에서 매번 커넥션을 새로 맺는 비용을 줄이기 위해, 커넥션을 일정기간 유지하는 것을 말한다. KeepAlive이란? persistent connection을 맺는 방법 중 하나이다. HTTP 1.0부터 지원하기 시작했다. HTTP 1.0에서는 기본값은 비활성화이다. HTTP 1.1부터는 KeepAlive가 기본 설정이다. 서버의 커넥션 최대 유휴 시간 클라이언트에서 커넥션을 맺어두기만 해놓고, 사용하지는 않는다면 서버 입장에서는 불필요한 리소스를 낭비하게 된다. 그래서 서버 애플리케이션에서는 서버 최대 유휴 시간을 설정할 수 있다. 즉, 커넥션을 맺은 이후 특정 기간동안 사용되지 않았다면, 커넥션을 강제로 끊어버리는 행위를 말한다. Spring > T..
개발자를 위한 최소한의 DNS 지식 (2): 쿠버네티스 응용편 개발자를 위한 최소한의 DNS 지식 (1): 기초편에 이어서, 쿠버네티스를 통해 DNS을 살펴보자. 쿠버네티스 컨테이너의 DNS 설정 확인해보기 dnsutils를 설치해서, 테스트를 해보자. kubectl apply -f https://k8s.io/examples/admin/dns/dnsutils.yaml 그다음 resolv.conf 설정을 살펴보자. kubectl exec -i -t dnsutils -- cat /etc/resolv.conf dnsutils 컨테이너를 실행하여, resolv.conf 기본값을 살펴보자. resolv.conf 파일에 search option이 설정되어있다. 쿠버네티스에서 올라간 애플리케이션에서 PQDN으로 도메인을 호출했을 때, 알아서 주소를 찾아가는 이유는 이 설정 덕분..
[Kubernetes] readiness/liveness probe 쿠버네티스는 두가지 유형의 상태 체크 기능을 가지고 있다. Readiness Readiness Probe는 애플리케이션이 트래픽을 받을 준비가 되었다는 것을 쿠버네티스에 알리는 역할을 한다. 쿠버네티스는 트래픽을 받기 전에 Readiness Probe를 통과했는지 확인한다. Readiness Probe에 실패하면, 쿠버네티스는 Readiness Probe을 통과할 때까지 파드로 트래픽 전송을 중단한다. Liveness Liveness Probe는 애플리케이션이 살았는지, 죽었는지 알려주는 역할을 한다. 파드가 살아있으면 쿠버네티스는 별도의 조치를 하지 않는다. 그러나 파드가 죽어있다면, 쿠버네티스는 파드를 제거하고 새로운 파드를 시작한다. 두가지 시나리오를 통해, 두 차이점을 이해해보자. Readines..
개발자를 위한 최소한의 네트워크 지식 방화벽 방화벽은 미리 정의해둔 보안 규칙에 의해서 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 역할을 한다. VIP 가상 IP (Virtual IP)의 약자이다. NAT 사설 네트워크에 속한 여러 호스트가 하나의 공인 IP으로 인터넷에 접속하기 위해 사용하는 기술을 말한다. NAT은 제한된 공인 IP을 여러 호스트가 공유해서 사용하기 위해 나온 기술이다. 그래서 공인 IP를 NAT IP이라고 부르기도 한다. 인바운드 트래픽 인바운드 트래픽은 외부에서 서버 내부로 들어오는 요청을 말한다. 인바운드 트래픽 IP 제한은 서버를 호출할 수 있는 외부 서버 IP를 관리하는 것을 말한다. 아웃바운드 트래픽 아웃바운드 트래픽은 서버에서 외부로 나가는 요청을 말한다. 즉, 서버에서 다른 외부 서버를 호출하는..
IPv6와 Nginx Ipv4 ipv4 프로토콜은 우리가 익히 알고있는 32bit의 IP 주소 체계로 되어있다. 그러다보니 사용할 수 있는 IP 수가 43억개로 제한되어있다. 223.130.195.95 Ipv6 Ipv6 프로토콜은 Ipv4 인터넷 주소가 고갈되는 문제를 해결하기 위해 만들어졌다. Ipv6은 128비트로 되어있고, IPv4 주소공간에 비해 296배의 크기를 갖는다. 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 요상하게 생겼는데, 이게 주소다. nginx에서 Ipv6 활성화하기 nginx.conf 파일에서 listen 80; 하위에 다음과 같이 선언해주면, nginx에서 ipv6 주소 요청을 수신할 수 있다. listen [::]:80; 이 설정은 서버에서 ipv6을 활성화한 상태에서만..
AWS SQS Queue - 표준 VS FIFO 표준 대기열 초당 호출수 제한이 거의 없다. 무제한이다. 표준 대기열도 최대한 메시지가 도착한 순서대로 처리될 수 있도록 메시지를 정렬하고 있다. 그러나 순서가 안맞을 수도 있다. 메시지가 중복으로 발행될 수도 있다. AWS에서는 고가용성을 위해 메시지를 여러 서버에 복제해둔다. 만약 메시지 수신/삭제 요청이 서버에 반영되지 않는 경우, 메시지가 중복으로 발행될 수 있다. 때문에 표준 대기열을 사용하는 경우, 중복 요청이 발생하더라도 문제가 되지 않도록 멱등적으로 기능을 구현해야한다. FIFO 대기열 초당 호출수 제한이 있다. API는 초당 최대 300개까지 호출할 수 있다. 배치 함수는 메시지를 초당 최대 3000개까지 처리할 수 있다. 배치 API도 초당 최대 300개까지 호출할 수 있고, 하나의 A..