본문 바로가기

전체 글44

Spring - 비동기 api CompeletableFuture를 활용한 성능 개선 문제점 담당하고 있는 프로젝트에 오픈스택 API를 활용해서 VM 리스트를 보여주는 화면이 있다. VM 리스트를 조회하면 사진의 왼쪽 리스트처럼 볼륨 정보, 이미지 정보 등의 VM에 엮여 있는 다른 리소스들의 정보는 ID 값만 내려오기 때문에, 상세 정보 조회를 위해서는 ID 값을 사용해서 추가적으로 API를 호출해야 한다. 만약에 페이지 size는 20이고, 볼륨, 이미지, 플레이버 상세 정보까지 리스트에 보여주려면 약 20 * 3 = 60번의 외부 API를 호출하게 된다. API 당 응답 속도를 100ms로 가정하면 100ms * 60으로 페이지가 로딩되는데 6초가 걸리게 된다. 실제로 현재 진행하고 있는 프로젝트에서는 5초 ~ 10초 정도의 응답시간이 걸렸고 비동기 API를 적용해서 약 1 ~ 2.. 2023. 3. 29.
Java - Metaspace란? Metaspace란? Metaspace는 Java 8부터 새로 생긴 영역으로, 기존에는 Heap의 PermGen 영역이 담당하던 부분을 대체하고, 힙 영역에서 네이티브 메모리 영역으로 이전하게 되었다. Metaspace에는 기존의 PermGen과 거의 똑같이 Java class들이 런타임에 알아야 할 모든 정보를 가지고 있다. 클래스로더가 기존에는 PermGen의 메소드 영역에 클래스 메타데이터들을 올렸다면 이제는 Metaspace에 로드한다. Klass structure: 자바 런타임의 클래스 상태들을 가지고 있는 정보들, VTable과 ITable을 포함 Method 메타데이타 : 바이트코드, 메소드 정보, 예외 테이블, 상수, 등등 상수 풀 JIT을 위한 메소드 카운터 어노테이션 String Poo.. 2023. 1. 15.
Spring - JpaTransactionManager의 동작 원리 JpaTransactionManager 지난 포스팅에서는 TransactionManager에 대해서 알아보았다. Spring - TransactionManager란? TransactionManager란? 문제점 Spring에서 사용할 수 있는 DB 접근 기술들에는 순수 JDBC, JPA, R2DBC, 등의 다양한 기술들이 있다. 그런데 각각의 기술들은 서로 다른 Transaction 처리 방법을 제공한다. 아래는 obv-cloud.com 오늘은 실무에서 가장 많이 사용되는 TransactionManager의 구현체인 JpaTransactionManager가 어떻게 동작하는지 살펴보도록 하겠다. 시작하기에 앞서 알아 둬야할 것은 아래 예시처럼 TransactionManager는 트랙잭션의 ID 같은 정보들.. 2023. 1. 9.
Spring - TransactionManager란? TransactionManager란? 문제점 Spring에서 사용할 수 있는 DB 접근 기술들에는 순수 JDBC, JPA, R2DBC, 등의 다양한 기술들이 있다. 그런데 각각의 기술들은 서로 다른 Transaction 처리 방법을 제공한다. 아래는 JDBC와 JPA의 차이점을 보여주는 예시이다. 순수 JDBC의 Transaction Connection con = dataSource.getConnection(); try { con.setAutoCommit(false);//트랜잭션 시작 //비즈니스 로직 bizLogic(con, fromId, toId, money); con.commit(); //성공시 커밋 } catch (Exception e) { con.rollback(); //실패시 롤백 throw .. 2023. 1. 7.