Entity를 생성할 때 위도, 경도와 같이 비슷한 유형의 데이터를 하나로 묶어 사용하거나 특정 필드에 대한 로직을 분리하고자 할 때 @Embeddable을 통해 값 객체를 생성하여 사용합니다. 이때 NullPointerException이 발생할 수 있는데 문제가 발생할 수 있는 상황과 해결할 수 있는 방법에 대해 정리해보고자 합니다. 문제 @Getter @Entity @Table(name = "member") @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member extends AuditingEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name =..
사이드 프로젝트인 Foodbowl 앱의 서버 개발을 진행하면서 회원을 관리하기 위한 회원가입/로그인 기능이 필요하였습니다. 회원가입/로그인 기능을 위해 Apple OAuth 방식을 선택하게 되었는데, 선택 과정과 구현 과정을 기록하기 위해 글을 작성하게 되었습니다. 하나의 글로 작성하기에는 많은 내용이 담길 것이라 생각되어 여러 개의 글로 나누어 정리해보고자 합니다. OAuth 선택 이유 OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준이다. 다시 말해서, 사용자는 각각의 서비스에 로그인하는 것을 피하고 한 번의 로그인으로 여러 서비스를 이용할 수 있게 된다. 카카오, 네이터, 구글, ..
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)이란 측정 가능한 양이나 특성을 나타내는 척도 또는 지표를 말한다. 데이터 분석이나 평가, 성능 측정 등 다양한 분야에서 사용된다. 메트릭을 잘 수집하면 시스템의 현재 상태를 손쉽..