<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://data-sy.github.io/</id><title>이소연의 기술 블로그</title><subtitle>성능·설계 결정을 ADR과 벤치마크로 남기는 백엔드 개발자의 기록.</subtitle> <updated>2026-07-11T03:06:25+09:00</updated> <author> <name>이소연</name> <uri>https://data-sy.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://data-sy.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="ko-KR" href="https://data-sy.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 이소연 </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>도구를 고르는 법 — 두 번 실패하며 배운 것</title><link href="https://data-sy.github.io/posts/choosing-tools-through-failure/" rel="alternate" type="text/html" title="도구를 고르는 법 — 두 번 실패하며 배운 것" /><published>2026-07-11T02:44:00+09:00</published> <updated>2026-07-11T03:06:04+09:00</updated> <id>https://data-sy.github.io/posts/choosing-tools-through-failure/</id> <content type="text/html" src="https://data-sy.github.io/posts/choosing-tools-through-failure/" /> <author> <name>이소연</name> </author> <category term="회고" /> <summary>데이터에 맞는 타입을 고르면 충분할까? 위경도로 거리를 직접 계산한 실패로 '먼저 찾아보는 습관'을 얻었지만, 다음 프로젝트에서 그래프 DB를 고르며 그것만으로는 부족하다는 걸 알았다.</summary> </entry> <entry><title>한정수량 100개짜리 쿠폰이 999개 발급됐다 — 락 사다리 v1에서 v5까지</title><link href="https://data-sy.github.io/posts/coupon-concurrency-lock-ladder/" rel="alternate" type="text/html" title="한정수량 100개짜리 쿠폰이 999개 발급됐다 — 락 사다리 v1에서 v5까지" /><published>2026-06-25T09:00:00+09:00</published> <updated>2026-07-11T03:00:06+09:00</updated> <id>https://data-sy.github.io/posts/coupon-concurrency-lock-ladder/</id> <content type="text/html" src="https://data-sy.github.io/posts/coupon-concurrency-lock-ladder/" /> <author> <name>이소연</name> </author> <category term="백엔드" /> <category term="동시성" /> <summary>락 없이 동시 요청을 흘렸더니 100장짜리 쿠폰이 999장 나갔다. synchronized, DB 행 락, Redis 분산 락까지 다섯 단계를 직접 짜고 측정한 뒤, 가장 단순한 곳으로 한 칸 내려온 기록.</summary> </entry> <entry><title>[AI Assistant #9] 두 번의 리젝을 넘어 출시 — 앱스토어가 알려준 '사용자 중심'</title><link href="https://data-sy.github.io/posts/ai-assistant-9/" rel="alternate" type="text/html" title="[AI Assistant #9] 두 번의 리젝을 넘어 출시 — 앱스토어가 알려준 &amp;apos;사용자 중심&amp;apos;" /><published>2025-09-21T18:26:19+09:00</published> <updated>2026-06-30T01:52:14+09:00</updated> <id>https://data-sy.github.io/posts/ai-assistant-9/</id> <content type="text/html" src="https://data-sy.github.io/posts/ai-assistant-9/" /> <author> <name>이소연</name> </author> <category term="AI Programming" /> <category term="QLT" /> <summary>심사 리젝 두 번을 넘어 드디어 출시. 백그라운드 오디오 옵션, iPad 스크린샷 불일치 등 Apple이 알려준 '사용자 중심' 시각을 정리한 기록.</summary> </entry> <entry><title>[AI Assistant #8] 드디어 출시 준비 — 접근성·크래시 수집부터 앱스토어 심사까지</title><link href="https://data-sy.github.io/posts/ai-assistant-8/" rel="alternate" type="text/html" title="[AI Assistant #8] 드디어 출시 준비 — 접근성·크래시 수집부터 앱스토어 심사까지" /><published>2025-09-14T22:03:17+09:00</published> <updated>2026-06-30T01:52:14+09:00</updated> <id>https://data-sy.github.io/posts/ai-assistant-8/</id> <content type="text/html" src="https://data-sy.github.io/posts/ai-assistant-8/" /> <author> <name>이소연</name> </author> <category term="AI Programming" /> <category term="QLT" /> <summary>남은 버그와 Warning을 정리하고 Crashlytics·VoiceOver를 붙여 v1.0.0을 마무리했다. 앱스토어 메타데이터를 준비해 드디어 심사를 제출한 주.</summary> </entry> <entry><title>[AI Assistant #7] 버그 하나가 부른 연쇄 수정 — Parallel Change로 모델을 안전하게 바꾸자</title><link href="https://data-sy.github.io/posts/ai-assistant-7/" rel="alternate" type="text/html" title="[AI Assistant #7] 버그 하나가 부른 연쇄 수정 — Parallel Change로 모델을 안전하게 바꾸자" /><published>2025-08-31T11:20:05+09:00</published> <updated>2026-06-30T01:52:14+09:00</updated> <id>https://data-sy.github.io/posts/ai-assistant-7/</id> <content type="text/html" src="https://data-sy.github.io/posts/ai-assistant-7/" /> <author> <name>이소연</name> </author> <category term="AI Programming" /> <category term="QLT" /> <summary>버그 하나를 고치자 영속성·UI·정렬·모델 구조까지 연쇄로 흔들렸다. 마틴 파울러의 Parallel Change로 모델 속성을 안전하게 바꾼 과정.</summary> </entry> </feed>
