<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://dldl8819.github.io/</id><title>이민식 (Minsik Lee)</title><subtitle>Java/Spring Boot, React 기반 엔터프라이즈 애플리케이션 개발 경험을 가진 풀스택 엔지니어입니다. 최근에는 FastAPI, SQLAlchemy, LangChain을 활용한 AI 에이전트 개발을 공부하며 기록을 남기고 있습니다.</subtitle> <updated>2026-09-14T17:26:44+09:00</updated> <author> <name>이민식</name> <uri>https://dldl8819.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://dldl8819.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="ko" href="https://dldl8819.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://dldl8819.github.io/posts/heifam-team-balance-system/" rel="alternate" type="text/html" title="엑셀에서 서비스로 — 헤이팸 팀 밸런스 시스템 개발기" /><published>2026-09-14T16:00:00+09:00</published> <updated>2026-09-14T16:00:00+09:00</updated> <id>https://dldl8819.github.io/posts/heifam-team-balance-system/</id> <content type="text/html" src="https://dldl8819.github.io/posts/heifam-team-balance-system/" /> <author> <name>이민식</name> </author> <category term="Project" /> <category term="Heifam" /> <summary>반복되던 문제 스타크래프트 빠른무한 3:3 내전 모임 “헤이팸”을 운영하면서, 매번 같은 문제가 반복됐다. 팀 밸런스가 맞지 않는다 실력 차이에 대한 불만이 생긴다 기록이 누적되지 않아 공정성이 흐려진다 운영진이 수기로 관리하느라 피로도가 높다 이 문제를 풀어보려고 처음엔 기존 티어에 맞는 MMR을 설정해서 구글 스프레드시트로 관리하기 시작했다. 지금은 그게 헤이팸 커뮤니티에서 실제로 쓰이는 서비스로 발전했다. 시작: 엑셀 자동 팀 배정 가장 먼저 만든 건 엑셀 기반의 자동 팀 배정 시스템이었다. 그런데 기능이 하나둘 늘어나면서 깨달았다. “이건 엑셀이 아니라 서비스로 만들어야 하는 영역이다” 프로젝트 목표 목표는 단순했다. 게임 커뮤니티를 위한 자동 팀 편성 +...</summary> </entry> <entry><title>FastAPI에 리포지토리 패턴 적용하기</title><link href="https://dldl8819.github.io/posts/fastapi-repository-pattern/" rel="alternate" type="text/html" title="FastAPI에 리포지토리 패턴 적용하기" /><published>2026-09-14T10:00:00+09:00</published> <updated>2026-09-14T10:00:00+09:00</updated> <id>https://dldl8819.github.io/posts/fastapi-repository-pattern/</id> <content type="text/html" src="https://dldl8819.github.io/posts/fastapi-repository-pattern/" /> <author> <name>이민식</name> </author> <category term="Backend" /> <category term="FastAPI" /> <summary>왜 필요한가 라우터에서 바로 DB에 접근하면 재사용·테스트·이관이 어려워진다. 특히 아래처럼 쿼리 조건을 f-string으로 직접 조립하면 SQL 인젝션에도 취약하다. # 안티패턴: 라우터에서 직접 SQL 조립 @router.get("/list") def get_list(dept_id=None): sql = "SELECT * FROM documents WHERE 1=1" if dept_id: sql += f" AND dept_id = '{dept_id}'" session.execute(sql) 이 문제를 해결하기 위해 Router → Service → Repository → Model 로 계층을 나눴다. HTTP 요청 | Router — ...</summary> </entry> </feed>
