이 글은 유튜브 개발자 유미 영상을 바탕으로 개인적인 정리를 위해 작성한 글입니다.https://www.youtube.com/watch?v=-g6goXtCilM&list=PLJkjrxxiBSFCgcsP_pzuntmqC3AlTMWFx 스프링 AI 란?스프링 AI는 LLM API를 활용한 여러 웹 시스템 (챗봇, 멀티모달, RAG)을 쉽게 구축하도록 도와주는 스프링 기반의 모듈 현재 AI 진영에서는 LangChain/LangGraph와 같은 파이썬 모듈의 편의성으로 자바/스프링 기반의 구현이 줄어들고 있다.이 문제를 해결하기 위해 2024년 스프링은 스프링 AI라는 모듈을 출시하게 된다. AI와 연관된 도구들을 쉽게 통합하도록 하는 프레임워크LLM API 호출챗모델 : 앤트로픽, 애저, OpenAI, ..
7장. IO 병목, 어떻게 해결하지네트워크 IO와 자원 효율서버는 클라이언트, DB, 레디스, 외부 API 등과 네트워크로 데이터를 주고받는다.네트워크 통신은 데이터를 보내는 write()와 받는 read()로 정리할 수 있다.DB에 SELECT 쿼리를 실행할 때도 서버가 쿼리를 전송하고 DB의 응답을 읽는다.입출력이 끝날 때까지 스레드가 기다리는 것을 블로킹이라고 한다.네트워크 연동이 많은 프로그램은 코드 실행보다 IO 대기에 더 많은 시간을 사용할 수 있다.요청마다 스레드를 할당하면 한 스레드가 IO를 기다리는 동안 다른 요청을 처리할 수 있다. 하지만 트래픽과 함께 스레드 수가 늘어나면 자원 효율이 떨어진다.스레드마다 사용하는 메모리가 증가한다.실행할 스레드를 바꾸는 컨텍스트 스위칭이 늘어난다.컨텍..
짠팟 인프라 개선 방향 — 보안과 확장성현재 단일 EC2 구조에서 발생할 수 있는 위험 요소를 분석하고, 트래픽 증가와 보안 위협에 대응하기 위한 AWS 인프라 개선 방향을 정리합니다.1. 현재 아키텍처 구조현재 짠팟의 전체 서버 흐름은 아래와 같습니다. 현재 짠팟은 VPC 내 Public/Private Subnet이 분리된 구조입니다. EC2(Nginx, Spring Boot Blue/Green, Prometheus+Grafana)는 Public Subnet에, RDS는 Private Subnet에 위치하여 외부 직접 접근이 차단되어 있습니다. 단, EC2는 단일 인스턴스로 운영 중이며 단일 AZ(ap-northeast-2a)에 집중되어 있습니다.2. 현재 구조의 위험 요소현재 짠팟은 모든 것이 EC2..
이 글은 유튜브 개발자 유미 영상을 바탕으로 개인적인 정리를 위해 작성한 글입니다.https://www.youtube.com/watch?v=SUwmtUjTArw&list=PLJkjrxxiBSFCgcsP_pzuntmqC3AlTMWFx&index=8 지난번에 등록한 OpenAI Chat 모델을 호출하는 메소드를 활용해 챗봇을 만들어보자 따라서 Chat 호출 메소드를 활용할 Controller 엔드포인트, View 페이지를 생성하기Controller- api > ChatController@Controllerpublic class ChatController { private final OpenAIService openAIService; public ChatController(OpenAIService ..
이 글은 인프런 딩코딩코의 백엔드 이력서 차별화 전략 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.언제 캐시를 만료시켜야할까? - 캐시 만료 정책앞서 어떤 데이터를 캐싱하면 좋을지 알아봤다.🤔 그렇다면 이렇게 캐싱된 데이터는 언제까지 캐시에 남아 있어야 할까? 한 번 저장된 캐싱 데이터는 계속해서 유효할 수 있을까? 현실의 백엔드 서버에서는 다양한 요청을 처리하는 과정에서 데이터가 지속적으로 생성, 수정, 삭제되며 원본 DB의 내용도 계속해서 변하게 된다.즉, 원본 데이터가 지속적으로 변경되는 상황에서 처음에 캐싱된 데이터가 계속해서 유효하다고 볼 수는 없다. 만약 캐시를 적절히 만료시키지 않거나, 원본 데이터의 변경 사항을 캐시에 반영하지 못한다면캐시 데이터와 원본 DB 간에 불일치가..