전체 글 358

[AI] AI 엔지니어링 패러다임 (2) 워크플로우·스킬 팩 6종 비교

1. 개요이번 글에서는 실무에서 자주 쓰이는 AI 코딩 워크플로우·스킬 팩 6종을 비교해 보았습니다.모든 도구를 직접 써 본 것은 아니기에, 공개된 공식 설명과 가이드를 바탕으로 개인적으로 이해한 내용 위주로 정리하였고, 1인 개발로 바닥부터 프로젝트를 시작할 때, 진행 중인 개발 과정에 AI를 도입할 때, 그리고 이미 완성된 로직의 안정성과 품질을 보완해 강화할 때 등 각자의 개발 상황에 따라 필요한 AI의 역할이 다르기 때문에 상황에 맞는 스킬팩을 잘 고르는 게 중요할 것 같습니다. 2. 핵심 6종 비교아래 표는 기획부터 배포까지 아우르는 풀사이클 팀형부터 가장 작은 최소 단위의 규칙 파일 하나까지, 적용 범위에 따라 나열한 비교입니다.도구성격핵심 역할gstack올인원 풀사이클 팀형- 기획, 디자인..

[SW 개발] SDD(Spec-Driven Development) 개념과 흐름 정리 (with. spec-kit 커스텀하기)

1. SDD(Spec-Driven Development)란?코드보다 명세(spec)를 먼저 쓰고, 명세 → 계획 → 작업 → 코드 순서로 내려가는 개발 방식.프롬프트 바이브 코딩은 한 줄로 코드를 응답 받아 빠르지만,요구사항이 대화 속에만 남아 이후 기능이 커질수록 AI 에이전트가 빈틈을 추측으로 채우게 됨. 그래서 SDD는 '무엇을, 왜 만드는가'를 문서로 고정해 기준(source of truth, 단일 지식 원천)으로 두고, 요구사항이 바뀌면 코드가 아니라 spec부터 고쳐 진행함. 2. SDD 흐름과 산출물 (by. spec-kit)GitHub의 spec-kit 은 프로젝트당 헌법의 역할을 하는 constitution을 정하고,기능마다 specify → plan → tasks → implement..

[AI] MCP 서버 직접 만들어 보기 (with. FastMCP, Claude Code)

개요이번 글은 Python으로 MCP 서버를 직접 만들어 Claude Code에 연결해 본 실습 기록입니다.로컬 서버 (stdio) : 에이전트가 내 PC에서 서버 프로세스를 직접 띄우고 표준 입출력으로 통신 (예: claude mcp add memo -- uv run server.py)원격 서버 (Streamable HTTP) : 서비스 회사가 운영하는 URL에 붙고 OAuth로 인증 (예: claude mcp add --transport http notion https://mcp.notion.com/mcp) MCP 서버 장점 : 한 번 만든 서버를 Claude Code, Cursor, Claude Desktop 등 MCP를 지원하는 모든 에이전트에서 그대로 씀 목차1) Claude Code MCP 관..

[AI] AI 엔지니어링 패러다임 (1) 흐름과 타임라인

AI 에이전트 분야는 프롬프트, 컨텍스트, 하네스, 루프, 그래프, 거버넌스, 옵저버빌리티, 셀프에볼루션 처럼 몇 달마다 새 패러다임 이름이 빠르게 나오고 있으며 따라가기 쉽지 않은 그런 느낌이 있습니다. 이번 글에서는 위 패러다임 8단계의 발전이 2022년부터 현재까지 어떠한 흐름으로 발전해 왔는지 정리해 보았습니다. 1. AI 엔지니어링 패러다임 이란패러다임 : 한 시대에 문제를 바라보고 푸는 공통의 틀을 의미함.- 예: 절차지향 → 객체지향, 모놀리식 → MSAAI 에이전트 패러다임 : 에이전트가 일을 잘하게 하려면 '무엇을 설계해야 하는가'에 대한 시기별 답을 의미함.패러다임 변화 방식 : 이전 패러다임으로 못 막는 실패가 생기면 새 패러다임이 등장하여 바깥 계층으로 쌓임- 예: 프롬프트로 DB..

[MSA] MSA 서비스 간 통신 비교 (REST, gRPC, Message Queue)

MSA에서 쓰는 통신 방식은 크게 REST, gRPC, Message Queue로 나뉨.각 방식의 개념과 차이, 상황별 선택 기준을 정리 1. 개요MSA에선 서비스끼리 주고받는 통신이 곧 시스템의 뼈대라, 통신 방식 선택이 성능과 장애 대응을 좌우함. 1) MSA와 서비스 간 통신MSA(Microservice Architecture) : 하나의 큰 애플리케이션을 기능별 작은 서비스로 나눠 따로 개발·배포하는 구조 (예: 주문, 재고, 결제 서비스 다 따로 개발·배포)모놀리식과의 차이 : 모놀리식은 함수 호출 한 번이면 되던 일이, MSA에선 네트워크를 거친 서비스 간 통신이 됨고민 필요 : 상대 서비스가 느리거나 죽었을 때 어떻게 할지, 데이터 형식을 어떻게 맞출지 등 고민 필요 통신 방식은 동기/비동기..

[Redis] Redis 정리 (2) 백엔드 실무 활용 9선

백엔드 실무 활용 패턴백엔드에서 자주 쓰는 8가지 패턴과 사용하는 자료형 정리. (Redis 8.x, Python redis-py 기준)No패턴해결하는 문제자료형1Cache-AsideWrite-Through반복 조회로 인한 DB 부하String2인증번호 관리만료된 코드 정리String3분산 락여러 서버의 동시 수정String4API Rate Limit과도한 요청으로 인한 과부하String5최근 본 상품최신 N개 이력 유지List6분산 세션서버 간 로그인 상태 공유Hash7정합성 처리조회수/좋아요 중복String, Set8실시간 랭킹ORDER BY 반복 계산Sorted Set9실시간 메시지 (Pub/Sub)서버 간 이벤트 즉시 전파Pub/Sub (Channel) 공통 설정import json, time, ..

[Redis] Redis 정리 (1) 핵심 개념과 자료형

1. Redis 란RAM에 데이터를 저장하는 인메모리 Key-Value 저장소. (Redis 8.x 기준) 왜 Redis 인가RDB 한계 : 유저 증가 시 디스크 I/O 병목, Scale-up은 비용 효율이 낮음 (Scale-up 하는 것 보단 Redis 도입으로 비용 줄이기)로컬 캐시 한계 : HashMap 등은 빠르지만 Scale-out 시 서버마다 데이터가 달라짐Redis : 모든 서버가 공유하는 글로벌(외부) 캐시(Global Cache)로 둘 다 해결 2) 핵심 특징특징내용기대 효과In-Memory모든 데이터를 RAM에 저장0.1ms 미만 응답 속도Single-Thread명령을 순차 처리동시성 제어 단순화, 고성능PersistenceRDB + AOF 디스크 백업장애 시 데이터 복구 가능 3) ..

[Pydantic] Annotated로 커스텀 타입 만들어서 중복 줄이기

개요파이썬 표준 문법인 Annotated로 [기본 타입, Pydantic 검증 규칙]을 하나의 세트로 묶어 선언하는 방법을 정리함 (Pydantic v2 기준)형식 : Annotated[타입, 메타데이터1, 메타데이터2, ...]동작 : 타입 검사기는 앞의 타입만 보고, Pydantic은 뒤의 메타데이터(Field, Validator)를 읽어 검증함 1. Annotated 기본 사용필드 타입 옆에 검증 규칙(Field)을 함께 적는 방식from typing import Annotatedfrom pydantic import BaseModel, Fieldclass User(BaseModel): # 최솟값 18, 최댓값 100 조건 추가 age: Annotated[int, Field(ge=18, l..

[Python] Callable로 if-else 없는 팩토리 만들기

개요함수를 값처럼 다룰 때 쓰는 Callable 타입 힌트와, 이를 활용해 if-else 없이 만드는 팩토리 패턴을 정리Callable : "이런 인자를 받고 이런 값을 반환하는 함수"라는 규격(타입 힌트)팩토리 패턴 : 입력 값(타입)에 맞는 함수를 골라 실행해주는 구조 1. Callable 문법형식은 Callable[[인자 타입들], 반환 타입]이며, 규격에 맞는 함수를 변수에 담아 그대로 호출할 수 있음[str, int] : 첫 번째 인자는 문자열, 두 번째 인자는 숫자str : 최종 반환 타입도 문자열from typing import Callable# 1. 인자가 2개(str, int)인 실제 함수 정의def repeat_msg(message: str, count: int) -> str: r..

[Python] set vs frozenset vs Enum

개요값 묶음을 상수로 둘 때 set, frozenset, Enum 중 무엇을 쓸지 헷갈려서 차이를 정리함set : 중복 없는 묶음, 수정 가능(Mutable)frozenset : 중복 없는 묶음, 수정 불가(Immutable)Enum : 이름 하나에 값 하나를 정한 상수 목록 1. set vs frozenset둘 다 중복을 허용하지 않는 주머니지만, set은 내용물을 바꿀 수 있고 frozenset은 바꿀 수 없음구분setfrozenset변경가능 (add, remove 등)불가 (AttributeError)해시불가가능 (dict 키, set 원소로 사용 가능)집합 연산가능가능 (결과도 frozenset)용도계속 바뀌는 값 모음고정된 값 모음, 상수 # set: 언제든 추가/삭제 가능my_set = {"D..