본문 바로가기

전체 글

(42)
JPA Repository는 Entity만을 조회해야 할까? 이 포스팅은 제가 작성한 UPbrella 프로젝트의 기술 블로그에 작성한 JPA Repository는 Entity만을 조회해야할까?를 옮겨온 것입니다 1. 문제 정의 대여 기록을 관리하기 위해서는 여러 테이블과의 조인이 필요합니다. 문제는 여기서 발생하는데요, 기존의 업브렐라 개발팀은 개발 속도 및 편의를 위해 JPA Repository에서 Entity만 조회하였습니다. 하지만 이는 성능에 많은 영향을 미치고 있었습니다. 2. 대여 기록 분석 대여 기록은 여러 테이블을 조인하는데 비해 적은 수의 데이터를 반환하고 있습니다. 코드를 먼저 살펴보겠습니다. @Override public List findAll(HistoryFilterRequest filter, Pageable pageable) { return..
AES 암호화 1. 문제 정의 개인정보는 정보통신망법에 의해 암호화해서 저장해야 합니다. 따라서 업브렐라 개발팀은 AES / ECB 방법을 채택하여 사용자의 정보를 저장하려고 했습니다. 하지만 AES / ECB 방법의 허점을 인지하고 더 안전한 방법은 AES / CBC 방법을 채택하려고 합니다. 2. AES AES란 ‘Advanced Encryption Standard’의 약자로, 현대 보안 시스텡믜 핵심 기술 중 하나입니다. AES 암호화는 미국 정부가 2001년에 표준으로 채택한 대칭키 암호화 방식입니다. 이 방식은 128, 192, 256 비트의 세 가지 키 길이를 지원하며, 블록 암호화 방식으로 데이터를 암호화하고 복호화합니다. AES 암호화 방식에도 여러가지 방법이 있습니다. 이번 포스팅을 통해서는 ECB와 ..
Index를 활용한 성능 개선 1. 문제 정의 저번 게시글을 통해 bulk insert를 하니, 단순 조회 api도 오랜 시간이 걸리는 것을 경험할 수 있었습니다. 서비스가 활성화될 수록 데이터는 쌓일 것이기 때문에, 이를 해결해보도록 하겠습니다. 2. 쿼리 분석 조회 쿼리를 분석해보니, Full Table Scan을 하고 있는 것을 알 수 있습니다. Full Table Scan이란 -----. 따라서 이러한 쿼리들이 많이 있다면 API 성능은 떨어질 수 밖에 없습니다. 3. 문제 해결 3 - 1. Index 추가 위의 문제를 해결하기 위해 Index를 추가해보도록 하겠습니다. select umbrella0_.id as id1_9_, umbrella0_.created_at as created_2_9_, umbrella0_.delete..