전체 글130 AI 에이전트, 커스텀 규칙(Rules)과 MCP(Model Context Protocol) AI 에이전트 확장 가이드규칙(Rules) & MCP 아키텍처 설계와 디렉토리 구조 비교1. 확장 개념 핵심 비교 (Concepts Comparison)규칙, 스킬, MCP는 에이전트 기능을 정의하는 세 가지 다른 추상화 레이어입니다.구분규칙 (Rules)스킬 (Skills)MCP (Model Context Protocol)쉽게 말해 (비유)프로젝트의 "헌법과 개발 원칙" (상시 켜짐)특정 기술/도메인 "가이드북" (상황별 동적 로드)에이전트가 쓰는 "외부 도구/앱" (런타임 연동)동작 원리 (Mechanism)세션 시작 시 에이전트 콘텍스트에 상시 자동 주입됨특정 키워드/디렉토리 감지 시 지침을 동적으로 주입외부 자원(DB, API) 접근 필요 시 에이전트가 도구 직접 호출공유/호환 방식 (Sharin.. 카테고리 없음 2026. 7. 5. [Design Pattern :Strategy Pattern)] 상속 대신 합성 자바 객체지향에서 자주 사영 하는 상속(Inheritance)을 잘못사용하는 경우 클래스가 기하급수적으로 늘어나는 '클래스 폭발(Class Explosion)'을 맞고 유지보수에 어려움을 느낄수있다.흔히 아는 롤(LoL)의 '챔피언과 스킨‘ 을 예시로, 상속 대신 합성(Composition)을 사용하는 이유와 OCP를 지키는 전략 패턴(Strategy Pattern)에 대해 이야기 해보겠다.1️⃣ 만약 스킨을 '상속'으로 구현한다면? (문제 상황)가렌(Garen)이라는 챔피언이 있다고 치자.새로운 스킨이 출시될 때마다 상속을 사용해서 구현하면 대략 이런 그림이 나온다.class Garen { ... }class PrestigeGaren extends Garen { ... }class PoolPartyGa.. 카테고리 없음 2026. 6. 1. [분산 환경 구축기] 동시성 제어와 캐싱 전략 동시성 제어와 캐싱 전략: 왜 로컬 캐시가 아닌 Redis를 선택했는가?대규모 트래픽이 발생하는 선착순 이벤트나 재고 차감 로직을 처리할 때, 서버 한 대로는 트래픽을 감당할 수 없어 여러 대의 서버로 확장(Scale-out)하는 다중 서버 아키텍처를 채택하게 됩니다. 이때 데이터베이스(DB)의 부하를 줄이고 응답 속도를 높이기 위해 '캐싱(Caching)'을 도입합니다. 하지만 서버가 여러 대로 분산된 환경에서는 캐시를 어디에, 어떻게 둘 것인지에 따라 데이터 정합성(Data Consistency)이라는 중대한 문제에 직면하게 됩니다. 본 글에서는 다중 서버 환경에서 로컬 캐시(Local Cache)가 가지는 구조적 한계를 짚어보고, 왜 글로벌 캐시인 Redis를 선택해야 하는지 정리해 보았습니다.1... 카테고리 없음 2026. 5. 26. [로그통합 2] ELK, 일단 구축해보자 (feat. 라이선스의 벽) 저번 글에서 ELK, EFK, PLG 스택을 비교해봤고, 그 중 가장 먼저 ELK를 선택했다고 했다. 레퍼런스도 많고, 커뮤니티도 활발하고.. 일단 해보고 안되면 바꾸자는 마음이였다ELK, 어떤 버전으로 구축할까?ELK를 선택했는데 여기서 또 선택지가 생긴다.ELK는 크게 두 가지 버전이 있다.버전 라이선스 비고유료 버전 (Elastic License)상업적 이용 제한모든 기능 사용 가능오픈소스 버전Apache 2.0 / AGPL버전마다 다름재직중인 회사는 외부 고객사에 납품하는 구조라 상업적으로 자유롭게 쓸 수 있는 Apache 2.0 라이선스가 필요했다. 그러니 오픈소스 버전으로 가야 했는데.. 일단 최신 버전부터 구축해봤다.먼저 최신 오픈소스 버전으로 구축Elastic은 2024년에 다시 오픈소스 .. 카테고리 없음 2026. 3. 29. [로그통합 1] ELK? EFK? PLG? 인턴 과제였던 로그 서비스 2023년 11월 당시 현재 재직중인 회사에 인턴으로 입사하여 받았던 과제는 로그서비스 개발이였다.당시엔 인턴과제에서 끝나는 것이라 생각했지만 실제 서비스 배포까지 될줄은 몰랐지.. 사담은 이만하고 로그서비스에 대해서 이야기 해보겠다. 로그란?실제 서비스에서 발생한 동작이나 상태를 기록한 데이터. 로그가 중요한 이유는 실제 특정 서비스에서 발생한 문제를 확인하고 이를 해결 하기 위해서 매우 중요하다.물론 개발자가 찍는것이라 의미있는 로그를 적절한 타이밍에 찍는것이 매우 중요하다.너무 없어도 안되고, 너무 많으면 성능상 영향을 미칠 수 있다. 특히 현재 재직중인 회사는 on-premis 형태로 외부 고객사 사이트 구축을 나가기에 직접 서비스를 보기 어려운 경우가 있어 로그를 잘 찍어주는 것이 매우 중요.. 카테고리 없음 2025. 6. 1. 랜덤 이름 생성기 지난번 프로젝트를 진행하면서 별건 아니지만 랜덤 이름을 만들어야 할 일이 있어서 추가 하였던 코드 이다.package com.carspotter.CarSpotter.service;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;import java.util.Arrays;import java.util.List;import java.util.Random;@Service@RequiredArgsConstructor@Slf4jpublic class NicknameService { private static final List adjectives = .. JAVA 2025. 6. 1. [Github] about에서 Deployment를 활성화 해도 보이지 않는 문제 문제 상황repository 내에 workflows가 있지만 About에서 Deployments가 안보이는 현상이 있었다. 해결 방법1. 톱니바퀴(settings) 클릭후 Deployements 활성화2. workflows에서 환경 설정yml에 environment 추가사용하는 yml문법에 따라 다를 수 있어 두가지 경우를 추가하였는데 environment 만 추가하면 된다. environment: production 3. Deployments가 잘 보이는것을 확인할 수 있다. 카테고리 없음 2025. 4. 10. aws bugets 설정 단순 프리 티어 예산 설정 1. 회원가입을 통해 카드 설정이 완료된 후에 하면 좋을 설정이다. 2. 예산 생성 클릭 3. 프리티어의 경우 다음과 같이 설정할 수 있다. (이메일을 설정하여 예산이 넘어가는 경우 알림을 받을 수 있다) 주의프리티어 예산을 설정해도 알림이 올뿐이지 1년이 지나면 알림과 함께 과금된다. 따라서 사용하지 않는경우 인스턴스 종료를 생활화 하자 고급 예산 설정1. 고급 예산을 클릭하면 아래와 같은 화면을 확인할 수 있다. 2. 이름을 설정하고, 월별 일별 등으로 설정할 수 있다. 3. 시작일과 예산 측정방법등을 선택하여 진행하면된다. 4. 알림 임계값 또한 설정 가능하다. 해당 기능을 활성화 하면 위에 작성된 금액에서 nn%에 다다르면 알림이 온다. 5. 이후 확인확인 을 .. 카테고리 없음 2024. 12. 22. SQLP 준비 1. SQL파싱과 최적화SQL : Structured Query Language ⇒ 구조적 질의 언어 이다.옵티마이저가 프로그래밍을 대신해준다.SQL 최적화SQL 파싱파싱 트리 생성Syntax 체크Sementic 체크SQL 최적화옵티마이저가 생성한것중 최적인것을 선택한다.로우 소스 생성(로우소스 생성기)옵티마이저가 선택한 실행 경로를 실제 실행가능한 프로시저 형태로 포맷팅 한다.SQL 옵티마이저사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 액세스 경로를 선택해주는 DBMS의 핵심 엔진이다.실행 계획과 비용옵티 마이저가 실행계획을 선택하는 근거는? cost(비용), 쿼리를 수행하는 동안 발생할것으로 예상되는 I/O횟수 또는 예상 소요시간을 표현한것이다.cost는 예상치이기에 실제 실행시에는.. 카테고리 없음 2024. 9. 1. SQL 레벨업 1장 : DBMS 아키텍처 개요1장 : DBMS 아키텍처 개요DBMS 내부의 기능쿼리 평가 엔진→ 핵심!입력 받은 엔진은 사용자로 부터 입력받은 sql 구문을 분석하고 어떤 순서로 기억장치의 데이터에 접근할지를 결정합니다. 이때 결정 되는 계획을 실행 계획이라 부른다.이 책에서 중요하게 이야기하는 성능과도 깊은 관련이 있는 모듈이다.버퍼 매니저디스크 용량 매니저트랜잭션 매니저와 락 매니저리커버리 매니저2장 : DBMS의 버퍼DBMS와 기억장치의 관계HDD현재 대부분의 dbms는 HDD에 저장한다.2차 기억장치좋은 장점도 나쁜 단점도 없는 매체메모리디스크에 비해 기억 비용이 비싸ㅈ다.데이터 베이스 내부 데이터를 모두 메모리에 올리는것을 불가능 하다.버퍼를 활용한 속도 향상DBMS가 일부라도 데이터를 메모리.. 책 리뷰 2024. 3. 24. Redis pub/sub을 활용하여 채팅서버 구성하기 레디스를 적용했던 이유 기존에 다른 시스템에서 채팅서버를 구성하면서 spring에 내장되어 있는 SimpleBroker(message broker)을 활용한 경험이 있습니다. 하지만 해당 방법은 하나의 서버에 비즈니스 로직과 채팅 로직 모두 동작하여 성능을 낮출 수 있습니다. 또한 만약 서버가 확장된다면 한 서버에 있는 메시지 브로커에서만 동일한 채팅 구독정보를 가지고 있어 확장성에 안 좋다는 문제가 있습니다. 이를 해결하기 위해 저희 팀은 redis pub/sub구조를 활용하여 채팅서버를 사용하였습니다. (근데 만약 레디스 서버에 문제가 생기면 메세지가 유실되는 문제가 발생될 수 있습니다. 또한 지금까지의 구독기록 모두 날아가버리는 일이 발생할 수 있습니다. ) 일단 저희팀은 rabbitMQ와 Redi.. 카테고리 없음 2023. 10. 31. 7장 오류처리 우아하고 고상하게 오류를 처리하는 기법과 고려 사항 몇 가지를 소개한다. 오류 코드보다는 예외를 사용해라 오류가 발생하면 예외를 던지는 것이 낫다. 그러면 호출자 코드가 더 깔끔해진다. 논리가 오류 처리 코드와 뒤 섞이지 않으니까. public class DeviceController { DeviceHandle handle = getHandle(DEV1); if (handle != DeviceHandle.INVALID) { retrieveDeviceRecord(handle); if (record.getStatus() != DEVICE_SUSPENDED) { closeDevice(handle); } else { logger.log("Device suspended. Unable to shut down"); .. 책 리뷰/클린코드 2023. 10. 14. 이전 1 2 3 4 ··· 11 다음