Skip to content

태그: 공부

총 4개의 글이 있습니다.
strace로 shaka-packager 버그 추적
공부
shaka-packager CLI를 사용해 여러 스레드에서 패키징 작업을 병렬로 실행하는 코드가 있었는데, 몇몇 스레드에서 간헐적으로 실패하는 버그가 발생했다. 대부분 mp4 파일 두 개까지는 잘 생성되다가 마지막 파일에서 실패하고, 재시도하면 또 성공하기도 하는 그런 종류의 버그였다. 에러 상황을 단순화하면 이런 식이었다: 1.mp4 처리 시작2.mp4 처리 시작3.mp4 처리 시작2.mp4 출력 파일 생성 완료1.mp4 출력 파일 생성 완료3.mp4 출력 파일 생성 실패: Packaging Error: 5 (FILE_FAILURE) Cannot open file to write 두 개까지는 잘 되다가 주로 마지막 하나에서 에러 코드 5번 FILE_FAILURE가 났다. shaka-packager에서 파일
정수론부터 RSA까지
공부
RSA는 대표적인 비대칭 암호화 방식 중 하나이다. RSA의 기반이 되는 정수론 개념과 암호화 원리를 알아보자. 군 RSA를 이해하기 위해선 우선 군(group)이 무엇인지 알아야 한다. 오늘날 RSA를 비롯한 많은 암호화 방식이 군론을 기반으로 한다. 개념은 어렵지 않다. 군이란, 아래 규칙에 맞게 원소의 집합과 연산(덧셈, 곱셈)을 정의한 것이다. 닫힘: 집합 안의 두 원소를 연산했을 때, 그 결과가 군 안에 속해야 한다. 결합법칙: 여러 원소에 대한 연산을 임의의 순서로 수행할 수 있다. (e.g. (a+b)+c = a+(b+c)) 항등원: 특정 원소와 항등원을 연산한 결과가 그 원소 자신이 되어야 한다. (e.g. a+0=a, 이 경우 항등원 0이 군 내에 존재함) 역원: 두 원소를 연산한 결과가
eBPF로 서버 성능 Profiling하는 법: Pyroscope의 구현 살펴보기
공부
eBPF를 사용한 모니터링을 공부하며 Pyroscope의 eBPF 기능에 관심이 생겼다. 구현 코드를 살펴보면서 eBPF를 활용하는 방법과 그에 연관된 Linux 기능을 익힐 수 있었는데, 내용을 되새기기 위해 공부했던 부분을 전체적으로 풀어 설명해보려 한다. 우선 관련된 기술 배경부터 알아보자. Pyroscope Grafana Pyroscope는 애플리케이션을 지속적으로 프로파일링하는 오픈소스 플랫폼이다. 프로파일링(profiling)이란? 프로그램을 실행하면서 성능을 측정하고, 분석하는 행위를 프로파일링이라고 한다. 함수 혹은 메소드가 CPU를 얼마나 오랫동안 사용하는가, 얼마나 많이 호출되는가 메모리를 얼마나 자주 할당 및 해제하는가, 얼마나 많이 할당하느냐 와 같은 정보를 측정한다. 애플리
spot 인스턴스에서 서버 가용성 개선하기
공부
개요 대덕SW마이스터고 동아리에서 개발한 4개의 교내 서비스(약 250명의 교사와 학생이 사용 중)를 대상으로 서비스 인프라를 통합하는 프로젝트를 진행했다. 이 프로젝트에서 Karpenter를 코드를 커스텀하여, Spot 인스턴스 환경의 Replica 1인 Deployment의 가용성을 96% -99.95%로 개선한 과정을 설명하는 글이다. 문제 상황 해당 인프라에선 각 동아리가 새 프로젝트를 개발할 때마다 배포할 수 있어야 했기 때문에, 자주 변동하는 컨테이너, 컴퓨팅 리소스를 쉽게 관리하기 위해 Kubernetes(EKS)를 사용하였다. 초기에 가용성을 크게 고려하지 않고 각 Deployment의 Replica 수를 1로 유지했음에도, 수십개 컨테이너를 실행하기엔 서버비 예산에 압박이 있었다. 따라서 모