AWS 인프라 - ECS Fargate
·
TIL
EC2를 넘어 ECS Fargate로 서버리스 컨테이너와 무중단 배포 아키텍처 구축저번 글에선 AWS의 가장 기본적인 컴퓨팅 리소스인 EC2 인스턴스 하나에 Docker를 띄워 서비스를 배포하는 과정을 다뤘다.하지만 서비스를 운영하다 보니 몇 가지 한계에 부딪혔다.배포 시 다운타임 발생: 새로운 버전을 배포할 때마다 잠시 서비스를 멈춤서버 관리의 부담: EC2 인스턴스의 OS 보안 패치, 스케일링 등을 직접 신경 써야함.수동 배포의 번거로움: 코드를 짜는 시간보다 배포 스크립트를 돌리고 확인하는 데 쓰는 에너지가 큼.이번 글에서는 이러한 문제를 해결하기 위해 ECS Fargate를 도입하여 서버리스(Serverless) 아키텍처로 전환하고,GitHub Actions를 통해 무중단 자동 배포 파이프라인을 ..
AWS 인프라 기초 설계
·
TIL
AWS 인프라 기초 설계 · VPC · RDS · ElastiCache · EC2로 배포하기Spring Boot 애플리케이션을 실제 서비스 환경에 배포하려면 단순히 EC2 서버에 JAR 파일을 올리는 것만으로는 부족하다.네트워크(VPC), 데이터베이스(RDS), 캐시(ElastiCache), 애플리케이션 실행 환경(EC2)을어떻게 설계하고 연결했는지에 따라 서비스의 안정성과 확장성이 결정된다.이 글에서는 AWS에서 VPC + RDS(MySQL) + ElastiCache + EC2를 구성하고 연결한 과정을 정리한다.#전체 아키텍처 개요이번에 구성한 인프라의 핵심 요소는 다음과 같다.VPC - 독립된 가상 네트워크퍼블릭 서브넷 - 인터넷과 통신되는 영역프라이빗 서브넷 - 외부에서 직접 접근할 수 없는 내부 ..
Spring Boot 성능 최적화 10
·
TIL
로그 처리 · 모니터링 고도화 (ELK · Prometheus · Grafana)애플리케이션 성능을 개선하기 위해서는 단순히 코드를 최적화하는 것뿐 아니라, 서비스를 운영하면서 발생하는 지표와 로그를 정교하게 관측해야 한다.관측(Observability)은 장애 감지, 성능 병목 추적, 트래픽 분석, 자원 사용량 최적화까지 서비스 운영의 핵심 요소다.이 글에서는 실무에서 가장 많이 사용하는 모니터링 구성인 ELK + Prometheus + Grafana 중심으로 로그 · 메트릭 운영 전략을 정리한다.#로그(Log) 시스템 설계의 기본 원칙로그는 많다고 좋은 것이 아니며, 적다고 안전한 것도 아니다.로그는 “정확한 정보 · 적절한 양 · 구조화된 형태”의 3가지를 만족해야 한다.로그 설계 3원칙구조화된 로..
Spring Boot 성능 최적화 9
·
TIL
API 보안 · 인증 구조 성능 최적화 (JWT · 세션 · OAuth2)API 보안 구조는 단순히 인증(Authenticate)과 인가(Authorize)를 처리하는 것을 넘어,성능 · 확장성에도 직접적인 영향을 준다.잘못 설계된 인증 로직은 API 성능 병목, 세션 누락, 캐시 미스 증가 등 다양한 문제를 일으킨다.이 글에서는 Spring Boot 기반 서비스에서 자주 사용되는 인증 구조(JWT, 세션, OAuth2)의 성능 최적화 전략을 정리한다.#JWT vs 세션 vs OAuth2 — 무엇을 선택해야 할까?인증 방식은 서비스 성격에 따라 적절한 선택이 필요하다.성능, 확장성, 보안 요구사항을 기준으로 비교해보자.JWT의 장점서버에 세션 저장 필요 없음 → 확장성 높음Redis 없이도 멀티 서버 운..
Spring Boot 성능 최적화 8
·
TIL
WebClient 기반 비동기 처리 최적화외부 API 호출은 많은 서비스에서 가장 큰 지연 요인이다.동기 RestTemplate은 요청마다 스레드를 점유하기 때문에, 트래픽이 증가하면 스레드 고갈(thread exhaustion) 문제가 발생한다.Spring WebClient는 비동기·논블로킹 방식으로 외부 API를 처리하여 더 높은 동시성과 효율을 제공한다.이 글에서는 WebClient의 핵심 개념과 성능 최적화 전략을 정리한다.#RestTemplate과 WebClient 비교RestTemplate은 동기 방식으로, 요청마다 스레드가 점유된다.반면 WebClient는 이벤트 기반 비동기 구조로, 요청 대기 시간 동안 스레드를 반환하므로 높은 동시성을 처리할 수 있다.RestTemplate 한계요청 동안..
11/7
·
TIL
Spring AI 기반 e스포츠 챗봇 고도화처음엔 “오늘 경기 있어요?” 같은 질문에 DB를 조회해 답하는 단순 챗봇이었다.실제 사용 흐름에선 일정·승률·핫 키워드·외부 소식까지 다양하게 묻는다.Spring AI의 tool calling을 시작으로, 도메인별 툴 분리, 기존 서비스 연동, 외부 API 확장까지 단계적으로 넓혀 간 과정을 간단하게 정리했다.도메인 별 툴 분리핵심은 AI가 사용자 질문 의도를 분석해 적절한 도메인 툴로 연결해주는 것이었다.일정은 `query_schedule`,날짜 지정은 `query_schedule_by_date`,승률은 `analyze_winning_rate`,인기 키워드는 `query_hot_keywords`,외부 소식은 `query_cs2_news`로 툴을 명확히 나눴다..
11/6
·
TIL
Spring AI 챗봇 오류 트러블슈팅 기록프로젝트 진행 중 발생했던 `tool_use_failed` 오류와 시간대(Timezone) 불일치로 인한 경기 조회 누락 문제를 정리했다.tool_use_failed 오류문제 상황챗봇 개선 중 서버에서 모델 툴 호출 실패 오류가 발생했다."code": "tool_use_failed", "failed_generation": "원인 분석[툴 사용 원칙]일정/승률/예측 등 사실 확인이 필요하면 제공된 툴을 사용한다.한 번에 여러 툴이 필요하지 않다면 호출을 최소화한다.[툴 사용 예시]사용자: 오늘 경기 있어요?도구호출: query_schedule({"when":"오늘"}) 1. few-shot prompt에 들어간 툴 사용 예시 텍스트를 모델이 그대로 응답 본문에 붙..
11/5
·
TIL
CoT와 React 패턴 적용CoT(Chain-of-Thought) 적용CoT란?CoT(Chain-of-Thought)는 사용자의 질문에 대해 단계적 사고 절차를 모델 내부에서 수행하도록 유도하는 프롬프트 기법이다.핵심은 생각은 내부에서 정리하고, 최종 답만 출력하게 만드는 것이다.사고 절차 흐름은 다음과 같다.의도 파악 → 필요한 데이터 확인 → 도구 선택 및 실행 → 결과 통합 → 검증CoT 적용 전“안녕하세요!” 같은 단순한 인사에도 장황한 답변이 반복되었고, 불확실한 경우에는 “정보가 부족합니다.”를 과도하게 남발했다.String prompt = """ 아래는 사용자와 챗봇 간의 최근 대화 내용입니다. 대화의 흐름을 이해하고, 사용자의 질문에 답변하세요. 대화 내역: %s ..
11/4
·
TIL
AI 챗봇 구현 진행 중인 프로젝트에서 AI를 활용한 대화형 챗봇을 구현했다.단순히 텍스트 응답을 생성하는 수준을 넘어, 비동기 이벤트 흐름 기반의 실시간 응답 구조를 설계하는 것이 핵심 목표였다. 전체 설계 개요가장 중요한 설계 목표는 비동기 메시징 기반의 실시간 응답 파이프라인을 구축하는 것이다.사용자의 입력은 Redis Pub/Sub을 통해 비동기로 전달되고,AI는 Groq API를 통해 자연어 응답을 생성한 뒤 WebSocket을 통해 클라이언트로 다시 전달한다.사용자 입력 ↓RedisPublisher → chat:{userId}:input ↓ChatMessageSubscriber → ChatbotService.reply() ↓Groq API → 자연어 응답 생성 ↓RedisPubl..
Spring Boot 성능 최적화 7
·
TIL
트래픽 급증 대비 아키텍처 패턴 (Rate Limit · Circuit Breaker · Bulkhead)서비스는 항상 일정한 트래픽을 받지 않는다.이벤트, 광고, 점검 알림, 외부 봇 접근 등으로 인해 순간적인 트래픽 급증이 발생할 수 있다.이때 API와 서버가 이를 제대로 처리하지 못하면 장애로 직결된다.본 글에서는 고트래픽 상황에서 시스템을 보호하기 위한 아키텍처 패턴들을 정리한다.#Rate LimitingRate Limiting은 “특정 사용자 또는 IP가 너무 많은 요청을 보내지 못하도록 제한하는 기술”이다.봇 공격, 반복 재시도, 과도한 호출로 인한 장애를 예방하는 데 효과적이다.적용 방식IP 또는 사용자 단위 요청 제한특정 API별 제한 (예: 로그인, 회원가입)외부 API 호출 제한Redi..