<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
      <title>이주호 · 개발 블로그</title>
      <link>https://lsc713.github.io/quarSync</link>
      <description>최근 10 건 on 이주호 · 개발 블로그</description>
      <generator>Quartz -- quartz.jzhao.xyz</generator>
      <item>
    <title>이주호 · 개발 블로그</title>
    <link>https://lsc713.github.io/quarSync/</link>
    <guid>https://lsc713.github.io/quarSync/</guid>
    <description><![CDATA[ 이주호 — 백엔드 개발자 Java·Spring / TypeScript·NestJS 기반 백엔드 개발자입니다. 트랜잭션·정합성·성능 최적화에 관심이 많고, 학습한 것을 기록으로 남깁니다. ]]></description>
    <pubDate>Wed, 08 Jul 2026 04:12:55 GMT</pubDate>
  </item><item>
    <title>17. 두 번 뺐는데 한 번만 빠졌다 — 격리수준이 지키는 것과 안 지키는 것</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/17.%EB%91%90-%EB%B2%88-%EB%BA%90%EB%8A%94%EB%8D%B0-%ED%95%9C-%EB%B2%88%EB%A7%8C-%EB%B9%A0%EC%A1%8C%EB%8B%A4</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/17.%EB%91%90-%EB%B2%88-%EB%BA%90%EB%8A%94%EB%8D%B0-%ED%95%9C-%EB%B2%88%EB%A7%8C-%EB%B9%A0%EC%A1%8C%EB%8B%A4</guid>
    <description><![CDATA[  핵심 한 줄 지금까지 낙관·비관·원자적 락을 세 번이나 비교했지만, 정작 그것들이 서 있는 땅 — 격리수준 — 을 안 밟아봤다. ]]></description>
    <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>12. 가짜는 내가 시킨 답만 한다 — 설계를 진짜 PG에 붙이기</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/12.%EA%B0%80%EC%A7%9C%EB%8A%94-%EB%82%B4%EA%B0%80-%EC%8B%9C%ED%82%A8-%EB%8B%B5%EB%A7%8C-%ED%95%9C%EB%8B%A4</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/12.%EA%B0%80%EC%A7%9C%EB%8A%94-%EB%82%B4%EA%B0%80-%EC%8B%9C%ED%82%A8-%EB%8B%B5%EB%A7%8C-%ED%95%9C%EB%8B%A4</guid>
    <description><![CDATA[  핵심 한 줄 7·8편의 외부호출 설계는 전부 Fake 어댑터 위에서 그렸다. 그런데 Fake는 내가 정해준 답만 돌려준다 — 타임아웃도, 인증 실패도, 멱등도 전부 ‘가정’이었을 뿐이다. ]]></description>
    <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>13. 분명히 잡았는데 터졌다 — 트랜잭션은 한 몸이거나, 남이거나</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/13.%EB%B6%84%EB%AA%85%ED%9E%88-%EC%9E%A1%EC%95%98%EB%8A%94%EB%8D%B0-%ED%84%B0%EC%A1%8C%EB%8B%A4</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/13.%EB%B6%84%EB%AA%85%ED%9E%88-%EC%9E%A1%EC%95%98%EB%8A%94%EB%8D%B0-%ED%84%B0%EC%A1%8C%EB%8B%A4</guid>
    <description><![CDATA[  핵심 한 줄 기본 @Transactional은 얽힌 모든 작업을 한 트랜잭션으로 묶는다 — 한 곳이 실패하면 전부 롤백(all-or-nothing). 그런데 감사 로그처럼 “본체가 실패해도 남아야” 하는 것은 어쩌나. ]]></description>
    <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>14. 5개 주세요 했는데 5만 개를 읽었다 — fetch join의 페이징 함정</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/14.5%EA%B0%9C-%EC%A3%BC%EC%84%B8%EC%9A%94-%ED%96%88%EB%8A%94%EB%8D%B0-5%EB%A7%8C-%EA%B0%9C%EB%A5%BC-%EC%9D%BD%EC%97%88%EB%8B%A4</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/14.5%EA%B0%9C-%EC%A3%BC%EC%84%B8%EC%9A%94-%ED%96%88%EB%8A%94%EB%8D%B0-5%EB%A7%8C-%EA%B0%9C%EB%A5%BC-%EC%9D%BD%EC%97%88%EB%8B%A4</guid>
    <description><![CDATA[  핵심 한 줄 9편에서 fetch join으로 N+1을 잡았다. 그런데 그 fetch join에 페이징을 얹는 순간 함정이 열린다 — 조인은 행을 뻥튀기해서 LIMIT을 걸 수 없고, Hibernate는 전체를 메모리에 올린 뒤 잘라낸다(HHH90003004). ]]></description>
    <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>15. 순수하게 만들었더니 저장이 사라졌다 — 헥사고날의 대가</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/15.%EC%88%9C%EC%88%98%ED%95%98%EA%B2%8C-%EB%A7%8C%EB%93%A4%EC%97%88%EB%8D%94%EB%8B%88-%EC%A0%80%EC%9E%A5%EC%9D%B4-%EC%82%AC%EB%9D%BC%EC%A1%8C%EB%8B%A4</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/15.%EC%88%9C%EC%88%98%ED%95%98%EA%B2%8C-%EB%A7%8C%EB%93%A4%EC%97%88%EB%8D%94%EB%8B%88-%EC%A0%80%EC%9E%A5%EC%9D%B4-%EC%82%AC%EB%9D%BC%EC%A1%8C%EB%8B%A4</guid>
    <description><![CDATA[  핵심 한 줄 7편에서 외부호출을 Port/Adapter로 떼어냈다. 이번엔 도메인 전체를 프레임워크에서 떼어낸다 — @Entity를 지운 순수 도메인 + 매핑 전담 엔티티 + 그 사이 매퍼. ]]></description>
    <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>16. 설정 한 줄 바꿨더니 세 번 터졌다 — 로컬에서 분산 캐시로</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/16.%EC%84%A4%EC%A0%95-%ED%95%9C-%EC%A4%84-%EB%B0%94%EA%BF%A8%EB%8D%94%EB%8B%88-%EC%84%B8-%EB%B2%88-%ED%84%B0%EC%A1%8C%EB%8B%A4</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/16.%EC%84%A4%EC%A0%95-%ED%95%9C-%EC%A4%84-%EB%B0%94%EA%BF%A8%EB%8D%94%EB%8B%88-%EC%84%B8-%EB%B2%88-%ED%84%B0%EC%A1%8C%EB%8B%A4</guid>
    <description><![CDATA[  핵심 한 줄 11편에서 “코드는 그대로, 설정 한 줄로 선반(Caffeine→Redis)만 갈아끼운다”고 예고했다. ]]></description>
    <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>00. 서문 — 불변식·경합·경계, 백엔드를 카타로 쌓다</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/00.%EC%B9%B4%ED%83%80-%EC%84%9C%EB%AC%B8</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/00.%EC%B9%B4%ED%83%80-%EC%84%9C%EB%AC%B8</guid>
    <description><![CDATA[  핵심 한 줄 기능을 하나 더 만드는 게 아니라 틀리기 쉬운 지점을 골라 반복한다. 백엔드 설계는 결국 세 개의 질문으로 압축된다 — “불변식을 누가 지키나(L1·L2)”, “동시에 오면(L3 경합)”, “두 번 오면 / 트랜잭션 밖으로 나가면(L3 경계)“. ]]></description>
    <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>01. 돈을 primitive로 두면 언젠가 샌다 — 값 객체</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/01.%EB%8F%88%EC%9D%84-primitive%EB%A1%9C-%EB%91%90%EB%A9%B4-%EC%96%B8%EC%A0%A0%EA%B0%80-%EC%83%8C%EB%8B%A4</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/01.%EB%8F%88%EC%9D%84-primitive%EB%A1%9C-%EB%91%90%EB%A9%B4-%EC%96%B8%EC%A0%A0%EA%B0%80-%EC%83%8C%EB%8B%A4</guid>
    <description><![CDATA[  핵심 한 줄 돈을 long이나 double로 두면 타입이 아무것도 막아주지 않는다 — 부동소수 오차가 새고, 단위를 헷갈리고, 음수가 슬쩍 들어온다. 그래서 돈을 값 객체 Money로 만든다. 값으로 동등하고, 불변이며, 스스로를 방어하는 벽돌 하나. ]]></description>
    <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>02. 불변식은 누가 지키나 — 애그리거트 루트</title>
    <link>https://lsc713.github.io/quarSync/posts/Kata/02.%EB%B6%88%EB%B3%80%EC%8B%9D%EC%9D%80-%EB%88%84%EA%B0%80-%EC%A7%80%ED%82%A4%EB%82%98</link>
    <guid>https://lsc713.github.io/quarSync/posts/Kata/02.%EB%B6%88%EB%B3%80%EC%8B%9D%EC%9D%80-%EB%88%84%EA%B0%80-%EC%A7%80%ED%82%A4%EB%82%98</guid>
    <description><![CDATA[  핵심 한 줄 “주문 총액 = 라인 합”이라는 불변식을 서비스에서 for로 더하는 순간 불변식은 서비스로 샌다. 총액 계산과 그걸 지키는 규칙을 한 경계 안에 넣는 진입점이 애그리거트 루트다. ]]></description>
    <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
  </item>
    </channel>
  </rss>