최신 글

[AidFlow] 소프트웨어 개발 파트너 MCP
·
MCP
https://github.com/g-hyeong/MCP-AidFlow GitHub - g-hyeong/MCP-AidFlowContribute to g-hyeong/MCP-AidFlow development by creating an account on GitHub.github.com 개발 동기회사에서 개발 AX 프로젝트를 리딩하게 되면서, 첫 번째로 진행한 게 사내 개발 사이클에 맞춘 MCP 서버 구축이었다. MCP 서버를 통해, AI Code Assistant를 통한 개발 시 사내 개발 워크플로우에 맞게 진행되도록 유도해주는 작업이었는데, 기대 이상으로 만족스러운 성능을 보였어서, 퇴사하고 나니 아래와 같은 생각이 들었다. "이거 충분히 어떤 개발이든 적용시킬 수 있을 것 같은데?" 사내 MCP는 우..
GraphQL Federation 직접 부딪히며 배우기
·
Learnings
회사에서 내가 구축한 영상 이해 데이터 플랫폼의 연장으로, 브랜드 대시보드 프로젝트를 진행하면서 GraphQL과 Apollo Federation을 본격적으로 다뤘다.그 과정에서 Federation 환경의 GraphQL 서버를 개발하며 느낀 것들을 담아봤다GraphQL에 대한 오해GraphQL은 흔히 overfetching(불필요한 데이터까지 가져오는 문제)과 underfetching(한 번에 필요한 데이터를 다 못 가져오는 문제)을 해결한다고 설명된다. 처음에 내가 잘못 생각했던 부분은, “각 요청마다 딱 맞는 스키마를 계속 추가해야 한다”라고 생각한 것이다.즉, 상황별로 최적화된 쿼리와 응답을 위해 스키마를 세분화·확장하는 방식이 맞다고 여겼다.설계를 하면서는 내가 정말 잘 하고 있다고 생각했고, 깔끔..
LangChain 구성 요소: LCEL, Runnable, 스트리밍, 운영 (feat. LangGraph)
·
LLM
LLM을 단순히 API 호출로 쓰는 수준을 넘어서, 실제 애플리케이션에 활용하려면 체인 구성, 상태 관리, 스트리밍, 관측성까지 고려해야 한다. LangChain은 이런 요구를 체계적으로 해결할 수 있도록 설계된 대표적인 프레임워크다.이 글에서는 LCEL & Runnable → 스트리밍 → 배포/운영 → 선택 가이드 → LangChain 장점 순서로 핵심을 정리한다.1) LCEL & RunnableLCEL과 RunnableLangChain Expression Language(LCEL)은 LangChain에서 체인과 에이전트를 선언적이고 간결하게 표현하는 문법이다.핵심은 모든 컴포넌트를 Runnable이라는 실행 단위로 추상화한다는 점이다.Runnable은 LangChain이 정의한 실행 가능한 최소 단위..

Learnings

GraphQL Federation 직접 부딪히며 배우기
·
Learnings
회사에서 내가 구축한 영상 이해 데이터 플랫폼의 연장으로, 브랜드 대시보드 프로젝트를 진행하면서 GraphQL과 Apollo Federation을 본격적으로 다뤘다.그 과정에서 Federation 환경의 GraphQL 서버를 개발하며 느낀 것들을 담아봤다GraphQL에 대한 오해GraphQL은 흔히 overfetching(불필요한 데이터까지 가져오는 문제)과 underfetching(한 번에 필요한 데이터를 다 못 가져오는 문제)을 해결한다고 설명된다. 처음에 내가 잘못 생각했던 부분은, “각 요청마다 딱 맞는 스키마를 계속 추가해야 한다”라고 생각한 것이다.즉, 상황별로 최적화된 쿼리와 응답을 위해 스키마를 세분화·확장하는 방식이 맞다고 여겼다.설계를 하면서는 내가 정말 잘 하고 있다고 생각했고, 깔끔..
오픈서치(엘라스틱서치) 인덱스와 매핑, 그리고 리인덱싱
·
Learnings
오픈서치에서 작업을 하다가 매핑의 중요성을 몸소 깨닫게 된 적이 있다. 해당 데이터는 “확률 분포” 데이터였다.예를 들어, 문서마다 특정 데이터의 확률 분포를 다음과 같이 넣어야 하는 상황이었다.{ "positive": 0.3, "neutral": 0.5, "negative": 0.2}평소처럼 동작에만 신경을 쓰고 워크플로우를 돌렸는데, 해당 데이터가 hot에서 warm으로 옮겨지면서 문제가 발견되었다.최초 데이터의 저장은 hot 인덱스에 저장된다. 이 때, positive 필드가 float으로 동적 매핑이 되었다고 해보자.그런데, warm 인덱스로 일부 데이터가 옮겨질 때, positive 값이 0.0인 게 맨 처음 들어가게 되어 warm 인덱스에서는 positive 필드가 int 로 ..
MongoDB로 동시성과 상태 관리하기
·
Learnings
크롤러 같은 멀티 프로세스 / 멀티 인스턴스 환경에서는 “지금 누가 작업 중인지”, “데이터가 준비되었는지” 같은 상태를 안전하게 관리해야 한다. 이를 제대로 안 하면, 여러 봇이 동시에 같은 타깃을 갱신하거나, 아직 준비되지 않은 데이터를 읽어가면서 꼬일 수 있다.이번 글에서는 인턴 시절 첫 프로젝트였던 '무중단 분산 크롤링 봇'에서 MongoDB Document 필드만으로 동시성과 상태를 관리하도록 설계했던 방법을 소개하려고 한다.상태 플래그Document에는 두 가지 핵심 플래그가 있다.isReady: 크롤러가 대상(seeds)을 사용해도 되는지 여부isEditing: 현재 다른 프로세스가 갱신 작업을 하고 있는지 여부이 두 가지 조합으로 현재 상태를 판별한다.상태 의미isReady=true, is..

Study

LangChain 구성 요소: LCEL, Runnable, 스트리밍, 운영 (feat. LangGraph)
·
LLM
LLM을 단순히 API 호출로 쓰는 수준을 넘어서, 실제 애플리케이션에 활용하려면 체인 구성, 상태 관리, 스트리밍, 관측성까지 고려해야 한다. LangChain은 이런 요구를 체계적으로 해결할 수 있도록 설계된 대표적인 프레임워크다.이 글에서는 LCEL & Runnable → 스트리밍 → 배포/운영 → 선택 가이드 → LangChain 장점 순서로 핵심을 정리한다.1) LCEL & RunnableLCEL과 RunnableLangChain Expression Language(LCEL)은 LangChain에서 체인과 에이전트를 선언적이고 간결하게 표현하는 문법이다.핵심은 모든 컴포넌트를 Runnable이라는 실행 단위로 추상화한다는 점이다.Runnable은 LangChain이 정의한 실행 가능한 최소 단위..
MCP를 통한 LLM의 행동 유도
·
MCP
MCP는 보통 LLM과 외부 시스템을 연동하는 역할로 알려져 있다.(노션 MCP, Supabase MCP, …) 그런데, 외부 시스템과는 관계 없이 LLM의 행동을 제어하거나 유도하는 용도로 활동되기도 한다.(Sequential Thinking MCP, Meta Reasoning MCP, …) 예를 들어, 프롬프트 조작이나 메타 지시어 삽입을 통해 LLM의 응답 구조를 고정하거나,특정 작업 순서를 따르도록 강제하는 등의 방식이다. 이 경우 MCP는 단순한 인터페이스 계층을 넘어,LLM의 “행동 정책(controller)” 또는 “프롬프트 운영 계층”으로 작동할 수 있다.LLM-MCP FlowLLM이 MCP 서버에 tool/list 요청을 보내면, MCP 서버가 사용 가능한 도구 목록을 반환한다. (nam..
MCP란?
·
MCP
회사에서 MCP를 사용한 큰 시스템 구축에 참여할 것 같아서,같이 작업을 하게 될 한 분과 같이 우선 MCP 스터디를 만들어서 진행해 보기로 했다. 막상 시작하려니 뭘 할까.. 하다가 우선 뭐라도 만들어보기로 했다.뭐라도 만들어 보려니, MCP의 동작 원리에 대해 이론적으로 아는 게 없어서 주제도 못 정하는 상황.그래서 우선 MCP에 대해 이론적인 부분부터 공부해 보려고 한다.MCP 정의MCP: Model Context Protocol: 2024년 11월 Anthropic이 발표LLM 기반 AI 애플리케이션과 외부와의 통합을 표준화 하는 프로토콜AI와 외부 데이터 간의 USB-C 포트 역할 담당JSON-RPC 2.0 기반MCP 구성 요소Host: Claude Desktop, Cursor IDE, Clau..

Projects

[AidFlow] 소프트웨어 개발 파트너 MCP
·
MCP
https://github.com/g-hyeong/MCP-AidFlow GitHub - g-hyeong/MCP-AidFlowContribute to g-hyeong/MCP-AidFlow development by creating an account on GitHub.github.com 개발 동기회사에서 개발 AX 프로젝트를 리딩하게 되면서, 첫 번째로 진행한 게 사내 개발 사이클에 맞춘 MCP 서버 구축이었다. MCP 서버를 통해, AI Code Assistant를 통한 개발 시 사내 개발 워크플로우에 맞게 진행되도록 유도해주는 작업이었는데, 기대 이상으로 만족스러운 성능을 보였어서, 퇴사하고 나니 아래와 같은 생각이 들었다. "이거 충분히 어떤 개발이든 적용시킬 수 있을 것 같은데?" 사내 MCP는 우..
손쉽게 로깅 관리하기: Logging Advisor MCP 서버 개발기
·
MCP
https://github.com/g-hyeong/Logging-Advisor-MCP GitHub - g-hyeong/Logging-Advisor-MCPContribute to g-hyeong/Logging-Advisor-MCP development by creating an account on GitHub.github.com "이 로그, 지금 제대로 남기고 있는 게 맞나?"빠른 개발과 잦은 배포 환경에서 개발자라면 한 번쯤 해봤을 고민입니다.'누군가 옆에서 로깅에 대한 전문가적인 조언을 해주면 좋겠다'는 생각에서 이 프로젝트를 시작했습니다. 이 글은 로깅 관리의 어려움을 해결하기 위해 AI와 MCP를 활용해 Logging Advisor MCP 서버를 개발한 과정을 담고 있습니다.요약Logging Adv..

Productivity

프로젝트 관리를 위한 노션 템플릿
·
Task Managemant
노션을 쓴 지는 되게 오래 됐는데, 최근 노션의 데이터베이스 기능에 빠져버린 후,체계적으로 관리해야 할 게 있으면 노션 템플릿을 구성한 후 그것을 기반으로 관리하는 편이다. 가계부, 취미 등등 다양한 걸 관리하고 있는데,이번에는 본격적으로 여러 가지 프로젝트를 체계적으로 진행해 보고 싶어서 노션 템플릿을 먼저 구성했다. 우선 메인 화면은 아래와 같다.진행 중인 모든 프로젝트와 모든 태스크, 그것에 대한 타임라인을 한 눈에 볼 수 있는 직관적인 UI로 구성했다. 프로젝트 탭에 들어가면, 위와 같이 뜨는데, 프로젝트에 대한 설명, 목표,그리고 프로젝트 내에서 진행 중인 Task에 대해 관리할 수 있는 View들로 구성했다. 추가로, 프로젝트를 진행하면서 공부한 내용또는 문서화를 통해 관리되어야 할 내용 또한..

Personal