<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://jo94kr.github.io/</id><title>Jinu's Blog</title><subtitle>Hello World 🫡</subtitle> <updated>2025-07-14T23:31:15+09:00</updated> <author> <name>Jo Jin Woo</name> <uri>https://jo94kr.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://jo94kr.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://jo94kr.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2025 Jo Jin Woo </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>[개발자의 알고리즘 서랍] 첫 번째: '정렬' 을 꺼내다</title><link href="https://jo94kr.github.io/posts/%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%84%9C%EB%9E%8D-%EC%B2%AB-%EB%B2%88%EC%A7%B8-%EC%A0%95%EB%A0%AC-%EC%9D%84-%EA%BA%BC%EB%82%B4%EB%8B%A4/" rel="alternate" type="text/html" title="[개발자의 알고리즘 서랍] 첫 번째: &amp;apos;정렬&amp;apos; 을 꺼내다" /><published>2025-07-14T07:06:44+09:00</published> <updated>2025-07-14T07:06:44+09:00</updated> <id>https://jo94kr.github.io/posts/%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%84%9C%EB%9E%8D-%EC%B2%AB-%EB%B2%88%EC%A7%B8-%EC%A0%95%EB%A0%AC-%EC%9D%84-%EA%BA%BC%EB%82%B4%EB%8B%A4/</id> <content src="https://jo94kr.github.io/posts/%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%84%9C%EB%9E%8D-%EC%B2%AB-%EB%B2%88%EC%A7%B8-%EC%A0%95%EB%A0%AC-%EC%9D%84-%EA%BA%BC%EB%82%B4%EB%8B%A4/" /> <author> <name>Jo Jin Woo</name> </author> <category term="알고리즘" /> <summary>코딩 테스트에서 정렬 문제를 마주했을 때, ‘어떤 정렬을 써야 할까?’ 고민하다 보면 소중한 시간이 흘러갑니다. Arrays.sort()가 대부분의 경우 효과적이지만, 모든 상황에 맞는 만능 열쇠는 아니기에 때로는 다른 접근이 필요할 수 있습니다. 이 글은 실전에서 유용한 정렬 전략을 세우는 데 도움이 될 수 있는 핵심 원칙과 기준을 제시합니다. 내장 함수를 언제 신뢰하면 좋은지, 그리고 어떤 상황에서 직접 구현이 더 효과적인 선택이 될 수 있는지 함께 살펴보겠습니다. ✨ 이 글의 학습 목표 Arrays.sort()가 언제, 왜 빠른지 그 동작 원리를 근거로 설명합니다. 퀵, 병합, 힙 정렬의 장단점을 분석하여, 특정 상황에 어떤 정렬이 더 유리할지 판단합니다. Comparator를 ...</summary> </entry> <entry><title>나도 겪었던 Spring Boot 실수들 - 한 개발자의 회고에 공감하며..</title><link href="https://jo94kr.github.io/posts/%EB%82%98%EB%8F%84-%EA%B2%AA%EC%97%88%EB%8D%98-Spring-Boot-%EC%8B%A4%EC%88%98%EB%93%A4-%ED%95%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%ED%9A%8C%EA%B3%A0%EC%97%90-%EA%B3%B5%EA%B0%90%ED%95%98%EB%A9%B0/" rel="alternate" type="text/html" title="나도 겪었던 Spring Boot 실수들 - 한 개발자의 회고에 공감하며.." /><published>2025-06-04T04:59:33+09:00</published> <updated>2025-06-04T04:59:33+09:00</updated> <id>https://jo94kr.github.io/posts/%EB%82%98%EB%8F%84-%EA%B2%AA%EC%97%88%EB%8D%98-Spring-Boot-%EC%8B%A4%EC%88%98%EB%93%A4-%ED%95%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%ED%9A%8C%EA%B3%A0%EC%97%90-%EA%B3%B5%EA%B0%90%ED%95%98%EB%A9%B0/</id> <content src="https://jo94kr.github.io/posts/%EB%82%98%EB%8F%84-%EA%B2%AA%EC%97%88%EB%8D%98-Spring-Boot-%EC%8B%A4%EC%88%98%EB%93%A4-%ED%95%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98-%ED%9A%8C%EA%B3%A0%EC%97%90-%EA%B3%B5%EA%B0%90%ED%95%98%EB%A9%B0/" /> <author> <name>Jo Jin Woo</name> </author> <category term="Growth Mindset" /> <summary>🖇️ 출처: Don’t Repeat These 5 Costly Spring Boot Mistakes I Made for Years😞 최근 읽은 글 “Don’t Repeat These 5 Costly Spring Boot Mistakes I Made for Years” 에서는 Spring Boot 개발자가 겪기 쉬운 다섯 가지 실수가 잘 정리되어 있었습니다. 그 중, “계획대로 되지 않을 때 예를 들어 새벽 3시에 버그를 고칠 때 비로소 진짜 경험을 얻는다.” 이 문장을 읽는 순간, 정말 많은 상황들이 떠올랐습니다. 개발 당시에는 아무 문제 없어 보였던 코드가, 막상 운영에서 장애를 일으켰고, 그 문제를 추적하면서 왜 그 선택이 잘못됐는지 깨달았던 경험들이 떠올랐기 때문입니다. 이 글에서는 해당 ...</summary> </entry> <entry><title>100개의 실전 Spring Boot API에서 배운 교훈들</title><link href="https://jo94kr.github.io/posts/100%EA%B0%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-Spring-Boot-API%EC%97%90%EC%84%9C-%EB%B0%B0%EC%9A%B4-%EA%B5%90%ED%9B%88%EB%93%A4/" rel="alternate" type="text/html" title="100개의 실전 Spring Boot API에서 배운 교훈들" /><published>2025-06-03T04:50:26+09:00</published> <updated>2025-06-03T04:50:26+09:00</updated> <id>https://jo94kr.github.io/posts/100%EA%B0%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-Spring-Boot-API%EC%97%90%EC%84%9C-%EB%B0%B0%EC%9A%B4-%EA%B5%90%ED%9B%88%EB%93%A4/</id> <content src="https://jo94kr.github.io/posts/100%EA%B0%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-Spring-Boot-API%EC%97%90%EC%84%9C-%EB%B0%B0%EC%9A%B4-%EA%B5%90%ED%9B%88%EB%93%A4/" /> <author> <name>Jo Jin Woo</name> </author> <category term="Growth Mindset" /> <summary>🖇️ 출처: I Built 100 APIs with Spring Boot — Here’s What I Learned the Hard Way 최근 Spring Boot 기반 API 설계에 관한 블로그 글을 읽고, 기술적인 팁을 넘어 실무에 바로 적용할 수 있는 인사이트를 얻을 수 있었습니다. 특히 현재 진행 중인 프로젝트나 개인적인 개발 습관에 대입해 보았을 때, 즉시 개선이 필요하다고 느낀 부분들이 많았습니다. 그 중에서 특히 인상 깊었던 다섯 가지 교훈을 아래에 정리합니다. API 설계와 운영에서 자주 간과되는 핵심 포인트 1. REST는 쉽지만, 지속 가능하게 만들기 위해선 어렵다 Spring Boot에서 @RestController와 @RequestMapping만으로도 API를 빠르게 ...</summary> </entry> <entry><title>분산 시스템에서 Local Cache 동기화하기 – Redis Pub/Sub 전략</title><link href="https://jo94kr.github.io/posts/%EB%B6%84%EC%82%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C-Local-Cache-%EB%8F%99%EA%B8%B0%ED%99%94%ED%95%98%EA%B8%B0-Redis-Pub-Sub-%EC%A0%84%EB%9E%B5/" rel="alternate" type="text/html" title="분산 시스템에서 Local Cache 동기화하기 – Redis Pub/Sub 전략" /><published>2025-05-31T05:36:46+09:00</published> <updated>2025-05-31T05:36:46+09:00</updated> <id>https://jo94kr.github.io/posts/%EB%B6%84%EC%82%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C-Local-Cache-%EB%8F%99%EA%B8%B0%ED%99%94%ED%95%98%EA%B8%B0-Redis-Pub-Sub-%EC%A0%84%EB%9E%B5/</id> <content src="https://jo94kr.github.io/posts/%EB%B6%84%EC%82%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C-Local-Cache-%EB%8F%99%EA%B8%B0%ED%99%94%ED%95%98%EA%B8%B0-Redis-Pub-Sub-%EC%A0%84%EB%9E%B5/" /> <author> <name>Jo Jin Woo</name> </author> <category term="Architecture" /> <summary>🧩 개요 분산 시스템에서 Redis만으로 캐시를 처리하는 것은 한계가 있습니다. 그래서 많은 시스템은 로컬 메모리 캐시(Caffeine 등)와 Redis를 함께 사용하는 2단계 캐싱(two-level caching) 구조를 채택합니다. 하지만 이 구조는 인스턴스 간 캐시 데이터의 불일치 문제를 일으킬 수 있습니다. 이 글에서는 이를 해결하기 위한 전략으로, Redis Pub/Sub을 활용한 캐시 무효화 메시지 브로드캐스트 방식을 소개하고, 구현 예제도 함께 설명합니다. ❓ 문제 정의: 왜 Local Cache는 불일치가 발생할까? 2단계 캐싱에서는 각 인스턴스가 자체의 Local Cache를 유지합니다. 이로 인해 하나의 인스턴스에서 데이터가 변경되더라도, 다른 인스턴스는 이를 인지하지 못해...</summary> </entry> <entry><title>대량 주문 트래픽 대응을 위한 대기열 기반 시스템 설계</title><link href="https://jo94kr.github.io/posts/%EB%8C%80%EB%9F%89-%EC%A3%BC%EB%AC%B8-%ED%8A%B8%EB%9E%98%ED%94%BD-%EB%8C%80%EC%9D%91%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%8C%80%EA%B8%B0%EC%97%B4-%EA%B8%B0%EB%B0%98-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%84%A4%EA%B3%84/" rel="alternate" type="text/html" title="대량 주문 트래픽 대응을 위한 대기열 기반 시스템 설계" /><published>2025-05-20T10:54:54+09:00</published> <updated>2025-05-20T10:54:54+09:00</updated> <id>https://jo94kr.github.io/posts/%EB%8C%80%EB%9F%89-%EC%A3%BC%EB%AC%B8-%ED%8A%B8%EB%9E%98%ED%94%BD-%EB%8C%80%EC%9D%91%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%8C%80%EA%B8%B0%EC%97%B4-%EA%B8%B0%EB%B0%98-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%84%A4%EA%B3%84/</id> <content src="https://jo94kr.github.io/posts/%EB%8C%80%EB%9F%89-%EC%A3%BC%EB%AC%B8-%ED%8A%B8%EB%9E%98%ED%94%BD-%EB%8C%80%EC%9D%91%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%8C%80%EA%B8%B0%EC%97%B4-%EA%B8%B0%EB%B0%98-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%84%A4%EA%B3%84/" /> <author> <name>Jo Jin Woo</name> </author> <category term="Architecture" /> <summary>1. 문서 개요 이 문서는 대량 주문 트래픽 상황에서 서버 안정성과 사용자 경험을 모두 만족시키는 설계 방안을 설명합니다. 주요 목표: 주문 요청 실패 없이 높은 트래픽을 처리하려면 어떤 구조가 적절한가? 사용자 순서를 보장하면서 실시간 처리가 가능한 구조는 무엇인가? MVP 수준으로 빠르게 적용 가능한 설계 방식은? 2. 문제 정의 특정 시점(이벤트 오픈, 한정 수량 상품 등)에 대량 주문 요청이 발생하면 다음 문제가 나타납니다: 서버 과부하 재고 초과 주문 사용자 요청 실패 및 이탈 ➡️ 이를 해결하려면 대기열 기반 설계 구조가 필요합니다. 3. 요구 사항 정리 주문 종류 일반 상품 주문 트래픽이 몰리는 한정 상품 ...</summary> </entry> </feed>
