Skip to content

태그: 공부

총 4개의 글이 있습니다.
strace로 shaka-packager 버그 추적
공부
이 글은 인프랩 기술 블로그에도 게시되었습니다 최근, 로그만으론 도무지 원인을 알 수 없는 오류를 만났다. 이때 strace로 파일 관련 시스템콜을 추적하면서 동시 실행 시 드러나는 에러 처리 버그를 찾아 해결할 수 있었다. 추적하는 과정이 꽤 재미있었기에 그 디버깅 과정을 글로 작성해보았다. shaka-packager를 사용하며 겪은 내용이지만 이 글에선 관련 지식을 다루진 않는다. 개요 개요를 간단하게 설명하면, shaka-packager를 사용하여 영상을 패키징하는 상황이 있었다. 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로 유지했음에도, 수십개 컨테이너를 실행하기엔 서버비 예산에 압박이 있었다. 따라서 모