최신 글
-
Redis 랭킹 인덱스로 추천 목록 API 성능 개선하기 추천 점수를 요청마다 계산하던 구조를 Redis Sorted Set 기반의 조회 인덱스로 바꾼 과정 서비스에는 멘토들의 프로필을 볼 수 있는 목록 페이지가 있었다. 초기에는 자동 매칭 중심으로 운영됐기 때문에특별한 정렬 기준 없이 멘토를 나열하는 정도면 충분했다. 그러다 멘티가 직접 멘토의 프로필을 보고 신청하는 지정 매칭 기능이 추가됐다.멘토 목록 페이지의 중요도도 자연스럽게 높아졌다. 추천 멘토를 상위에 띄우자지정 매칭 참여율을 높이기 위한 여러 아이디어가 나왔다.그중 하나는 활동이 활발한 멘토를 목록 상단에 노출하는 것이었다."최근에 활발하게 활동한 멘토를 먼저 보여주면 매칭률이 올라가지 않을까요?" 합리적인 제안이었다. 초기 기준도 단순했다.최근 로그인한 멘토매칭에 필요한 프로필을 충실하게 작성..
-
나는 어떤 개발자가 되어 첫 회사를 떠나는가 첫 회사 생활을 돌아보며. 2021년 9월, 신입 개발자로 첫 회사에 입사했다.그리고 4년 9개월 만에, 첫 회사를 떠난다. 이직할 곳을 정해두고 나오는 건 아니다.추가 투자 유치가 무산됐고, TF팀 전체가 권고사직을 받았다.우리가 만들던 서비스도 함께 멈췄다. 들어오던 날은 오래전부터 준비했는데, 나가는 날은 이렇게 갑자기 정해질 줄 몰랐다.이력서에는 어떤 기술을 썼고 어떤 기능을 만들었는지 적을 수 있었다.근데 그것만으론 이 5년을 설명하기가 좀 부족했다.서비스를 기획하고, 출시하고, 운영하고, 개선하고, 결국 종료되는 것까지하나의 서비스가 태어나서 사라지는 과정을 거의 다 지나왔다. 그 사이 내 시선은 어떻게 달라졌을까. 어떤 개발자가 되어 이 회사를 떠나는 걸까. 1. 기능을 구현하던 개발..
-
두 번째 바이브 코딩, 이번엔 진짜 느낌대로 청첩장 때 "욕심이었다"고 썼던 것들이 이번엔 그냥 됐다. 지난 11월, 바이브 코딩으로 모바일 청첩장을 만들었다. 결혼 준비로 정신없는 와중에 AI한테 말 걸어가며 이틀 만에 뚝딱 완성했고, 꽤 뿌듯했다.그런데 글 마지막에 이런 말을 남겼다. "대충 이런 느낌으로 만들어줘 한마디로 완벽한 아키텍처/보안/성능까지 알잘딱깔센으로 챙겨주길 기대했던 건 욕심이었다." 6개월이 지난 지금, 파트너스 링크 모음 사이트를 만들면서 그 욕심이 꽤 많이 현실이 됐다는 걸 느꼈다. 이번엔 뭘 만들었냐면쿠팡 파트너스 같은 어필리에이트 마케팅 활동을 시작하면서 링크를 모아두고 관리할 곳이 필요해졌다.노션에 쌓아두면 공유가 불편하고, SNS는 대부분 대표 링크 하나만 설정할 수 있어서 상품 링크 여러 개를 한 번에 공유하기..
-
Spring AI로 MCP 서버를 구축하고, Claude Code에 연동하기 Java/Spring 개발자라면 굳이 Python으로 MCP 서버를 새로 배울 필요가 없습니다. 평소 쓰던 @Service, @Component 위에 어노테이션 하나만 더 붙이면 됩니다.Spring AI 1.1로 MCP 서버를 만들고,그걸 Claude Code에 물려서 실제로 도구를 호출하게 만드는 과정을 정리했습니다. 요즘 AI 도구들이 "내 코드베이스", "우리 사내 API"를 직접 들여다보게 만드는 일이 흔해졌습니다.그 중심에 있는 표준이 MCP(Model Context Protocol) 입니다. MCP는 AI 모델과 외부 도구·데이터를 연결하는 범용 어댑터라고 생각하면 됩니다.도구마다 일일이 커스텀 연동을 짜는 대신, MCP 서버 하나만 만들어 두면 MCP를 지원하는 모든 클라이언트(Claude..
-
MCP 서버, 통신 흐름 이해하기 들어가며 지난 글에서 MCP 서버를 "말하는 점원" 에 비유했다. MCP가 뭐길래? API, Skill이랑 헷갈리는 용어 정리AI에 외부 도구를 붙이는 얘기를 듣다 보면 API, MCP, Skill이 뒤섞여 나온다. 비슷한 듯 다르게 쓰여서 더 헷갈린다. 들어가며요즘 AI 기술 글을 읽다 보면 이런 문장이 자주 보인다."이 서비스는 Slackljg960730.tistory.com AI가 "너 뭐 할 줄 알아?" 라고 물으면 "이거 이거 할 줄 알아요" 하고 답해주는 친구라고.비유는 좋은데 실제로 어떻게 생긴 건지 는 아직 안 보여줬다.이번 글의 목표는 두 가지다.MCP 통신이 실제로 어떻게 흐르는지 단계별로 따라가 보기Python으로 직접 MCP 서버 만들어보기"그래서 MCP 서버가 실제로 어떻게 생긴 ..
-
MCP가 뭐길래? API, Skill이랑 헷갈리는 용어 정리 AI에 외부 도구를 붙이는 얘기를 듣다 보면 API, MCP, Skill이 뒤섞여 나온다. 비슷한 듯 다르게 쓰여서 더 헷갈린다. 들어가며요즘 AI 기술 글을 읽다 보면 이런 문장이 자주 보인다."이 서비스는 Slack API를 호출해서…""Notion MCP 서버에 연결하면…""Claude에 PDF 생성 Skill을 추가하면…"셋 다 "AI가 외부 일을 처리한다" 는 맥락에서 나오는 말인데, 정확히 뭐가 다른지 헷갈린다.나도 처음엔 이 셋을 같은 줄에 세워놓고 비교하려다 한참 헤맸다.결론부터 말하면 셋은 비교 대상이 아니라 서로 다른 층에 있는 개념이다. 싸우는 사이가 아니라 한 팀이다. 그리고 미리 밝혀둘 게 하나 있다.이 시리즈가 끝까지 파고들 주인공은 가운데 있는 MCP다.API는 그 아래 바탕..
-
Spring Retryable 테스트해봤나요? @Transactional 위에서 @Retryable 쓰고 있다면 — 재시도까지 테스트해봤나요?Spring Retry(@Retryable)와 @Transactional을 함께 쓰다가 이상한 현상을 겪었다.AWS DocumentDB에서 WriteConflict(112)가 발생했을 때 재시도가 제대로 동작할 거라 믿었는데, 재시도할수록 MongoTransactionException: NoSuchTransaction(251)만 반복됐다. 같은 작업을 다시 시도하는데 왜 다른 에러가 나오지?그 질문에서 시작한 디버깅이었다.환경Spring Boot 2.7.7 + Kotlin 1.8.20Spring Retry (@Retryable) — spring-retry 1.3.4Spring Data MongoDB + AWS .. -
바이브 코딩으로 모바일 청첩장 만들기 결혼 준비를 하다 보면 할 일이 진짜 많다.식장, 스드메, 신혼여행… 그리고 모바일 청첩장까지.처음엔 종이 청첩장을 고르면 모바일 청첩장도 무료로 준다길래“무료로 만들면 되겠지” 싶었다.근데 막상 업체에서 제공하는 무료 청첩장들을 보니디자인이 내 취향이 아니고구성/배치 커스텀도 제한적이고예쁘게 만들려면 결국 추가 비용이 들었다게다가 청첩장 모임(청모)까지 시간이 조금 남아 있어서,그냥 직접 만들어보기로 했다. (with. 바이브 코딩)! 청첩장 구경하기 > 이재근 🤍 권영지 결혼합니다.2025년 11월 15일 토요일 오전 11시wedding.ttukttak.xyz 바이브 코딩이 뭐냐면요 바이브 코딩(Vibe Coding)은 AI(LLM) 한테 자연어로 원하는 “느낌/결과"를 던지고,AI가 코드를 뽑아..
-
TIME 타입에서 타임존이 꼬이는 이유와 해결법 글로벌 서비스를 운영하다 보면 배치는 “그냥 주기적으로 도는 작업”이 아니라, 국가별 운영 정책을 따라야 하는 작업이 된다.예를 들어 어떤 국가는 업무 시간에는 배치를 돌리면 안 되고(트래픽/CS 이슈), 어떤 국가는 새벽에만 몰아서 처리해도 괜찮다.그래서 요구사항은 단순했다.국가/서비스별로 “실행을 지연(=제외)해야 하는 시간 구간”이 있고이 정책은 운영 중에도 자주 바뀐다 (배포 없이 바꾸고 싶다)결론은 하드코딩이 아니라 DB로 관리하자였다.참고: 현재 서비스 대상국인 한국(Asia/Seoul)과 인도(Asia/Kolkata) 모두 DST(Daylight Saving Time)를 사용하지 않아 연중 고정 오프셋을 유지한다. 따라서 이 구현에서는 DST 전환에 따른 복잡한 처리는 고려하지 않았다. ..
-
AWS MediaConvert로 숏츠 플랫폼 HLS 스트리밍 구현 요즘 숏츠 영상이 대세잖아요?회사에서 숏츠 서비스를 만들게 되었는데, 저는 그 중에서도 HLS 스트리밍 부분을 담당하게 되었습니다.영상 업로드는 다른 팀에서, 인코딩은 동료와 함께 진행했고, 저는 주로 S3에 올라온 영상을 사용자에게 매끄럽게 스트리밍하는 부분에 집중했어요.생각보다 까다로운 작업이었는데, 그 과정에서 배운 것들을 정리해봤습니다. 기술 스택Backend InfrastructureVideo Processing: AWS MediaConvertStorage: Amazon S3CDN: Amazon CloudFrontEvent Processing: AWS Lambda, EventBridgeBackend: Spring BootFrontendTemplate Engine: ThymeleafVideo S..
반응형