[Dev] VirtualBox + Vagrant 네트워크 어댑터 이해하기
Vagrant + VirtualBox 환경에서 반복적으로 등장하는 NAT, Host-Only 네트워크 구조를 정리한다.
Vagrant + VirtualBox 환경에서 반복적으로 등장하는 NAT, Host-Only 네트워크 구조를 정리한다.
LLM의 한계를 극복하는 AI Agent의 개념과 Function Calling을 활용한 구현 패턴을 정리하고, Upstage API를 이용한 SQL Agent 구현 예시를 살펴본다.
튜닝 실험 결과를 종합하고, CPU limit 설정에 대한 고민과 최종 결정을 정리해 보자.
CPU limit을 고정한 상태에서 ffmpeg -threads 수를 변화시키며, throttling과 처리 성능의 추이를 관찰해 보자.
CPU limit을 단계적으로 상향하며, throttling 감소와 처리 성능 변화의 추이를 관찰해 보자.
원인 분석에서 얻은 인사이트를 바탕으로, CPU limit과 ffmpeg 스레드 수 튜닝 실험의 방향과 환경을 설계해 보자.
cgroup cpu.stat과 ffmpeg stat을 통해 CPU throttling을 직접 관찰하고 정량적으로 분석해 보자.
환경별 성능 차이를 측정하고, CPU limit이 원인인지 실험으로 확인해 보자.
ffmpeg의 영상 처리 파이프라인과 멀티스레드 동작 방식에 대해 알아 보자.
cgroup이 프로세스 그룹의 CPU를 어떻게 제한하는지, 그리고 K8s의 CPU limit이 커널까지 전달되는 경로를 알아 보자.
CPU가 시간을 나눠쓰는 자원이라는 것, 그리고 그 시간을 누가 어떻게 관리하는지 알아 보자.
Kubernetes 환경에서 ffmpeg 프레임 추출이 비정상적으로 느렸던 상황에 대해 정리해 보자.
컨테이너에 장치 파일을 주입하기 위한 두 가지 방식을 알아보자.
containerd의 config.toml 설정 파일 구조와 주요 옵션을 살펴보자.
이원화된 로직을 하나의 추상화로 통합하기
단순 컬럼 추가 vs 확장 가능한 설계, 그 사이에서 고민했던 기록
Kubernetes 인증 메커니즘에서 나타날 수 있는 kubeconfig 인증서 만료로 인한 클러스터 API 사용 불가 문제를 이해해보자.
시간에 쫓겨 쌓아 올린 기술 부채를 청산하기 위한 10일간의 기록(feat. Cursor)
go-github SDK 패턴을 Internal API Client에 실제로 적용해 보자.
go-github SDK의 구조적 패턴을 분석하고 이해해 보자.
Rob Pike의 생각을 좇아, Functional Options 패턴을 적용해 유연하고 확장 가능한 생성자를 만들어 보자.
DooD 환경에서 containerd와 Docker에 서로 다른 이미지가 저장되는 현상에 대해 알아 보자.
docker와 crictl에서 같은 이미지가 보이는 현상이 실제 중복 저장인지 확인해 보자.
docker와 crictl에서 같은 이미지가 다른 크기로 보이는 현상을 분석해 보자.
컨테이너 파일 시스템, CLI에 대해 알아 보자.
컨테이너 이미지의 구조, 런타임에 대해 알아 보자.
재귀 쿼리를 이용해 상향식, 하향식, 트리 탐색을 할 수 있다.
NVIDIA GPU에 GPU Time Slicing을 실제로 적용해보자.
NVIDIA GPU Time Slicing의 동작 원리와 ConfigMap 설정 방법을 알아보자.
GPU Time Slicing에 대해 알아보자.
반성하며 공부한 여러 가지 개념들
H.264 코덱은 짝수 해상도의 영상만 지원한다(..!).
보다 보니, 이거 그냥 Deadlock이 아니던가
Kubernetes에서의 Deployment 재배포는 왜 실패했을까
Kubernetes에서의 Deployment 업데이트 전략 대해 알아보자
Kubernetes 스케줄러의 파드 배치 프로세스와 선점 메커니즘에 대해 알아보자
Kubernetes에서의 파드 스케줄링 전략에 대해 알아보자.
Helm으로 배포한 MinIO에서 SSD 마운트를 이용해 PV를 구성하는 방법과 주의사항
AWS elastic beanstalk 환경에 https를 설정해 보자
AWS elastic beanstalk 환경에 도메인을 연동해 보자
Origin에 대해 알아 보자
AWS elastic beanstalk 환경에서 발생하는 413 Entity Too Large 에러를 해결해 보자
Github Actions에서 Elastic Beanstalk에 배포하는 Workflow를 만들어 보자
Git의 submodule 기능을 이용해 Git 저장소 하위에 또 다른 Git 저장소를 관리하기
gin의 binding tag로 dive를 사용하면 중첩 구조체에 대한 validation을 수행할 수 있다
gin의 json struct validator를 사용할 때, 사용자 친화적인 에러 메시지를 반환해 보자
K3s 환경에 배포된 Argo Workflow에서 Object Storage를 Artifact 저장소로 설정하는 방법
쿠버네티스 환경에서 실행되는 컨테이너가 GPU를 사용할 수 있게 되기까지
Kubernetes 환경에서 PyTorch 멀티 프로세스로 Data Loader를 이용할 때 발생할 수 있는 문제
컨테이너 런타임과 NVIDIA Container Runtime에 대하여
NVIDIA Device Plugin을 이용해 Kubernetes 환경에서 GPU 사용할 수 있도록 설정하기
Memory Padding을 생각하지 않고 구조체를 설계할 때 마주칠 수 있는 문제
Docker Bridge Network를 사용해 컨테이너를 배포하며 생기는 IP 대역대 충돌 문제를 해결하는 방법
Docker Bridge Network를 사용해 컨테이너를 배포할 때 발생할 수 있는 IP 대역대 충돌 문제
Go를 이용해 PostgreSQL jsonb 타입의 데이터를 조회할 때, query parameter 설정에 주의해야 한다.
Elastic Beanstalk을 이용해 EC2에 이미지를 배포하던 도중 발생한 OOM 에러
패키지 실행 시 working directory에 주의하지 않으면 발생할 수 있는 문제
JPA를 이용해 양방향 연관관계를 설정한 엔티티를 JSON 응답에 반환하는 경우 발생할 수 있는 문제
Spring에서 API 버전 관리를 위한 url prefix를 설정하는 방법
JPA 엔티티 생성자에 디폴트 생성자 롬복 어노테이션이 필요한 이유
FastCGI 방식으로 Python 스크립트를 실행할 때 마주했던 문제들
git 사용 환경 설정 파일을 확인하고 변경해 보자
tcpdump로 패킷을 분석할 때 마주하는 문제들
로그 모니터링, 빅데이터 분석 등에 자주 활용되는 스택
동적 컨텐츠를 생성하기 위한 자바 서버 측 프로그램
권한을 가지지 않은 사용자가 프로그램을 실행할 때 마주치는 오류
브라우저 환경에서 날짜를 렌더링하다 겪었던 문제
여러 개의 컴포넌트가 동일한 구조를 갖는 경우에는 로직을 분리하는 것이 좋다.
unicode 에러가 날 때의 해결 방법을 알아 보자.
git clone 과정에서 permission denied 에러 해결 방법
Python을 이용하여 크롤링할 때의 팁
파이썬 Tensorflow 2.x 버전 사용법 이해하기
웹 크롤링을 위해 알아 본 파이썬에서의 Selenium 사용법
«VCS» 기억해야 할 git 활용 방법