RabbitMQ란?RabbitMQ는 신뢰성 높은 메시지 전달과 유연한 라우팅을 제공하는 오픈소스 메시지 브로커입니다. AMQP(Advanced Message Queuing Protocol) 프로토콜을 기반으로 하여, 다양한 토폴로지와 통신 패턴을 지원합니다. 복잡한 라우팅을 처리할 수 있는 Exchange 타입들을 제공하며, 메시지 큐잉, pub/sub 패턴, 피어-투-피어 통신 등 다양한 메시징 패턴을 구현할 수 있습니다.높은 가용성을 위한 클러스터링과 미러링을 지원하며, 메시지 전달 보장을 위한 Publisher Confirms와 Consumer Acknowledgments 기능을 제공합니다. 또한, Java, Python, JavaScript 등 다양한 프로그래밍 언어를 위한 클라이언트 라이브러리를..
Spring In Action(제5판)을 공부하던 중 Converter를 사용해 클라이언트에서 도메인 객체에 대한 id 값을 전달하면 id를 DB에서 도메인 객체를 조회하는 내용이 나왔다.Converter 구현import org.springframework.core.convert.converter.Converter;...@Component@RequiredArgsConstructorpublic class IngredientByIdConverter implements Converter { private final IngredientRepository ingredientRepository; @Override public Ingredient convert(String id) { re..
1.1 초난감 DAO DAO란? Data Access Object의 줄임말로 DB에 접근해 데이터를 조회하거나 저장하는 등의 역할을 수행하는 객체를 의미한다. //UserDao.java public void addUser(User user) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/toby_spring", "root", "xxx"); PreparedStatement ps = connection.prepareStatement("insert into us..
Cache란? 예를 들어 회원 정보를 가져오는 API가 있다고 해보자. 회원 정보는 DB에 있으므로 정보를 가져오기 위해선 DB에 sql을 날려 조회해야 한다. 조회 요청이 자주 일어나지 않는다면 별 문제가 없겠지만 자주 일어난다면 DB 커넥션을 가져오고 해제하는 과정 등 회원 정보를 가져오기 위한 부가적인 작업들을 반복적으로 수행하게 된다. 이 때 사용할 수 있는 게 Cache이다. 한번 조회했던 회원 정보를 일정 기간 Cache로 보관하여 요청이 왔을 때 DB에 접근하지 않고 해당 정보를 반환해주면 된다. 즉 Cache를 이용하면 성능 개선을 할 수 있다. 다만 Cache를 이용할 때 주의해야 할 점이 있다. 만약 회원 정보가 실시간으로 바뀌는 것이고 이를 실시간으로 조회해야 한다면 Cache 정보는..