spring boot 28

[AI AGENT] AI Agent 성능 평가

1. AI Agent 평가의 핵심 레이어 및 메트릭AI Agent의 평가는 크게 생성 단계(Generation Layer)와 행동 단계(Action Layer)의 두 가지 관점으로 접근합니다.① 생성 단계 (Generation Layer) - RAG 기반 할루시네이션 검증Agent가 외부 데이터(DB, 문서, API)를 참조해 답변할 때, 할루시네이션을 잡아내기 위해 LLM-as-a-Judge(더 똑똑한 LLM을 판사로 쓰는 방식) 기법을 활용한 3대 메트릭을 주로 사용합니다.충실성 (Faithfulness / Groundedness)개념: Agent가 내놓은 답변이 참조한 컨텍스트(문서나 API 결과)에 실제로 기반하고 있는가?측정법: 답변의 문장들을 개별적 사실(Statements) 단위로 쪼갠 뒤,..

AI(MCP) 2026.06.03

[스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술] 4. 검증1 - Validation

1. 검증 요구사항 및 기본 개념1) 상품 관리 시스템 검증 요구사항새로운 상품을 등록하거나 수정할 때, 올바르지 않은 값이 들어오면 검증 오류를 발생시켜야 합니다.타입 검증: 가격(price), 수량(quantity) 필드에 문자가 입력될 경우 검증 오류 처리필드 검증:상품명(itemName): 필수 값, 공백 금지(X)가격(price): 1,000원 이상 1,000,000원 이하수량(quantity): 최대 9,999개 이하특정 필드의 범위를 넘어서는 검증 (복합 룰):가격 * 수량의 합이 최소 10,000원 이상이어야 함2) 클라이언트 검증 vs 서버 검증웹 애플리케이션의 검증은 크게 두 가지 영역으로 나뉘며, 상호 보완적으로 사용되어야 합니다.구분장점단점특징클라이언트 검증즉각적인 피드백 제공, 사..

INFLEARN 2026.05.31

[스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술] 3. 메시지와 국제화

1. 메시지, 국제화 소개메시지악덕? 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까?여러 화면에 보이는 상품명, 가격, 수량 등, label에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경해야 한다. 지금처럼 화면 수가 적으면 문제가 되지 않지만 화면이 수십 개 이상이라면 수십 개의 파일을 모두 고쳐야 한다.addForm.html, editForm.html, item.html, items.html왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다.이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다.예를 들어서 messages.properties 라는 메시지 관리용 파일을 ..

INFLEARN 2026.05.28

[스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술] 2. 타임리프 - 스프링 통합과 폼

1. 타임리프와 스프링 MVC 통합 개요타임리프는 스프링 프레임워크와 유연하게 통합되어 단순한 뷰 템플릿 역할을 넘어선 강력한 엔터프라이즈 기능을 지원합니다.스프링 통합으로 추가되는 주요 기능스프링의 SpringEL 문법 통합: ${@myBean.doSomething()}과 같이 스프링 빈을 직접 호출할 수 있습니다.편리한 폼(Form) 관리 속성: th:object, th:field, th:errors, th:errorclass 등을 제공합니다.폼 컴포넌트의 편의 기능: 체크박스(Checkbox), 라디오 버튼(Radio button), 셀렉트 박스(Select/List)를 쉽게 렌더링하도록 돕습니다.메시지 및 국제화 기능 통합: 스프링의 다국어 메시지 설정을 타임리프 템플릿 내에서 손쉽게 사용합니다...

INFLEARN 2026.05.26

[Spring Boot] 11. Cluster DB

1. 데이터베이스 클러스터링(Clustering)의 본질1.1 Q. "클러스터로 쓴다"는 것의 정의와 핵심 목적데이터베이스를 "클러스터로 구성하여 사용한다"는 것은 물리적 혹은 가상으로 분리된 여러 대의 데이터베이스 서버를 네트워크로 묶어, 백엔드 애플리케이션 입장에서는 마치 하나의 단일 시스템처럼 작동하도록 설계하는 것을 의미합니다.이러한 분산 아키텍처를 도입하는 핵심 목적은 크게 세 가지입니다.고가용성 (High Availability, HA): 단일 DB 장비가 고장 났을 때 발생하는 서비스 전체 마비(SPOF, Single Point of Failure)를 방지합니다. 주 장비가 다운되어도 예비 장비가 즉각 가동되어 무중단 운영을 보장합니다.읽기 트래픽 부하 분산 (Read Scaling): 대용..

SPRING BOOT 2026.05.20

[스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술] 6. 스프링 MVC - 구조 이해

1. 스프링 MVC 전체 구조스프링 MVC는 프론트 컨트롤러 패턴으로 구현되어 있으며, 그 핵심은 DispatcherServlet입니다.1.1 직접 만든 프레임워크 vs 스프링 MVC 비교FrontController → DispatcherServlethandlerMapping Map → HandlerMapping (인터페이스)MyHandlerAdapter → HandlerAdapter (인터페이스)ModelView → ModelAndViewviewResolver → ViewResolver (인터페이스)MyView → View (인터페이스)1.2 DispatcherServlet 구조org.springframework.web.servlet.DispatcherServlet부모 클래스에서 HttpServlet을..

INFLEARN 2026.04.14

[스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술] 5. MVC 프레임워크 만들기

1. 프론트 컨트롤러(Front Controller) 패턴 소개특징프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 (입구를 하나로!)공통 처리가 가능하며, 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨2. 프론트 컨트롤러 도입 - v1 (구조 맞추기)기존 로직을 최대한 유지하면서 프론트 컨트롤러만 도입하는 단계입니다.ControllerV1 인터페이스package com.example.spring_mvc_study1_servlet.web.frontcontroller.v1;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServletRequest;import jakart..

INFLEARN 2026.04.09

[스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술] 4. 서블릿, JSP, MVC 패턴

1. 회원 관리 웹 애플리케이션 요구사항 및 도메인 모델회원 정보 및 기능회원 정보: 이름(username), 나이(age)기능 요구사항: 회원 저장, 회원 목록 조회Member.java (회원 도메인 모델)package com.example.spring_mvc_study1_servlet.domain.Member;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { ..

INFLEARN 2026.04.09

[스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술] 1. 웹 애플리케이션의 이해 - 서블릿(Servlet)과 쓰레드(Thread)

서블릿(Servlet) 개념 및 동작 원리 정리서블릿은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버측 프로그램 사양을 의미합니다. 웹 애플리케이션 서버(WAS) 내에서 HTTP 요청을 처리하고 응답을 생성하는 역할을 수행합니다.1. 서블릿의 주요 특징코드 구조 분석@WebServlet(name = "helloServlet", urlPatterns = "/hello")public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) { // 애플리케이션 로직 작성 위치 }}URL 매핑: @W..

INFLEARN 2026.04.01

[Spring Boot] 10. Redis Pub/Sub 기반 실시간 알림 시스템

1. SSE (Server-Sent Events)란?보통의 웹은 클라이언트가 질문(요청)을 해야 서버가 답(응답)을 주는 방식이지만, 알림은 서버가 사건이 터졌을 때 먼저 알려줘야 합니다. 이를 위해 사용하는 기술이 바로 SSE입니다.작동 방식: 서버와 클라이언트 사이의 연결 통로를 계속 열어둡니다. 이벤트(알림)가 발생할 때마다 서버는 이 통로로 데이터를 툭툭 던져줍니다.장점:가벼움: WebSocket보다 구현이 훨씬 단순하고 리소스를 적게 먹습니다.자동 재연결: 네트워크 불안정으로 연결이 끊기면 브라우저/앱이 알아서 재연결을 시도합니다.HTTP 기반: 별도의 프로토콜 설정 없이 기존 웹 환경에서 아주 잘 돌아갑니다.2. 기술 비교: WebSocket vs SSE우리가 대화하며 정리한 채팅과 알림의 기..

SPRING BOOT 2026.03.27