모든 질문을 벡터 검색으로 해결할 수 있을까?
·
탐구/AI
0. 들어가며나는 라멘집을 소개하는 서비스를 만들면서 이용자들이 더 나은 판단을 할 수 있도록 가게들의 리뷰를 어떻게 보여줄지 고민한 적이 있다. 리뷰를 그대로 나열하는 방식은 간단하지만, 리뷰가 많아질수록 사용자가 모든 내용을 직접 읽어야 한다는 문제가 있었다. 그래서 처음에는 각 매장의 리뷰를 LLM에게 전달하고, 주요 의견을 요약해서 보여주는 기능을 도입했다. 리뷰의 양이 많지 않을 때는 이 방식만으로도 충분해 보였다. 하지만 리뷰가 매우 많은 매장이 등장하고 사용 상황이 다양해지면서 몇 가지 문제가 눈에 띄기 시작했다. 모든 리뷰를 매번 LLM에게 전달하는 것이 과연 효율적인지, 사용자의 관심사와 관계없는 리뷰까지 모두 Context에 포함해야 하는지, 그리고 필요한 리뷰만 일부 전달한다면 어떤 ..
장애 이후 데이터베이스를 어떻게 복구할까? - ARIES로 알아보는 복구방법
·
탐구/DB
WAL만으로 장애 복구는 끝난 걸까?이전 글에서는 데이터베이스가 원자성 및 지속성을 보장하기 위해 어떤 방법을 사용하는지 살펴봤다. 성능과 버퍼 풀 활용을 위해 데이터베이스는 트랜잭션이 커밋되기 전에 더티 페이지를 디스크에 기록할 수 있는 STEAL 정책과, 커밋할 때 수정한 모든 데이터 페이지를 디스크에 기록하도록 강제하지 않는 NO-FORCE 정책을 사용할 수 있다. 이러한 정책 덕분에 데이터베이스는 버퍼 풀을 효율적으로 활용하고 커밋마다 모든 데이터 페이지를 기록하는 비용을 피할 수 있다. 하지만 그 대가로 장애가 발생한 직후의 데이터 파일은 트랜잭션의 결과와 다를 수 있다.이를 해결하기 위해 데이터베이스는 WAL(Write-Ahead Logging)​을 사용한다. 데이터 페이지보다 해당 변경을 설..
커밋은 데이터 저장이 아니다 - WAL로 이해하는 원자성과 지속성
·
탐구/DB
앞서 이전글에선 원자성이란 무엇인지, 원자성이 단순히 트랜잭션의 상태를 보장하면 끝인가? 에 대해서 탐구했다. 이번 시간에는 이러한 원자성과 지속성을 지키기 위해서 데이터베이스가 어떤 방법을 사용하는지에 대해 알아보자.SQL 변경은 디스크에 바로 기록되지 않는다우리가 흔히 UPDATE문과 같이 파일을 수정하면 값이 즉시 바뀐다고 생각하기 쉽다. 물론 나 혼자 사용한다면 즉각적으로 파일을 바꾼다고 별 문제가 생기진 않을 것이다. 하지만 동시에 많은 수의 사용자가 데이터베이스를 사용하면 어떨까?일반적으로 데이터베이스 파일이 저장되는 디스크는 메모리 계층 구조의 하단에 위치한다. 많은 데이터를 영구적으로 저장할 수 있는 대신, 메모리보다 접근 속도가 훨씬 느리다. 따라서 데이터가 변경될 때마다 디스크의 파일을..
원자성(Atomicity)이란? - DB도 내 한 몸 건사하기 어렵다
·
탐구/DB
데이터베이스 트랜잭션의 4가지 속성 ACID는 컴퓨터공학을 전공했거나 데이터베이스를 접해봤으면 누구나 한번 들어봤을 법한 개념이다.오늘은 이 중요한 속성 4가지 중, 원자성(Atomicity)에 대해 알아보도록 하자. 1. 원자성의 기본 정의원자성을 알기 전, 트랜잭션에 대해 먼저 알아야 하는데, 트랜잭션이란 하나 이상의 SQL 문을 포함하는 논리적이고 원자적인 작업 단위다.즉, 모든 트랜잭션은 여러 단계를 모두 완료로 처리하거나 모두 실패로 묶여야 하는 것이다. 이는 해당 변경사항들이 데이터베이스에 적용되었거나 모두 취소되었음을 의미하고 중간만 반영된 상태가 남아서는 안된다. 그리고 이런 트랜잭션의 성질을 원자성이라고 한다. 예를 들어 우리는 은행 서비스를 운영중이다. A라는 사람이 B라는 사람에게 돈..
자바 개발자도 AI 에이전트를 만들 수 있을까? - Do it! 스프링 AI를 활용한 AI 에이전트 개발입문 후기
·
서적
요즘 AI 개발이라고 하면 자연스럽게 파이썬, LangChain, FastAPI 같은 키워드가 먼저 떠오른다. 그래서 자바나 스프링을 주로 사용하는 백엔드 개발자 입장에서는 AI 서비스 개발이 조금 멀게 느껴질 수 있다.하지만 『Do it! 스프링 AI를 활용한 AI 에이전트 개발 입문』은 그 거리감을 꽤 현실적으로 좁혀 주는 책이다. 이 책의 핵심 메시지는 명확하다. “AI 개발은 더 이상 파이썬 개발자만의 영역이 아니며, 자바와 스프링만으로도 충분히 AI 에이전트 서비스를 만들 수 있다.”이 책은 단순히 OpenAI API를 호출해 보는 수준에서 끝나지 않는다. Spring AI를 기반으로 ChatClient, 프롬프트 템플릿, 스트리밍 응답, ChatMemory, RAG, Tool Calling, ..
안쪽까지 들여다 보는 스프링시큐리티 책 후기
·
서적
백엔드 개발자로서 애플리케이션의 보안을 튼튼하게 지켜내는 것은 늘 고단하고 도전적인 과제였다. 복잡하게 얽힌 인증과 인가 로직을 날것으로 구현하기에는 초보자 시절의 나에게 너무 벅찼을뿐더러, 세션 관리부터 데이터베이스, 외부 시스템 연동까지 수많은 컴포넌트와의 유기적인 상호작용이 필요했기 때문이다.물론 개발을 계속해 오면서 지금은 어느 정도 스프링 시큐리티의 아키텍처가 눈에 익었고 흐름도 파악하고 있다. 하지만 여전히 레퍼런스나 공식 문서를 보지 않고 백지상태에서 완벽한 보안 환경을 뚝딱 구현해 내기란 쉽지 않은 일이다. 그래서 이 책을 읽으며 문득 이런 생각이 들었다.'만약 내가 아무것도 모르며 헤매던 초보 시절에 이 책을 봤다면 얼마나 좋았을까?'오늘 소개할 강준현 저자의 『안쪽까지 들여다보는 스프링..