전체 글27 루퍼스 3기 수료 후기 — 개발은 취향이다 기조: 개발은 취향이다. 10주가 지났다. 10주 전의 나에게 "넌 왜 개발을 그렇게 하니"라고 물었다면, 나는 한참을 머뭇거리다 회사 사정이나 일정, 비용 같은 단어로 얼버무렸을 것 같다. 10주 뒤의 나는, 그 질문을 반긴다. 답이 명쾌해서가 아니라, 답을 만들어 낼 언어가 생겼기 때문이다. 이 글은 그 10주에 대한 기록이다. 목차루퍼스를 신청하게 된 계기루퍼스를 시작하며 마음 먹은 사항루퍼스를 겪으며루퍼스를 수료하고 난 나의 마음가짐이런 분들께 루퍼스를 추천한다마무리 1. 루퍼스를 신청하게 된 계기 루퍼스를 신청하게 된 계기는, 사실 정말 단순했다.더 이상 개발 실력에 대해 핑계를 대고 싶지 않았다. 이런 마음을 품게 된 건 올해 초 성과 평가의 피드백에서 시작되었다. 2025년의 내 .. 2026. 4. 26. 매주 한 편씩 쓰다 보니 10주가 지나 있었습니다 TL;DR — 10주 동안 매주 한 편씩 블로그를 썼습니다. 토요일 저녁마다 "정상이 어디에요?" 라고 스스로에게 물었고, 돌아오는 답은 언제나 "아 5분만 더 가면 돼" 였습니다. 그 5분이 열 번 쌓여 10주가 되었고, 저는 끝내 포기하지 않았습니다. 이 글은 그 열두 편의 흔적이 만든 열한 번째 저를 돌아보는 총괄 회고이자, 마지막 라운드(Spring Batch + Materialized View + 기간별 Ranking API) 에서 내린 결정을 기록한 인덱스입니다.프롤로그 — 글을 쓰기 시작한 2주차의 저처음부터 매주 블로그를 쓸 생각은 아니었습니다. 1주차에는 Ktlint·EditorConfig·Git Hook 같은 도구를 세팅하고, 팀 동료의 질문 ("Kotlin 에 ESLint 같은 거 있.. 2026. 4. 17. "0.3ms의 세계로 들어가도 되는 걸까" — INFP 백엔드 개발자의 Redis ZSET 랭킹 파이프라인 구축기 TL;DR: ORDER BY score DESC의 300ms가 불안해서 Redis ZSET의 0.3ms 세계로 넘어갔다. Kafka 이벤트 파이프라인으로 가중치 기반 점수를 실시간 누적하고, 자정 콜드 스타트는 전일 점수 10%를 이월하는 Carry-Over 배치로 완화했다. 핵심 판단은 "핵심 기능과 부수 기능의 분리", "YAGNI 기반 가중치 관리 수준 결정", "EMA 구조의 감쇠 비율 선택"이었다. 참고: 본문에 등장하는 "사제문답"은 Claude와의 기술 대화를 무협 세계관으로 각색한 것입니다. 말투에 놀라지 마시길... 주문 이벤트를 Kafka에 태우고, Redis ZSET에 가중치 기반 점수를 쌓고, 랭킹 API를 만들고, 통합 테스트를 짜고, 마지막으로 콜드 스타트를 완화하는 배치 잡까.. 2026. 4. 10. 주문 대기열 시스템 설계: Redis Sorted Set의 내부 구조가 실시간 순번 조회를 가능하게 하는 원리 TL;DR — 트래픽 폭증 시 하류 시스템을 보호하면서 유저에게 공정한 순서를 보장하기 위해 Redis Sorted Set 기반의 주문 대기열을 구현했다. 처음에는 "Redis가 빠르니까"라는 이유만으로 충분하다고 생각했지만, 순번 조회(ZRANK)가 왜 O(log N)인지를 제대로 설명하지 못하는 자신을 발견했다. 그래서 Sorted Set의 내부 구현체인 스킵 리스트(Skip List)와 스팬(Span) 메커니즘까지 파고들었고, 그 과정에서 얻은 이해를 이 글에 정리한다. 1. 트래픽 제어의 필요성: Back-pressure 평소 초당 100건이던 주문 요청이 블랙 프라이데이 시작 직후 초당 10,000건으로 폭증하는 상황을 가정해 보았다. 이 트래픽이 주문 API로 직접 유입되면 어떤 일이 벌어질.. 2026. 4. 3. 이것이 Spring AI다 한빛미디어 서평단 활동을 위해서 책을 협찬받아 작성된 서평입니다Spring AI에 대한 관심이 시작된 곳, SpringCamp 2025사실 이 책을 집어든 건, 우연이 아니었습니다.지난 SpringCamp 2025에서 종훈님이 Spring AI 오픈소스 기여 경험을 발표하셨는데, 그 이야기가 꽤 오래 마음에 남았습니다. 프레임워크를 "쓰는" 입장에서만 바라보던 저에게, 직접 코드를 읽고 기여하고 커뮤니티와 소통하는 과정을 들려주신 건, 솔직히 부러움 반, 자극 반이었던 것 같습니다. 무엇보다 종훈님의 발표를 통해 Spring AI라는 프로젝트가 단순히 "Spring에서 ChatGPT 호출하기"가 아니라, 꽤 진지하게 추상화 계층을 설계하고 있는 프로젝트라는 인상을 받았습니다.그래서 이번에 서평 기회가 .. 2026. 4. 1. Kafka를 붙일 때 가장 먼저 본 것은 왜 manual ack였을까 TL;DR: Kafka를 처음 붙일 때 나는 Producer 옵션보다 Consumer의 manual ack가 더 먼저 눈에 들어왔고, 그 지점에서야 "메시지를 받는 것"보다 "언제 처리 완료로 간주할 것인가"가 더 중요한 질문일 수 있겠다고 생각하게 됐다. Kafka를 공부하기 전에는 토픽을 만들고 Producer로 메시지를 보내는 쪽이 더 핵심이라고 생각했다. 그런데 이번에 실제 코드를 보면서 내 시선은 조금 다르게 움직였다. modules/kafka/.../KafkaConfig.kt에서 먼저 보인 것은 KafkaTemplate보ConcurrentKafkaListenerContainerFactory였고, 그 안에서도 ContainerProperties.AckMode.MANUAL 설정이 더 오래 남았다.. 2026. 3. 27. 이전 1 2 3 4 5 다음