분류 전체보기

[핵심 요약]1. 자체 HTTP Client 및 RestTemplate을 OpenFeign으로 전환기존에는 RestTemplate이나 직접 구현한 HTTP Client를 사용하여 외부 API를 호출했지만, 이를 OpenFeign으로 변경했다.OpenFeign을 사용하면 API 호출을 인터페이스 기반으로 선언형으로 작성할 수 있어 코드가 간결해지고 유지보수가 쉬워진다.테스트 시에도 API 호출을 Mock 객체로  대체하기 쉬워 테스트 용이성이 증가한다. 2. OpenFeign + Resilience4j로 서킷 브레이커 패턴 적용기존 HTTP Client에서 네트워크 장애가 발생하면, 응답 시간이 지연되거나 서버 부하가 증가하는 문제가 있었다.이를 Resilience4j의 서킷 브레이커 패턴을 활용해 해결했..
[문제 상황]Spring 애플리케이션에서 특정 환경에서만 빈(Bean)을 등록하도록 @Conditional을 활용했는데, 내부적으로 static boolean 값을 참조하는 Condition 구현체가 있었다.하지만, 이 boolean 값이 @PostConstruct로 초기화되기 때문에 빈이 생성되는 시점에서 값이 초기화되지 않아 애플리케이션이 정상적으로 뜨지 않는 문제가 발생했다. 1. 문제의 코드를 살펴보자 (예시)@Configurationpublic class AppConfig { @Bean @Conditional(MyCondition.class) // 특정 조건을 만족할 때만 빈 등록 public MyService myService() { return new M..
[문제 상황]조회 기능을 만드는데 order by로 정렬을 하는데 한국어가 정렬이 안된다. 데이터베이스의 로케일(Locale) 설정과 정렬 방식(Collation) 때문인데, PostgreSQL은 데이터베이스를 생성할 때 locale 지정을 해줘야하고, 만들어진 DB에는 수정이 불가하다고 한다... 따라서 기존의 테이블에서 정렬하는 해결 방법을 알아보자. 1. 현재 데이터베이스의 로케일(Locale) 확인하기PostgreSQL의 정렬 방식은 데이터베이스가 생성될 때 결정된다. 현재 사용 중인 데이터베이스의 로케일을 먼저 확인하자. PostgreSQL 실행해서 다음 명령어를 쳐주면 된다.* PostgreSQL 실행하는 법 PostgreSQL 설치 및 실행(homebrew, Macbook M2 Pro)hom..
· 학습/CS
백엔드 개발을 하면서 Optional이 자주 쓰인다. 기능들에 대해 잘 아는 것도 좋지만, Optional에 대해 어느 정도의 이해도를 가지고 용도에 맞게 사용하는지도 중요하다는 생각이 들어서 정리해보겠다. Optional이란?Optional은 Java8 버전부터 도입되었으며, '값이 없는 경우'를 표현하기 위한 용도로 사용되는 클래스이다. Optional 클래스는 Java 제네릭을 사용하여 만들어져 있으므로, 어떤 타입의 객체라도 값이 없을 수 있는 겨우에 Optional을 사용하여 표현할 수 있다. 그러면, Optional이 왜 만들어졌고, 어떨 때 사용하면 되는지 알아보자. Optional 사용 목적API 공식 문서에 보면 Optional을 만든 의도가 다음과 같이 적혀있다. API Note :Op..
JPA에서 제일 중요하다고 생각되는 주제중 하나이다. 실제 JPA가 동작하는것과 관련이 있고 그래서 강의를 들으면서 개념을 확실하게 정리해본다. 영속성 컨텍스트(PersistenceContext)란?영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻이다. 영속성 컨텍스트는 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 한다. 엔티티 매니저(EntityManager)를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 된다. 엔티티 생명주기- 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태- 영속 (managed) : 영속성 컨텍스트에 관리되는 상태- 준영속 (detached) : 영속성 컨텍스트에 저..
이전에 p6spy 적용하기 글을 남겼다.[Spring Data JPA] Spring 3에 p6spy 적용하기 [Spring Data JPA] Spring 3에 p6spy 적용하기P6spy 적용 이유 - P6Spy를 사용하는 주된 이유는 스프링 부트와 JPA를 사용하는 프로젝트에서 SQL 쿼리를 정확하고 효과적으로 로깅하고 추적하기 위해서이다. P6Spy는 아래의 3가지 상황에서 사용된taek2.tistory.com이어서 sql 쿼리를 커스텀해서 가독성이 좋게 포맷하는 과정과, 로그 파일 남기기, 로그 레벨 설정에 대해 알아보겠다.p6spy Custom format1. formatter 객체 생성아키텍처에 따른 패키지에 다음 파일을 생성하고 코드를 작성한다. import com.p6spy.engine.l..
태기
'분류 전체보기' 카테고리의 글 목록