이것이 Spring AI다 - 텍스트 및 음성 대화에서 MCP Server까지 Spring AI의 모든 것
신용권 지음 / 한빛미디어 / 2025년 8월
평점 :
장바구니담기


Spring 기반 환경에서 생성형 AI를 어떻게 실무에 통합할지 구체적으로 보여준다. 텍스트 대화부터 RAG, 도구 호출, MCP까지 단계적으로 확장하며, 자바 개발자가 익숙한 방식으로 AI 기능을 구현하도록 돕는다. 이론과 실습의 균형이 좋아 실질적인 길잡이가 된다. Java, Spring 개발자에게 추천한다.

댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
이것이 Spring AI다 - 텍스트 및 음성 대화에서 MCP Server까지 Spring AI의 모든 것
신용권 지음 / 한빛미디어 / 2025년 8월
평점 :
장바구니담기



생성형 AI 애플리케이션을 만든다고 하면 대개 파이썬을 먼저 떠올리게 된다. 랭체인이나 라마인덱스처럼 검증된 툴킷이 풍부하고, 공개 자료도 많아 프로토타이핑이 빠르기 때문이다. 그러나 서비스 현장은 또 다른 언어로 움직인다. 백엔드가 JVM 계열이고 Spring Boot로 구축된 시스템이라면, “AI를 어떻게 붙일 것인가”가 곧바로 실무의 문제로 바뀐다. 파이썬 생태계에서 익숙했던 개념들을 자바와 스프링의 문법으로 다시 정렬해 주고, 그 위에 RAG와 도구 호출, 그리고 최근 가장 뜨거운 화두인 MCP까지 연결해 보여준다.


Spring AI를 한 문장으로 요약하면, 자바 개발자가 생성형 AI 기능을 기존 스프링 방식으로 자연스럽게 통합할 수 있게 만드는 프레임워크라 할 만하다. OpenAI, Hugging Face 등 다양한 LLM을 자동으로 구성하고, 여러 벡터 저장소 연동도 지원한다. 대화 기억, RAG, 도구 호출 같은 핵심 기능이 단편적인 예제로 흩어져 있지 않고, 스프링 부트 개발자가 실제로 프로젝트를 만들 때 밟게 되는 순서로 정리되어 있다는 점이 이 책의 강점이다. 


1장에서 개발 환경을 구축하고, 2장 이후 반복해서 사용하게 될 공통 코드와 UI 구성 요소를 먼저 설명함으로써, 중간에 길을 잃지 않도록 발판을 마련한다. 의존성에 OpenAI 스타터를 추가하여 OpenAI가 제공하는 모델을 호출하는 흐름은 “스프링스럽게” 깔끔하게 정리되어 있는데, 예제 실행을 위해 application.properties에 API 키를 입력해야 하는 기본 사항을 명확히 짚어주는 것도 실습서로서의 책임감이 느껴진다. 이어서 ChatClient, SystemMessage, UserMessage 같은 구성 요소를 설명하며, LLM을 호출하는 방식이 단순한 문자열 요청이 아니라 “대화 문맥을 설계하는 일”이라는 감각을 자연스럽게 체득하게 한다.


중반 이후부터 책은 확실히 속도를 올린다. 9장 대화 기억에서는 Apache Cassandra 같은 분산 NoSQL 데이터베이스를 기억 저장소로 활용하는 흐름을 Docker 컨테이너로 구성하고, VS Code에서 Cassandra 확장까지 설치해 확인한다. 대화 기억을 단순히 메모리로 처리하는 수준이 아니라, 저장소를 선택하고 운용하는 관점으로 확장해 주기 때문에, “챗봇 데모”를 넘어 “서비스”에 가까운 감각을 얻는다.


11장 도구 호출은 생성형 AI가 ‘말만 잘하는 모델’에서 ‘일을 처리하는 모델’로 넘어가는 관문을 다룬다. @Tool 어노테이션으로 도구를 정의하고, LLM이 전달하는 매개값 외에 애플리케이션이 직접 관리하는 정보를 ToolContext로 주입하는 방식은, 도구 호출을 단순한 함수 실행이 아니라 ‘안전한 경계 설정’으로 이해하게 만든다. 파일 관리 도구나 인터넷 검색 도구를 결합하는 예제 역시, 실제 업무에서 바로 떠올릴 법한 형태로 구성되어 있어 실습의 체감도가 높다.


그리고 이 책의 하이라이트는 12장 MCP이다. MCP는 요즘 생성형 AI 업계에서 가장 자주 언급되는 키워드 중 하나인데, 이 책은 이를 “유형별 조합”으로 정리하며 이해의 부담을 낮춘다. 클라이언트와 서버 간 통신 방식부터 짚고, JSON-RPC 메시지 기반의 주고받음을 바탕으로, 동일 PC에서 서버를 구동할 때는 STDIO 방식, 다른 PC에서 구동될 때는 SSE 방식으로 통신한다는 구분을 명확히 보여준다. 특히 SSE는 한 번 연결을 구성한 뒤 서버가 지속적으로 데이터를 밀어주는 방식이라는 설명이, 실제 운영 관점에서 왜 이런 통신이 필요한지 감을 잡게 한다.


부록의 구성 또한 실무적이다. OpenAI API 키 발급 방법을 안내하는 데서 멈추지 않고, 외부 서버 실행을 위해 Docker Desktop 설치를 진행하며, 로컬 LLM을 위한 Ollama 설치와 llama3.2 2.3b 모델 다운로드 및 실행까지 이어진다. 여기서 독자는 “클라우드 LLM만이 답이 아니다”라는 선택지를 손에 넣는다. 비용과 보안, 지연 시간 같은 현실적인 제약 속에서 로컬 실행이 왜 필요해지는지를, 도구 설치와 실행 경험을 통해 납득하게 된다.


실습 흐름도 설득력이 있다. 먼저 MCP Server를 구성하고(build.gradle 의존성, application.properties 설정, 자바 파일에서 제공 도구 정의와 도구 메타정보 설정, 최종 jar 산출), 그 다음 해당 서버를 사용하는 애플리케이션을 구성한다. STDIO 방식에서는 애플리케이션 구동 시 서버도 함께 떠야 하므로 구성 파일에 MCP Server를 등록하고, LLM으로부터 도구 호출 요청을 받으면 애플리케이션이 MCP Server에 실행을 지시한 뒤 결과를 LLM에게 전달하는 전체 경로를 따라간다. 


서버 설정을 담은 JSON 파일에 서버 이름과 실행 파일 경로를 나열하고, 필요한 API KEY나 ACCESS TOKEN을 지정하는 방식은, “도구를 기능별로 분리해 여러 MCP Server로 운영하는 편이 사용하기 좋다”는 조언과 맞물려 설계 감각까지 전달한다. 또한 도구 호출 정보를 프롬프트의 시스템 텍스트에 포함시키지 않으면 할루시네이션 위험이 커진다는 경고는, 기술을 ‘되게 하는 법’에서 끝나지 않고 ‘안전하게 쓰는 법’까지 끌어올려 준다.


책을 덮고 나면 전체 구조가 또렷하게 남는다. 9장까지는 생성형 AI를 다루는 기본기, 10장 RAG, 11장 도구 호출, 12장 MCP는 중고급 주제를 다루며 최신 흐름을 밀도 있게 담아낸다. 텍스트 대화부터 멀티모달, 임베딩과 벡터 저장소, 대화 기억과 RAG, 도구 호출과 MCP까지 한 권에서 이어지니, 독자는 “어떤 기능을 언제 끼워 넣어야 하는지”라는 개발자의 질문에 답을 얻게 된다.


#SpringAI #스프링AI #SpringBoot #스프링부트 #Java #자바개발 #백엔드개발 #AI개발 #생성형AI #LLM #OpenAI #HuggingFace #ChatModel #ChatClient #프롬프트엔지니어링 #RAG #벡터DB #벡터저장소 #임베딩 #대화기억 #ToolCalling #도구호출 #MCP #MCPServer #JSONRPC #STDIO #SSE #Docker #Ollama




댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
바꿀 수 없는 것을 바꾸지 않을 용기 - 나를 있는 그대로 사랑하는 연습
천하이센 지음, 박영란 옮김 / 더페이지 / 2026년 2월
평점 :
장바구니담기



* 출판사에서 도서 협찬을 받았습니다. 하지만 개인의 주관적인 견해로 작성하였습니다.


우리가 겪는 많은 갈등과 불안은 애초에 내가 바꿀 수 없는 것을 붙잡고 있기 때문에 생긴다. 타인의 마음, 이미 지나간 사건, 과거의 결정은 내 통제 밖에 있다. 그럼에도 우리는 그 영역을 붙들고 스스로를 비난하고 후회한다. 그러나 상황을 바꾸지 못하더라도, 그것을 해석하는 태도와 앞으로의 선택은 여전히 나의 몫이다. 저자는 이 구분이야말로 삶의 방향을 바꾸는 분기점이라고 말한다.


인상 깊었던 점은 포기와 체념을 단순히 부정적으로만 보지 않았다는 것이다. 우리는 포기를 나약함이라 부르고, 체념을 패배로 규정한다. 하지만 무조건적인 집착과 버팀이 오히려 자신을 더 깊은 소모로 이끌 수 있다. 바꿀 수 없는 것을 인정하는 태도는 도망이 아니라 성숙이다. 억지로 붙들지 않고 내려놓을 줄 아는 용기, 그것이 오히려 더 단단한 힘일지도 모른다.


아이들과의 일상에서도 이 메시지는 자연스럽게 떠오른다. 아이들 사이에 다툼이 생겼을 때, 먼저 사과한 아이의 용기를 칭찬해 주면서도 상대 아이의 반응을 억지로 바꿀 수 없다는 사실을 받아들인다. 내가 선택할 수 있는 것은 나의 말과 태도뿐이다. 상대의 마음을 통제하려 하기보다, 나의 태도를 책임지는 것. 책이 말하는 용기는 거창한 결단이 아니라 이런 작은 순간 속에 있다.


꿈에 대해서도 다시 생각하게 만든다. 우리는 “꿈을 가져라, 목표를 향해 달려라”는 말을 들으며 자랐다. 그러나 그 꿈이 정말 나의 것인지 묻는 일은 드물다. 꿈은 방향을 제시하지만, 때로는 현재를 무가치하게 만들기도 한다. 승진하면, 결혼하면, 집을 사면, 아이가 자라면 행복해질 것이라며 지금의 시간을 유예한다. 그러나 삶은 늘 지금에서만 존재한다.


완벽하지 않아도 괜찮다는 것. 부모와의 관계가 이상적이지 않아도, 꿈을 이루지 못해도, 계속 변화하지 못해도 우리는 충분하다. 자기 수용과 자기 연민은 나태함이 아니라 심리적 성숙의 출발점이다. 통제 가능한 영역에 집중하고, 사소해 보이는 일에도 몰입하며, 현재의 경험을 온전히 느끼는 것. 그것이 불안을 다루는 실질적인 방법이다.


#바꿀수없는것을바꾸지않을용기 #천하이센 #자기수용 #자기연민 #불안관리 #마음공부 #심리학책 #심리상담 #감정관리 #내면성장 #성숙한태도 #관계회복 #부모와자녀 #육아생각 #아이와함께성장 #꿈에대하여 #현재를살다 #몰입의힘 #통제가능한것 #내면의평화 #삶의방향 #집착을내려놓다 #포기와용기 #체념의의미 #행복의조건 #마음치유 #일상의깨달음 #성장에세이 #인생통찰 #책속문장




댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
다시 살아내는 힘, 논어 - 나를 일으켜 세운 논어 한마디
한덕수 지음 / 지니의서재 / 2026년 2월
평점 :
장바구니담기




* 출판사에서 도서 협찬을 받았습니다. 하지만 개인의 주관적인 견해로 작성하였습니다.


고전을 다시 펼친다는 일은 언제나 약간의 각오를 필요로 한다. "논어"라는 이름은 익숙하면서도 동시에 묵직하다. 오래된 지혜라는 사실만으로도 쉽게 다가가기 어려운 거리감이 존재한다. 원전을 권위로 세워두기보다, 오늘의 삶 속으로 조심스럽게 옮겨놓는다. 고전을 추상적 교훈으로 남겨두지 않고, 실제 삶의 장면과 연결해 해석하려는 태도가 일관되게 유지된다.


학이편에서 장자편에 이르기까지 "논어"의 흐름을 따라가되, 각 부주제마다 하나의 질문을 던진다. 그리고 그 질문에 응답하듯 공자의 말을 우리말로 풀어 제시한다. 복잡한 한자어에 갇히지 않도록 현대적 언어로 번안하고, 그 위에 저자의 해석을 덧붙인다. 단순한 주석서가 아니라, 공자의 언설을 매개로 동시대의 삶을 재사유하는 성찰서에 가깝다.


우리는 평온할 때보다 어려움에 처했을 때 비로소 자신의 기준을 시험받는다. 규칙을 지키는 일, 합리적으로 판단하는 일, 감정에 휩쓸리지 않는 태도는 평소에는 사소해 보이지만 위기 속에서야 비로소 그 가치가 드러난다. 현대 사회의 언어로 옮기면, 정당성을 잃지 않는 선택을 하라는 요청처럼 들린다.


고전을 억지로 현대의 유행어로 바꾸지 않는다. 친절하지만 중심은 단단하다. 문장이 간결하여 여백이 충분하다. 그 여백이 곧 사유의 공간이 된다. 하루에 한 장씩 읽기에 적합하다. 일력처럼 곁에 두고 천천히 마주하기 좋은 책이다. 원전과 직접 대면하는 경험이 제한적으로 느껴질 가능성도 있다. 그러나 이는 접근성을 높이기 위한 선택으로 보인다. 고전을 처음 접하는 이들에게는 좋은 길잡이가 된다.


#논어 #다시살아내는힘 #한덕수 #공자사상 #고전읽기 #동양철학 #유가사상 #군자 #인과예 #삶의태도 #자기성찰 #인문학추천 #고전입문서 #철학책추천 #현대적해석 #위기속태도 #판단의기준 #마음의근육 #내면의성장 #품격있는삶 #관계의지혜 #하루한문장 #필사하기좋은책 #사유의시간 #고전추천 #동양고전 #삶의방향 #책추천 #논어해설 #인문고전




댓글(0) 먼댓글(0) 좋아요(3)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
하루 한 장 예수의 말 100 - 일상을 기적으로 바꾸는 가장 뛰어난 문장 필사책
박유녕 지음 / 소용 / 2026년 2월
평점 :
장바구니담기



* 출판사에서 도서 협찬을 받았습니다. 하지만 개인의 주관적인 견해로 작성하였습니다.


필사는 단순히 문장을 베껴 쓰는 행위가 아니다. 한 글자씩 눌러 적는 동안 문장은 머리를 지나 마음으로 내려온다. 성경은 어릴 때부터 곁에 두고 읽어 온 책이다. 그러나 읽는 것과 쓰는 것은 분명히 다르다. 눈으로 스치는 문장은 때로 금세 잊히지만, 손끝을 거쳐 종이에 남겨진 문장은 쉽게 사라지지 않는다. 


예수의 말씀 가운데 백 개를 선별하여 하루에 한 문장씩 필사할 수 있도록 구성하였다. Day 1부터 Day 100까지 차례대로 따라가다 보면, 자연스럽게 백 일의 시간을 통과하게 된다. 몸과 마음을 다잡고 성경을 읽으며 기도했던 그 시간처럼, 일정한 기간을 정해 마음을 정돈하게 하는 힘이 있다.


책은 위로, 평안, 사랑이라는 세 부분으로 나뉜다. 1일부터 30일까지는 지친 마음을 어루만지는 위로의 말씀, 31일부터 60일까지는 염려를 내려놓게 하는 평안의 말씀, 61일부터 100일까지는 서로 사랑하라는 예수의 가르침을 담았다. 모두 신약성경에 기록된 예수의 말씀으로, 길지 않으면서도 핵심이 또렷하다. 짧기에 더 깊이 곱씹게 되고, 짧기에 매일 부담 없이 이어갈 수 있다.


바쁘고 지친 날, 생각이 흩어지고 마음이 불안할 때 한 문장을 천천히 써 내려가면 숨이 고르게 된다. 글에는 힘이 있고, 쓰는 행위에는 더욱 강한 힘이 있다. 짧은 문장이기에 꾸준히 이어갈 수 있었고, 짧은 문장이기에 더 또렷하게 남았다. 말씀에는 생명이 있다. 그것을 믿는 이든 그렇지 않든, 문장이 지닌 힘은 누구에게나 작용한다. 삶이 힘들고 방향을 잃은 듯 느껴질 때, 한 문장이 갈림길에서의 이정표가 되기도 한다.


각 장의 끝에는 나에게 들려주는 단단한 말이라는 여백이 있다. 두 페이지의 빈 공간에 그날의 마음을 적어도 좋고, 필사하며 떠오른 생각을 정리해도 좋다. 그 여백은 또 하나의 선물처럼 느껴진다. 누군가에게 건네기에도 참 좋은 책이다. 백일이라는 시간 동안 말씀을 읽고 쓰며 하루를 시작한다면 그 하루는 분명 이전과는 다른 삶이 될 것이다.


#하루한장예수의말100 #예수의말 #성경필사 #성경말씀 #신약성경 #말씀묵상 #필사노트 #100일필사 #백일기도 #위로의말씀 #평안의시간 #사랑의가르침 #기독교추천도서 #신앙서적 #묵상시간 #하루5분습관 #마음다잡기 #영어성경 #KJV성경 #명화와함께 #힐링도서 #선물하기좋은책 #자기성찰 #마음치유 #기도의시간 #크리스천라이프 #신앙성장 #하루한문장 #인생이정표 #말씀의힘




댓글(0) 먼댓글(0) 좋아요(3)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo