API(Application Programming Interface)는 애플리케이션 간에 데이터를 주고받거나 서비스를 요청하고 제공하기 위한 인터페이스입니다. 클라이언트와 서버 간에 API를 통해 통신하는 만큼 API 문서화는 개발 과정에 있어 중요한 요소 중 하나입니다. Spring 프레임워크에서 API 문서화 방법에는 크게 Rest Docs와 Swagger 2가지가 존재하는데 우아한테크코스 Votogether팀에서 왜 Swagger를 선택하였는지와 적용 방법에 대해 정리해 보았습니다. Spring REST Docs vs Swagger Spring Rest Docs Spring REST Docs는 스프링 프레임워크에서 제공하는 API 문서 자동화 도구이다. Spring REST Docs는 Spring ..
@DataJpaTest를 사용하면서 데이터베이스 환경에 의한 문제 상황을 경험하였는데 @DataJpaTest에 대해 학습하며 이를 정리하고자 글을 작성하게 되었습니다. @DataJpaTest @DataJpaTest는 JPA 구성 요소에 초점을 맞춰 슬라이스 테스트를 진행하기 위한 어노테이션이다. 애플리케이션이 동작하는 데 있어 필요한 모든 빈이 컨텍스트 환경에 등록되는 @SpringBootTest와 달리 JPA 테스트와 관련된 빈들만 컨텍스트 환경에 등록한다. JPA 테스트 관련하여 필요한 빈들만 로드하기에 테스트 실행 시간을 줄이고 테스트 복잡성을 줄일 수 있다. @DataJpaTest에는 다양한 어노테이션이 사용되는데 핵심적인 어노테이션에 대해 정리해 보았다. [ @BootstrapWith ] 스프링..
서비스 개발 및 장기적인 운영에 있어 애플리케이션을 모니터링하는 것은 중요한 작업이다. 애플리케이션 모니터링이란 애플리케이션에서 발생하는 동작들에 대한 메트릭을 수집하여 애플리케이션 성능을 분석하는 분야를 말한다. 모니터링을 통해 서비스 개발 과정에서는 동작을 확인할 수 있고, 서비스 오픈 직전에는 성능 테스트를 할 수 있고, 서비스 운영 과정에서는 문제를 해결할 수 있다. 프로메테우스, 그라파나를 통해 스프링 부트 애플리케이션의 메트릭을 수집하고 이를 시각화하는 환경을 구성해보고자 한다. 개요 Metric 메트릭(metric)이란 측정 가능한 양이나 특성을 나타내는 척도 또는 지표를 말한다. 데이터 분석이나 평가, 성능 측정 등 다양한 분야에서 사용된다. 메트릭을 잘 수집하면 시스템의 현재 상태를 손쉽..
JDBC JDBC(Java Database Connectivity)는 자바 애플리케이션과 데이터베이스 간의 연결과 상호작용을 위한 자바 인터페이스이다. 표준화된 인터페이스를 제공함으로 데이터베이스를 쉽게 다룰 수 있도록 하며, 여러 데이터베이스에 대해 동일한 방식으로 데이터베이스 연결, 쿼리 실행, 결과 처리 등을 수행할 수 있다. JDBC를 사용해서 데이터베이스와 연결 및 통신을 하기 위해서는 아래의 단계를 따른다. [ 1. JDBC 드라이버 로드 ] 드라이버(Driver)란 데이터베이스와 연결을 관리하는 데 사용되는 컴포넌트이다. 드라이버는 데이터베이스 벤더에 따라 자체적인 드라이버가 존재하고 일반적으로 JAR 파일 형식으로 제공된다. 프로젝트에서 사용하고자 하는 데이터베이스와 관련된 모듈을 추가한다..
사이드로 진행하고 있는 프로젝트에서 직렬화/역직렬화 시 ObjectMapper를 사용하고 있습니다. 이때 JSON에서 자바 객체로 역직렬화 시 LocalDateTime 필드가 정상적으로 변환되지 않고 오류가 발생하였는데 이를 정리하고자 글을 작성하게 되었습니다. 문제 유저가 북마크 한 게시글 목록의 썸네일 경로를 조회하고자 할 때 위와 같은 응답을 반환합니다. 응답 데이터에는 북마크 ID, 북마크 한 게시글 ID, 게시글의 썸네일 경로, 게시글 작성 일자의 리스트가 담겨있습니다. MockMvc의 응답 body에 담겨 있는 JSON 정보를 추출하여 객체로 변환 후 예상했던 데이터와 일치하는지 여부를 확인하기 위해 위와 같은 코드를 작성하였습니다. ObjectMapper에 의해 역직렬화가 올바르게 수행될 것..