<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Isaac's Tech Blog</title><link href="https://blog.i544c.com/" rel="alternate"></link><link href="https://blog.i544c.com/feeds/all.atom.xml" rel="self"></link><id>https://blog.i544c.com/</id><updated>2026-08-19T21:30:00+09:00</updated><entry><title>Firestore Deep Dive - Part 2: 확장 한계와 워밍업</title><link href="https://blog.i544c.com/firestore-deep-dive-part-2.html" rel="alternate"></link><published>2026-08-19T21:30:00+09:00</published><updated>2026-08-19T21:30:00+09:00</updated><author><name>Isaac Park</name></author><id>tag:blog.i544c.com,2026-08-19:/firestore-deep-dive-part-2.html</id><summary type="html">&lt;p&gt;Firestore는 용량을 미리 잡아둘 수 없어서 런칭 순간의 급증에 429로 응답합니다. split이 부하를 보고 생긴다는 가설을 외부 프로브의 p95로 검증하고, 100K ops/s까지 데운 실측과 그 과정에서 드러난 워밍업의 한계를 정리합니다.&lt;/p&gt;</summary><category term="database"></category><category term="firestore"></category><category term="spanner"></category><category term="gcp"></category><category term="load-test"></category><category term="performance"></category></entry><entry><title>Firestore Deep Dive - Part 1: 역사, 구조, 그리고 Spanner</title><link href="https://blog.i544c.com/firestore-deep-dive-part-1.html" rel="alternate"></link><published>2026-08-19T21:00:00+09:00</published><updated>2026-08-19T21:00:00+09:00</updated><author><name>Isaac Park</name></author><id>tag:blog.i544c.com,2026-08-19:/firestore-deep-dive-part-1.html</id><summary type="html">&lt;p&gt;Firestore가 Megastore 위의 Datastore에서 출발해 Spanner 위로 다시 구현되기까지의 역사와, 문서 DB로서의 특성, 그리고 그 아래 Spanner의 키 공간·split·Paxos·TrueTime이 읽기와 쓰기 한 건에 어떻게 관여하는지를 정리합니다.&lt;/p&gt;</summary><category term="database"></category><category term="firestore"></category><category term="spanner"></category><category term="gcp"></category><category term="nosql"></category><category term="distributed-systems"></category></entry><entry><title>OpenTelemetry + Langfuse 분산추적 시스템 구축</title><link href="https://blog.i544c.com/opentelemetry-langfuse-bunsancujeog-siseutem-gucug.html" rel="alternate"></link><published>2026-05-21T14:00:00+09:00</published><updated>2026-05-29T18:24:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2026-05-21:/opentelemetry-langfuse-bunsancujeog-siseutem-gucug.html</id><summary type="html">&lt;p&gt;LLM 서비스에 분산 추적을 붙이는 과정을 정리합니다. logs·metrics·traces와 W3C Trace Context, OpenTelemetry의 아키텍처·OTLP·SDK 구성과 instrumentation, 그리고 Langfuse와 ClickHouse 활용·최적화를 다룹니다.&lt;/p&gt;</summary><category term="infra"></category><category term="backend"></category><category term="infra"></category><category term="observability"></category><category term="llm"></category></entry><entry><title>무거운 SQL 쿼리 최적화: 5초 -&gt; 300ms 개선과정</title><link href="https://blog.i544c.com/mugeoun-sql-kweori-coejeoghwa-5co-300ms-gaeseongwajeong.html" rel="alternate"></link><published>2026-03-12T16:52:00+09:00</published><updated>2026-03-12T16:52:00+09:00</updated><author><name>Isaac Park</name></author><id>tag:blog.i544c.com,2026-03-12:/mugeoun-sql-kweori-coejeoghwa-5co-300ms-gaeseongwajeong.html</id><summary type="html">&lt;p&gt;관리자 목록 조회의 5초짜리 SQL 병목을 프로파일링으로 원인을 분해하고, 불필요한 JOIN·ORM 로딩·N+1 쿼리를 제거해 300ms대로 개선한 최적화 사례&lt;/p&gt;</summary><category term="markdown"></category><category term="sql"></category><category term="optimization"></category><category term="profile"></category></entry><entry><title>맥북 화면 잠금 + 원격 제어: Claude Code 무인 실행 가이드</title><link href="https://blog.i544c.com/maegbug-hwamyeon-jamgeum-weongyeog-jeeo-claude-code-muin-silhaeng-gaideu.html" rel="alternate"></link><published>2026-03-09T19:00:00+09:00</published><updated>2026-03-10T11:39:00+09:00</updated><author><name>Isaac Park</name></author><id>tag:blog.i544c.com,2026-03-09:/maegbug-hwamyeon-jamgeum-weongyeog-jeeo-claude-code-muin-silhaeng-gaideu.html</id><summary type="html">&lt;p&gt;MacBook을 잠금 상태로 두면서 Claude Code를 계속 실행하고, 스마트폰으로 원격 제어하는 방법을 caffeinate와 Remote Control로 구성하는 가이드.&lt;/p&gt;</summary><category term="agent"></category><category term="ai"></category><category term="tools"></category><category term="macbook"></category></entry><entry><title>(Telepresence OSS 대안) Istio(mTLS) 서비스메시 환경에서 mirrord로 로컬 개발 루프 구성하기</title><link href="https://blog.i544c.com/telepresence-oss-daean-istiomtls-seobiseumesi-hwangyeongeseo-mirrordro-rokeol-gaebal-rupeu-guseonghagi.html" rel="alternate"></link><published>2026-02-23T17:15:00+09:00</published><updated>2025-02-23T17:15:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2026-02-23:/telepresence-oss-daean-istiomtls-seobiseumesi-hwangyeongeseo-mirrordro-rokeol-gaebal-rupeu-guseonghagi.html</id><summary type="html">&lt;p&gt;Istio(mTLS) 서비스메시에서 Telepresence OSS의 intercept가 깨지는 원인을 사이드카 구조 관점에서 분석하고, mirrord로 전환한 이유와 내부 동작, mirrord-config.json과 Makefile을 포함한 실사용 튜토리얼을 정리합니다.&lt;/p&gt;</summary><category term="development"></category><category term="Kubernetes"></category><category term="Dev Tool"></category></entry><entry><title>Telepresence OSS: 로컬 개발환경 Kubernetes Cluster Network에 “붙이는” 방법</title><link href="https://blog.i544c.com/telepresence-oss-rokeol-gaebalhwangyeong-kubernetes-cluster-networke-butineun-bangbeob.html" rel="alternate"></link><published>2026-01-15T19:01:00+09:00</published><updated>2026-01-19T11:25:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2026-01-15:/telepresence-oss-rokeol-gaebalhwangyeong-kubernetes-cluster-networke-butineun-bangbeob.html</id><summary type="html">&lt;p&gt;VPN으로 Kubernetes API에 접근 가능한 macOS 개발 머신을 클러스터 네트워크에 붙이는 방법을 정리합니다. Telepresence OSS의 DNS 해석·ClusterIP 접근·intercept 동작과 아키텍처, 설치부터 검증까지의 튜토리얼을 다룹니다.&lt;/p&gt;</summary><category term="devops"></category><category term="kubernetes"></category><category term="k8s"></category><category term="dns"></category><category term="tunnel"></category><category term="remote access"></category><category term="vpn"></category></entry><entry><title>How OS Boots Up - Part 1</title><link href="https://blog.i544c.com/how-os-boots-up-part-1.html" rel="alternate"></link><published>2025-09-08T11:59:00+09:00</published><updated>2025-09-08T14:59:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2025-09-08:/how-os-boots-up-part-1.html</id><summary type="html">&lt;p&gt;BIOS와 MBR을 쓰는 x86-32 레거시 부팅 과정을 Windows NT 기준으로 따라갑니다. power-on 이후 BIOS ROM 초기화, real mode의 MBR 실행과 IVT, NTLDR의 protected mode 전환과 IDT 설정까지 다룹니다.&lt;/p&gt;</summary><category term="os"></category><category term="os"></category><category term="system"></category></entry><entry><title>PyCon Korea 2025 발표</title><link href="https://blog.i544c.com/pycon-korea-2025-balpyo.html" rel="alternate"></link><published>2025-08-22T09:06:00+09:00</published><updated>2025-08-22T09:06:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2025-08-22:/pycon-korea-2025-balpyo.html</id><summary type="html">&lt;p&gt;PyCon Korea 2025에서 블로그에 정리했던 branchless programming과 cache prefetching을 Python 최적화 응용까지 엮어 발표했습니다. 발표 후기와 함께 사용한 슬라이드·발표 노트를 공유합니다.&lt;/p&gt;</summary><category term="python"></category><category term="python"></category><category term="optimization"></category><category term="cpu pipeline"></category><category term="cache"></category><category term="jit"></category></entry><entry><title>Unicode Byte Order Mark(BOM)</title><link href="https://blog.i544c.com/unicode-byte-order-markbom.html" rel="alternate"></link><published>2025-07-28T04:21:00+09:00</published><updated>2025-07-28T04:29:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2025-07-28:/unicode-byte-order-markbom.html</id><summary type="html">&lt;p&gt;UTF-8·UTF-16·UTF-32 파일 앞에 붙는 BOM이 무엇이고 왜 필요한지 signature별 바이트 패턴과 장단점으로 정리하고, hex viewer·VS Code·charset-normalizer로 탐지하고 Python open()으로 안전하게 읽는 방법을 다룹니다.&lt;/p&gt;</summary><category term="backend"></category><category term="format"></category><category term="encoding"></category><category term="unicode"></category></entry><entry><title>MySQL(8.0+) "EXPLAIN" Explained</title><link href="https://blog.i544c.com/mysql80-explain-explained.html" rel="alternate"></link><published>2025-06-30T13:15:00+09:00</published><updated>2025-06-30T13:26:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2025-06-30:/mysql80-explain-explained.html</id><summary type="html">&lt;p&gt;MySQL 8.0의 EXPLAIN과 EXPLAIN ANALYZE로 실행 계획을 읽는 방법을 정리합니다. type·key·rows·filtered·Extra 컬럼의 의미를 짚고, 풀스캔·filesort·인덱스 미사용·Using temporary를 포함한 6개 최적화 사례를 다룹니다.&lt;/p&gt;</summary><category term="backend"></category><category term="mysql"></category><category term="optimization"></category><category term="backend"></category><category term="database"></category></entry><entry><title>부동소수점(float) 정밀도와 Decimal/Bigint가 필요한 이유</title><link href="https://blog.i544c.com/budongsosujeomfloat-jeongmildowa-decimalbigintga-pilyohan-iyu.html" rel="alternate"></link><published>2025-05-19T13:32:00+09:00</published><updated>2025-05-19T14:24:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2025-05-19:/budongsosujeomfloat-jeongmildowa-decimalbigintga-pilyohan-iyu.html</id><summary type="html">&lt;p&gt;0.1 + 0.2가 왜 딱 떨어지지 않는지 float의 내부 표현으로 설명하고, 반복 덧셈과 연산 순서에 따라 오차가 커지는 과정, Decimal과 BigInt의 내부 구현과 사용법, 그리고 수치 오차로 장애가 났던 실무 사례를 정리합니다.&lt;/p&gt;</summary><category term="data"></category><category term="data structure"></category></entry><entry><title>django migration unittest 및 트러블슈팅</title><link href="https://blog.i544c.com/django-migration-unittest-mic-teureobeulsyuting.html" rel="alternate"></link><published>2025-04-03T16:47:00+09:00</published><updated>2025-04-07T07:32:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2025-04-03:/django-migration-unittest-mic-teureobeulsyuting.html</id><summary type="html">&lt;p&gt;pytest-django로 Django 마이그레이션 스크립트를 검증하는 방법을 정리합니다. 스키마·데이터 마이그레이션 테스트 코드 작성 시나리오와 pytest 설정, 그리고 teardown·실행 순서에서 겪은 트러블슈팅과 해결 방안을 다룹니다.&lt;/p&gt;</summary><category term="backend"></category><category term="backend"></category><category term="database"></category><category term="django"></category><category term="migration"></category><category term="unittest"></category><category term="pytest"></category><category term="pytest-django"></category></entry><entry><title>Model Context Protocol(MCP) 소개: 개념, 기술 구조와 활용 사례</title><link href="https://blog.i544c.com/model-context-protocolmcp-sogae-gaenyeom-gisul-gujowa-hwalyong-sarye.html" rel="alternate"></link><published>2025-03-24T14:47:00+09:00</published><updated>2025-03-24T15:01:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2025-03-24:/model-context-protocolmcp-sogae-gaenyeom-gisul-gujowa-hwalyong-sarye.html</id><summary type="html">&lt;p&gt;Anthropic이 공개한 MCP가 M×N 통합 문제를 어떻게 풀어내는지, 프로토콜의 프리미티브와 컨텍스트 표현 방식, 날씨 정보를 가져오는 요청/응답 예시, 그리고 최근 주목받는 이유와 활용 사례를 정리합니다.&lt;/p&gt;</summary><category term="ai"></category><category term="backend"></category><category term="llm"></category></entry><entry><title>LLM embedding &amp; vector database의 소개</title><link href="https://blog.i544c.com/llm-embedding-vector-databaseyi-sogae.html" rel="alternate"></link><published>2024-12-30T13:10:00+09:00</published><updated>2024-12-30T13:39:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2024-12-30:/llm-embedding-vector-databaseyi-sogae.html</id><summary type="html">&lt;p&gt;LLM 임베딩의 정의와 진화 과정, 레이어 선택·풀링으로 임베딩을 추출하는 방법, 단어/문장/문서 수준 임베딩의 차이, 벡터 DB의 역할과 아키텍처, 유사도 지표와 ANN 기법까지 정리합니다.&lt;/p&gt;</summary><category term="database"></category><category term="algorithm"></category><category term="database"></category></entry><entry><title>OS API와 Overhead의 이해</title><link href="https://blog.i544c.com/os-apiwa-overheadyi-ihae.html" rel="alternate"></link><published>2024-12-16T13:52:00+09:00</published><updated>2024-12-16T14:47:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2024-12-16:/os-apiwa-overheadyi-ihae.html</id><summary type="html">&lt;p&gt;유저 모드와 커널 모드가 나뉘는 이유와 user-kernel 경계를 넘을 때 드는 비용을 Win32 syscall 기준으로 정리하고, 호출 빈도·호출당 작업량 관점의 완화 전략과 IPC·공유 메모리 벤치마크 결과를 함께 다룹니다.&lt;/p&gt;</summary><category term="performance"></category><category term="backend"></category><category term="performance"></category></entry><entry><title>Context Switch: 프로세스, 스레드 및 오버헤드 이해하기</title><link href="https://blog.i544c.com/context-switch-peuroseseu-seuredeu-mic-obeohedeu-ihaehagi.html" rel="alternate"></link><published>2024-11-18T11:33:00+09:00</published><updated>2024-11-19T08:38:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2024-11-18:/context-switch-peuroseseu-seuredeu-mic-obeohedeu-ihaehagi.html</id><summary type="html">&lt;p&gt;컨텍스트 스위칭이 왜 필요하고 CPU·OS가 상태를 어떻게 저장·복원하는지, 프로세스·스레드·경량 스레드의 오버헤드를 비교하고 Python에서 비동기·멀티프로세싱으로 스위칭을 줄이는 방법을 정리합니다.&lt;/p&gt;</summary><category term="performance"></category><category term="backend"></category><category term="performance"></category><category term="profiling"></category><category term="python"></category></entry><entry><title>Branchless Programming</title><link href="https://blog.i544c.com/branchless-programming.html" rel="alternate"></link><published>2024-10-21T14:19:00+09:00</published><updated>2024-10-21T15:44:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2024-10-21:/branchless-programming.html</id><summary type="html">&lt;p&gt;CPU 파이프라인과 분기 예측이 실패할 때 드는 패널티를 짚고, 분기를 제거하는 구체적인 기법과 SIMD와의 관계, 실제 예제와 측정 도구, 그리고 branchless 코드가 오히려 불리해지는 경우까지 정리합니다.&lt;/p&gt;</summary><category term="performance"></category><category term="algorithm"></category><category term="backend"></category><category term="performance"></category></entry><entry><title>Cache prefetching과 sequential processing의 장점</title><link href="https://blog.i544c.com/cache-prefetchinggwa-sequential-processingyi-jangjeom.html" rel="alternate"></link><published>2024-10-07T14:56:00+09:00</published><updated>2024-10-11T10:45:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2024-10-07:/cache-prefetchinggwa-sequential-processingyi-jangjeom.html</id><summary type="html">&lt;p&gt;CPU 캐시의 동작 원리와 하드웨어·소프트웨어 프리패칭 기법을 정리하고 순차 처리가 왜 유리한지 짚습니다. numpy로 순차 접근과 랜덤 접근의 속도 차이를, 그리고 순차 검색이 이진 검색보다 빠른 경우를 실측으로 확인합니다.&lt;/p&gt;</summary><category term="기술스택"></category><category term="backend"></category><category term="data structure"></category><category term="profiling"></category><category term="python"></category></entry><entry><title>Loki 소개 및 로그시스템 구축</title><link href="https://blog.i544c.com/loki-sogae-mic-rogeusiseutem-gucug.html" rel="alternate"></link><published>2024-08-08T14:56:00+09:00</published><updated>2024-08-19T17:13:00+09:00</updated><author><name>박이삭</name></author><id>tag:blog.i544c.com,2024-08-08:/loki-sogae-mic-rogeusiseutem-gucug.html</id><summary type="html">&lt;p&gt;Grafana Loki로 로그 시스템을 구축한 과정을 정리합니다. Loki의 특징과 컴포넌트 구성, 로그 쿼리·메트릭 쿼리·파싱을 포함한 LogQL 기본 사용법, 그리고 대용량 조회를 위한 bloom filter 활용법을 다룹니다.&lt;/p&gt;</summary><category term="infra"></category><category term="backend"></category><category term="infra"></category><category term="log"></category></entry></feed>