전체 글 355

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

AI 에이전트 분야는 프롬프트, 컨텍스트, 하네스, 루프, 그래프처럼 몇 달마다 새 패러다임 이름이 빠르게 나오고 있는 중 으로 따라가기만 해도 쉽지 않은 그런 느낌이 있습니다. 이번 글에서는 이 흐름을 패러다임 8단계와 3개 계층으로 묶고, 2022년부터 2026년까지 연도별 변화를 정리해 보았습니다. 1. AI 에이전트 패러다임 이란패러다임 : 한 시대에 문제를 바라보고 푸는 공통의 틀 - 예: 절차지향 → 객체지향, 모놀리식 → MSAAI 에이전트 패러다임 : 에이전트가 일을 잘하게 하려면 '무엇을 설계해야 하는가'에 대한 시기별 답변화 방식 : 이전 패러다임으로 못 막는 실패가 생기면 새 패러다임이 등장하여 바깥 계층으로 쌓임- 예: 프롬프트로 DB 삭제를 못 막음 → 하네스 패러다임의 등장 2..

[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..

[k8s client] k8s client for python 예제

설명k8s(Kubernetes)자원을 생성하거나 관리할 때. 다음 선언형, 명령형 방법 외에도 API Client를 이용해 어플리케이션 레벨에서 제어하는 방법이 있다.선언형 방식 (Declarative): YAML/JSON 파일에 원하는 리소스의 상태를 정의하여 적용하는 방식- 예: kubectl apply -f 명령형 방식 (Imperative): 터미널에서 직접 명령어를 입력하여 즉시 리소스를 생성 및 조작하는 방식- 예: kubectl create podAPI Client 방식 (Application-level): Python, Java 등의 고수준 API를 통해 코드 레벨에서 제어하는 방식- import kubernetes; client.get_namespaced_pod_list() API Cli..

저장소와 모듈 (ft. 모노레포/멀티레포/모노리스)

저장소(repository) + 모듈 (module) 조합프로젝트를 어떻게 쪼개고 묶느냐에 따라 다음 조합이 나옴구조설명장점단점모노레포 (Monorepo) + 멀티모듈하나의 Git 저장소에 여러 모듈을 넣는 방식코드 공유 쉬움, 히스토리 관리 일원화common이 비대해짐, CI/CD 빌드 시간 길어짐멀티레포 (Multirepo) + 멀티모듈여러 개의 Git 저장소에 각각 모듈을 쪼개는 방식팀별 독립성이 극대화, 강제 격리 가능코드 공유시 패키지 배포 필요, 버전 관리 절차 복잡모노리스(Monolith)하나의 저장소에 통짜(하나의 모듈) 개발초기 개발 속도 압도적 빠름규모 커지면 스파게티 코드됨, 확장에 어려워짐자바(Java) 는 빌드 시스템(Gradle, Maven)을 이용파이썬은 uv나 Poetry 같..

[자격증] CKA 취득 후기 (26년 9월)

응시 배경과거 도커를 처음배우고 한창 해메던 시절.. k3s 미니큐브로 구축된 서비스를 실무에서 처음 경험하며 SDK 연동해서 어케저케 플랫폼 서비스를 꾸역꾸역 만들던 시절이 있었는데, 이후 다음 회사에서는 직접 구축도 해보고 싶었지만? 기회가 없었다. 그러던 중 머릿속에서 기억이 완전히 사라지기 전에 한 번 지식 업데이트도 하고 싶었고, 앞으로도 계속 유망할 기술임은 뭐 확실해서, 자격증 시험 까지 도전하게 되었다. 개인적으론 예전이나 이번에도 느낀 거지만 웹프레임워크+도커 이정도만 만지다가, 쿠버를 경험해보면 약간 진짜 그 개발자 뽕?이 생기는? 약간 좀 그런 느낌이 있는 것 같다. (뭐랄까 좀 비약하면 우물안에 있다가 밖으로 나와서 처음 봤을 때의 느낌?) CKA 시험 이란CKA(Certified ..