💻 개발 노트 & 윈도우 시스템 최적화 기술 칼럼

SOMETESTER HUB의 유틸리티(SMC Archiver, cBrowser, Bad Apple 렌더러)를 직접 개발하며 겪은 소프트웨어 엔지니어링 과제와 Windows 운영체제 환경 최적화 원리를 깊이 있게 다룬 오리지널 기술 칼럼입니다.

Rust 기반 멀티스레드 압축기(SMC Archiver)의 스트리밍 I/O 파이프라인 설계

수만 개의 작은 소스코드 파일이나 수 기가바이트 규모의 게임·미디어 에셋 폴더를 압축할 때, 전통적인 단일 스레드 아카이버는 디스크 읽기(Read) 대기 시간과 압축 연산(CPU) 대기 시간이 순차적으로 누적되면서 심각한 병목 현상을 겪습니다. SMC Archiver v1.1.0은 이를 해결하기 위해 Rust 언어의 소유권(Ownership) 모델과 멀티코어 스레드 풀을 결합하여 설계되었습니다.

1. 고정 크기 청크(Chunk) 스트리밍과 메모리 안정성

대용량 파일을 처리할 때 파일 전체를 한 번에 Vec<u8> 버퍼로 적재하면 4GB~8GB RAM을 탑재한 보급형 노트북에서는 즉각적인 메모리 부족(Out of Memory)이나 페이지 파일 스와핑이 발생합니다. SMC Archiver는 내부 입출력 루프를 고정 크기 스트리밍 버퍼로 분리하여, 압축 대상 파일이 10MB이든 10GB이든 런타임 메모리 점유율이 일정한 상한선 내에 머물도록 제어합니다.

// 스트리밍 버퍼 기반 청크 읽기 개념 구조
const CHUNK_SIZE: usize = 64 * 1024; // 64KB 고정 버퍼
let mut buffer = [0u8; CHUNK_SIZE];
while let Ok(bytes_read) = reader.read(&mut buffer) {
    if bytes_read == 0 { break; }
    compressor.write_all(&buffer[..bytes_read])?;
}

2. 단일 실행 바이너리(Zero-Dependency) 배포 전략

사용자가 별도의 Visual C++ 재배포 가능 패키지나 런타임을 설치하지 않아도 되도록 정적 링크(Static Linking) 최적화를 적용해 6.5MB 단일 실행 파일로 빌드했습니다. 덕분에 제한된 사용자 환경에서도 폴더에 복사하는 것만으로 즉시 모든 기능을 사용할 수 있습니다.

cBrowser v1.5.3 개발기: 렌더러 메모리 누수 방어와 로컬 URI 라우팅 개선

현대적인 웹 브라우저는 탭마다 독립된 렌더러 프로세스, GPU 가속 프로세스, 백그라운드 텔레메트리(원격 분석) 서비스, 확장 프로그램 호스트를 동시에 실행합니다. 고사양 데스크톱에서는 문제가 되지 않지만, 저사양 노트북에서는 브라우저 창 몇 개만 열어도 시스템 전체가 느려지는 원인이 됩니다.

1. 주소창 입력 파서(Address Bar Parser)의 로컬 경로 오판 문제 해결

초기 버전의 cBrowser에서는 사용자가 주소창에 로컬 디스크 경로(예: C:\Users\Documents\index.html)나 로컬 개발 서버(localhost:3000)를 입력했을 때, 이를 일반 검색어로 오인하여 외부 검색 엔진으로 리디렉션하는 문제가 있었습니다. v1.5.3 업데이트에서는 입력 문자열에 대해 정규식 기반 드라이브 문자 감지(/^[a-zA-Z]:[\\/]/)와 루프백 호스트 감지를 선행 수행하여 로컬 파일 프로토콜(file:///)과 로컬 서버로 정확히 라우팅되도록 패치했습니다.

2. 백그라운드 리소스 정리 및 가비지 컬렉션 주기 최적화

장시간 브라우저를 켜두었을 때 비활성 DOM 노드와 이미지 캐시가 메모리에 계속 남는 현상을 방지하기 위해, 페이지 이동 및 탭 닫기 이벤트 발생 시 캐시 핸들을 즉시 해제하도록 생명주기 관리를 강화했습니다.

Windows 표준 사용자 권한(Standard User)과 관리자 권한(UAC)의 차이 및 포터블 앱 구동 원리

윈도우 운영체제는 시스템 핵심 영역을 보호하기 위해 사용자 계정의 권한 토큰을 표준 권한 토큰(Standard Token)과 관리자 권한 토큰(Elevated Administrator Token)으로 엄격히 분리합니다. 왜 어떤 프로그램은 설치 없이 바로 켜지고, 어떤 프로그램은 관리자 권한 확인 창(UAC)을 띄우는지 이해하면 다양한 실행 오류를 쉽게 해결할 수 있습니다.

보안 DNS(DNS over HTTPS, DoH)의 작동 원리와 웹 접속 지연 해결

웹 브라우저에 도메인 주소를 입력했을 때 실제 서버 IP 주소를 찾아가는 과정을 DNS 이름 풀이(DNS Resolution)라고 합니다. 기존 UDP 53번 포트 기반의 일반 DNS는 평문(Plaintext)으로 전송되기 때문에 네트워크 장비의 상태나 ISP의 기본 DNS 서버 부하에 따라 응답 지연이나 연결 실패가 자주 발생합니다.

브라우저 설정에서 제공하는 보안 DNS(DoH)를 활성화하고 Cloudflare(1.1.1.1)나 Google(8.8.8.8)을 지정하면, DNS 질의 패킷이 표준 HTTPS(포트 443, TLS 암호화) 스트림 내부에 캡슐화되어 전송됩니다. 이를 통해 응답 속도가 빨라질 뿐 아니라 중간 경로에서의 패킷 손실이나 변조로 인한 접속 오류를 효과적으로 예방할 수 있습니다.

단일 실행 미디어 렌더러(Bad Apple 데모)의 제로 코덱 프레임 동기화 기법

윈도우 환경에서 영상과 음악을 재생하는 가장 흔한 방법은 시스템에 설치된 DirectShow/Media Foundation 코덱을 호출하는 것입니다. 하지만 PC마다 설치된 코덱 팩이 다르면 화면이 나오지 않거나 소리와 영상 싱크가 어긋나는 문제가 발생합니다.

SOMETESTER HUB에서 배포하는 Bad Apple 데모는 외부 코덱 의존성을 완전히 제거하고, 오디오 버퍼의 재생 타임스탬프(Audio Clock)를 마스터 타이머로 삼아 매 프레임의 렌더링 시점을 계산(Frame Pacing)하도록 설계되었습니다. 만약 순간적인 CPU 부하로 특정 프레임 렌더링이 지연되면 다음 프레임의 대기 시간을 동적으로 보정하여 끝까지 정확한 오디오-비주얼 싱크를 유지합니다.