DevOps 3

Request가 실질적으로 처리되기까지의 여정

백엔드에 요청을 보낼 때 대부분의 경우 요청의 처리 측면에 집중하는데, 이는 실제로는 마지막 단계에 불과하다. 요청이 처리될 준비가 되기까지 훨씬 더 많은 일이 일어나게 된다. 이를 6단계로 나누면 각 단계는 이론적으로 전용 스레드나 프로세스에 의해 실행될 수 있다. 거의 모든 백엔드, 웹 서버, 프록시, 프레임워크, 심지어 데이터베이스도 이 모든 단계를 수행해야 하며, 각 단계마다 다른 방식으로 수행한다. 1. Accept 요청은 종종 연결(TCP/QUIC)을 통해 전송되며 백엔드에서 연결을 수락해야 한다. 클라이언트가 포트 443에서 서버에 연결하면 서버 OS 커널에 의해 3방향 핸드셰이크가 완료되고 연결이 수신기 대기열에 배치되게 되는데, 이 대기열을 수락 대기열(accept queue)이라고 부른..

DevOps/백엔드 2023.10.31

OpenTelemetry의 역사

2019년 초 OpenTelemetry 프로젝트는 OpenTracing과 OpenCensus라는 두 프로젝트의 병합으로 탄생했다. 프로젝트의 초기 목표는 두 개의 프로젝트를 하나로 합치는 것이었지만 클라우드 네이티브 소프트웨어에 대한 관찰 가능성 프레임워크를 제공하겠다는 야심이 프로젝트를 큰 과제로 만들었다. OpenTelemetry는 기본적으로 OpenTracing과 OpenCensus의 개념을 결합한 것이기 때문에 우선은 이 둘을 잘 살펴볼 필요가 있다. OpenTracing 2016년에 시작된 OpenTracing 프로젝트는 사용자가 시스템을 더 잘 이해하기 위한 수단으로 분산 추적을 채택하는 비율이 증가하는 것에 따른 문제를 해결하는 데 집중했다. 사용자들은 분산 추적 도입으로 인해 발생하는 비용..

미디어 업로드 서버의 성능 튜닝 - 디스크 I/O 튜닝

최근 회사 업무로 인해 영상 Flask를 사용해서 "영상 분할 업로드" 및 영상 처리 API 등의 기능을 가지는 서버를 구현하게 되었다. 이 중, 영상 업로드 관련해서 디스크 I/O에 대한 많은 실험을 하게 되었고, 이에 대한 내용을 정리해 놓고자 이렇게 글을 쓰게 되었다. Disk I/O 성능 측정하기 이 프로젝트의 주요 기능 중 하나인 영상 업로드의 경우 높은 disk I/O 기능을 사용해야 하기 때문에 Disk 입출력의 성능을 파악하는 것이 주요할 것으로 생각이 되어졌다. 사실 디스크 I/O의 성능의 경우, 기본적으로 Linux에서는 디스크 입출력 성능 체크를 위한 툴로써 dd라는 명령어를 제공한다. dd 커멘드는 파일을 복사하고 변환하는데 사용하는 CLI로, 입출력에 대한 성능 측정을 가능하게 해..

DevOps 2023.10.14