분류 전체보기
-
이번 포스트에서는 Spring Cloud에서 RabbitMQ에 메시지를 보내는 발신자를 구성해보자. 프로젝트 구성 의존성Spring에서 RabbitMQ를 사용한 웹 애플리케이션을 구성해보자. 의존성에는 다음을 추가한다.더보기 4.0.0 org.springframework.boot spring-boot-starter-parent 4.0.2 com.quietjun rabbit 0.0.1-SNAPSHOT rabbitMQ Demo project for Spring Boot 21 org.springframework.boot spring-boot-starter-amqp org.springframework.boot spring-boot..
RabbitMQ - 2: 메시지 발신자이번 포스트에서는 Spring Cloud에서 RabbitMQ에 메시지를 보내는 발신자를 구성해보자. 프로젝트 구성 의존성Spring에서 RabbitMQ를 사용한 웹 애플리케이션을 구성해보자. 의존성에는 다음을 추가한다.더보기 4.0.0 org.springframework.boot spring-boot-starter-parent 4.0.2 com.quietjun rabbit 0.0.1-SNAPSHOT rabbitMQ Demo project for Spring Boot 21 org.springframework.boot spring-boot-starter-amqp org.springframework.boot spring-boot..
2026.02.02 -
이번 포스트에서는 RabbitMQ에 대해서 살펴보자. RabbitMQ RabbitMQ란?RabbitMQ란 AMQP(Advanced Message Queuing Protocol)을 구현한 오프소스 메시지 브로커(Message Broker)이다. RabbitMQ를 이용하면 Application 간에 비동기적으로 메시지를 주고받을 수 있다.AMQP: 메시지 지향 미들웨어(Message Oriented Middleware: MOM)에서 메시지 브로커 간의 통신을 표준화하기 위해 설계된 프로토콜 Why RabbitMQ?다음은 RabbitMQ의 주요 장점이다.비동기 처리: 시간이 오래 걸리는 작업을 백그라운드에서 처리서비스 분리: 마이크로서비스 간의 느슨한 결합 구현부하 분산: 여러 컨슈머가 메시지를 나눠서 처리..
RabbitMQ - 1:기본이번 포스트에서는 RabbitMQ에 대해서 살펴보자. RabbitMQ RabbitMQ란?RabbitMQ란 AMQP(Advanced Message Queuing Protocol)을 구현한 오프소스 메시지 브로커(Message Broker)이다. RabbitMQ를 이용하면 Application 간에 비동기적으로 메시지를 주고받을 수 있다.AMQP: 메시지 지향 미들웨어(Message Oriented Middleware: MOM)에서 메시지 브로커 간의 통신을 표준화하기 위해 설계된 프로토콜 Why RabbitMQ?다음은 RabbitMQ의 주요 장점이다.비동기 처리: 시간이 오래 걸리는 작업을 백그라운드에서 처리서비스 분리: 마이크로서비스 간의 느슨한 결합 구현부하 분산: 여러 컨슈머가 메시지를 나눠서 처리..
2026.02.01 -
이번 포스트에서는 JDK 25의 new features에 대해 살펴보자. Flexible Constructor Bodies (자유로운 생성자 본문) Flexible Constructor Bodies(자유로운 생성자 본문)기존의 생성자에서는 다른 생성자를 호출할 때 맨 첫 번째 줄에서만 가능했다. 하지만 JDK25에 적용된 flexible constructor bodies는 이 제약이 없어졌다. 이를 통해 조상 상성자 호출 전에 파라미터를 검증하는 등의 동작이 가능해졌다.public class Child extends Parent { public Child(int value) { // super() 호출 전 로직 가능! int validatedValue = validate(..
[JDK] 버전별 특징 - JDK25이번 포스트에서는 JDK 25의 new features에 대해 살펴보자. Flexible Constructor Bodies (자유로운 생성자 본문) Flexible Constructor Bodies(자유로운 생성자 본문)기존의 생성자에서는 다른 생성자를 호출할 때 맨 첫 번째 줄에서만 가능했다. 하지만 JDK25에 적용된 flexible constructor bodies는 이 제약이 없어졌다. 이를 통해 조상 상성자 호출 전에 파라미터를 검증하는 등의 동작이 가능해졌다.public class Child extends Parent { public Child(int value) { // super() 호출 전 로직 가능! int validatedValue = validate(..
2026.01.25 -
이번 포스트에서는 Spring Cloud에서 사용되는 OpenFeign에 대해 살펴보자. OpenFeign OpenFeign이란?Feign은 Netflex에서 개발한 Http Client 라이브러리이다. 나중에 Netflex가 더 이상 유지보수 하지 않고 커뮤니티에서 이어받아 OpenFeign으로 변경되었다.Feign은 선언적 웹서비스 클라이언트로 이를 이용하면 웹 서비스 클라이언트 작성이 매우 쉬워진다. Feign을 사용하려면 인터페이스를 생성하고 @FeignClient 애너테이션을 추가하면 된다. 다음 코드는 한눈에 봐도 어떤 의도로 작성되었는지 쉽게 파악할 수 있다.// ❌ 기존 RestTemplate 방식RestTemplate restTemplate = new RestTemplate();Stri..
01. OpenFeign 1이번 포스트에서는 Spring Cloud에서 사용되는 OpenFeign에 대해 살펴보자. OpenFeign OpenFeign이란?Feign은 Netflex에서 개발한 Http Client 라이브러리이다. 나중에 Netflex가 더 이상 유지보수 하지 않고 커뮤니티에서 이어받아 OpenFeign으로 변경되었다.Feign은 선언적 웹서비스 클라이언트로 이를 이용하면 웹 서비스 클라이언트 작성이 매우 쉬워진다. Feign을 사용하려면 인터페이스를 생성하고 @FeignClient 애너테이션을 추가하면 된다. 다음 코드는 한눈에 봐도 어떤 의도로 작성되었는지 쉽게 파악할 수 있다.// ❌ 기존 RestTemplate 방식RestTemplate restTemplate = new RestTemplate();Stri..
2026.01.24 -
이번 포스트에서는 java compiler 옵션 중 -parameter 옵션에 대해 알아보자! -parameter 옵션 문제!가끔 다음과 같은 컨트롤러를 만들어서 동작시키면 안될 때가 있다. @GetMapping("/posts/{id}")public Post getPostById(@PathVariable Long id) { // @PathVariable(name="id") return service.getPostById(id);}그러다 name 속성을 추가하면 잘 된다. 사실 name 속성은 전달된 이름과 사용할 파라미터가 다를 때 지정하는데 여기서는 같아서 사실 문제가 되지는 않는데 이상한 일이다. 왜일까? 파라미터가 매핑되는 과정-parameters는 Java Compiler의 옵션 이다...
-parameter 옵션이번 포스트에서는 java compiler 옵션 중 -parameter 옵션에 대해 알아보자! -parameter 옵션 문제!가끔 다음과 같은 컨트롤러를 만들어서 동작시키면 안될 때가 있다. @GetMapping("/posts/{id}")public Post getPostById(@PathVariable Long id) { // @PathVariable(name="id") return service.getPostById(id);}그러다 name 속성을 추가하면 잘 된다. 사실 name 속성은 전달된 이름과 사용할 파라미터가 다를 때 지정하는데 여기서는 같아서 사실 문제가 되지는 않는데 이상한 일이다. 왜일까? 파라미터가 매핑되는 과정-parameters는 Java Compiler의 옵션 이다...
2026.01.24 -
이번 포스트에서는 MCP의 통신 방식에 대해 살펴보자. MCP 통신 방식 MCP 통신 아키텍쳐MCP 통신은 다음의 3 layer 아키텍쳐를 따른다.클라이언트/서버 계층인 MCP Client와 MCP Server는 각각 클라이언트와 서버 측 프로토콜 작업을 관리하며 둘 다 통신 관리를 위해 MCP Session을 사용한다. 세션 계층인 MCP Session은 Server와 Client의 통신 상태를 관리한다.전송 계층인 MCP Transport는 Stdio, SSE, WebSocket 등 여러 전송 구현을 지원하며 JSON-RPC 메시지의 직렬화와 역직렬화를 처리한다.JSON-RPC(JSON-Remote Procedure Call)은 JSON으로 원격 함수를 호출하고 결과를 JOSN을 받는 프로토콜로 가볍..
02. MCP 통신 방식이번 포스트에서는 MCP의 통신 방식에 대해 살펴보자. MCP 통신 방식 MCP 통신 아키텍쳐MCP 통신은 다음의 3 layer 아키텍쳐를 따른다.클라이언트/서버 계층인 MCP Client와 MCP Server는 각각 클라이언트와 서버 측 프로토콜 작업을 관리하며 둘 다 통신 관리를 위해 MCP Session을 사용한다. 세션 계층인 MCP Session은 Server와 Client의 통신 상태를 관리한다.전송 계층인 MCP Transport는 Stdio, SSE, WebSocket 등 여러 전송 구현을 지원하며 JSON-RPC 메시지의 직렬화와 역직렬화를 처리한다.JSON-RPC(JSON-Remote Procedure Call)은 JSON으로 원격 함수를 호출하고 결과를 JOSN을 받는 프로토콜로 가볍..
2026.01.22 -
이번 포스트에서는 MCP의 개념에 대해 살펴보자. MCP(Model Context Protocol) MCP의 정의와 문제 상황MCP(Model Context Protocol)란 AI 모델(LLM)이 외부 데이터(구글 드라이브, GitHub 등)나 도구와 통신할 때 사용하는 오픈 표준 규약으로, 앤트로픽(Anthropic)이 개발하여 오픈소스로 공개했다.왜 MCP라는 개념이 등장했는지 생각해 보자.ChatGPT, Claude, Gemini 같은 LLM을 이용해 내 컴퓨터의 파일 내용을 읽거나 구글 캘린더를 확인하려면 어떻게 해야 할까?Spring 개발자라면 Spring AI의 'Tool Calling' 기능을 이용해 구현할 수 있다. Spring AI는 라이브러리 내부에서 모델별 차이를 추상화해주므로,..
01. MCP란?이번 포스트에서는 MCP의 개념에 대해 살펴보자. MCP(Model Context Protocol) MCP의 정의와 문제 상황MCP(Model Context Protocol)란 AI 모델(LLM)이 외부 데이터(구글 드라이브, GitHub 등)나 도구와 통신할 때 사용하는 오픈 표준 규약으로, 앤트로픽(Anthropic)이 개발하여 오픈소스로 공개했다.왜 MCP라는 개념이 등장했는지 생각해 보자.ChatGPT, Claude, Gemini 같은 LLM을 이용해 내 컴퓨터의 파일 내용을 읽거나 구글 캘린더를 확인하려면 어떻게 해야 할까?Spring 개발자라면 Spring AI의 'Tool Calling' 기능을 이용해 구현할 수 있다. Spring AI는 라이브러리 내부에서 모델별 차이를 추상화해주므로,..
2026.01.21 -
이번 포스트에서는 github에 자바 알고리즘 문제에 대한 mr 이 전달된 경우 자동으로 AI가 피드백을 달아주도록 파이프라인을 구축해보자.🚀 개요목표: Merge Request(MR)가 생성되면 AI가 자동으로 코드를 읽고 분석 댓글 작성사용 기술: GitLab CI/CD, Python, Google Gemini 2.5 Flash API환경: Synology NAS (Self-hosted GitLab Runner) 준비물 Google Gemini API 키 발급Google AI Studio에서 API 키를 발급받는다. Gemini 2.5 Flash 모델 정도 쓰면 매우 강력한 추론 성능을 무료(Free Tier 기준)로 사용할 수 있다. GitLab Access Token 발급 받기MR에 분석 결..
Gitlab actions를 이용한 algorithm MR 피드백 처리이번 포스트에서는 github에 자바 알고리즘 문제에 대한 mr 이 전달된 경우 자동으로 AI가 피드백을 달아주도록 파이프라인을 구축해보자.🚀 개요목표: Merge Request(MR)가 생성되면 AI가 자동으로 코드를 읽고 분석 댓글 작성사용 기술: GitLab CI/CD, Python, Google Gemini 2.5 Flash API환경: Synology NAS (Self-hosted GitLab Runner) 준비물 Google Gemini API 키 발급Google AI Studio에서 API 키를 발급받는다. Gemini 2.5 Flash 모델 정도 쓰면 매우 강력한 추론 성능을 무료(Free Tier 기준)로 사용할 수 있다. GitLab Access Token 발급 받기MR에 분석 결..
2026.01.14