![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHyMee%2FbtrGsoAFoTq%2F0gYRYEj1bgFiHoGkuLCyL1%2Fimg.png)
[JPA 활용] 지연 로딩과 조회 성능 최적화 - 엔티티 직접 노출하기
2022. 7. 5. 02:28
SpringBoot
순환 참조가 발생하는 API 위와 같이 설계된 데이터베이스가 있고 현재 주문 + 배송 정보 + 회원을 조회하는 API를 만들었다 가정하자. Controller의 API 코드는 다음과 같고 간단하게 주문 정보를 전부 가져오는 API이다. 보기에는 크게 문제가 있을까 싶지만 해당 API에는 컴파일 타임에는 잡히지 않는 장애 요소가 있다. @GetMapping("/api/v1/simple-orders") public List orderV1() { List result = orderRepository.findAllByString(new OrderSearch()); return result; }어떤 문제인지 확인하기 위해 먼저 빌드 후 포스트맨으로 테스트를 해보자. 포스트맨으로 요청을 날려보니 결과값도 안나오고 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVqPWx%2FbtrFKapjJ3o%2FbFYMzedAVCOk1eHfDajhfk%2Fimg.png)
Querydsl 최초 설정하기
2022. 6. 27. 02:59
SpringBoot
Querydsl Querydsl은 JPA와 Spring Data JPA만 사용했을 시에 발생하는 여러 문제점을 해결하기 위해 나온 프레임워크다. 간단하게 문제점을 몇 가지 살펴보면 다음과 같다. Spring Data JPA가 기본적으로 제공해주는 CRUD의 인터페이스를 사용하더라도 복잡한 동적 쿼리 등을 작성하기 위해서는 JPQL 작성을 피할 수 없다. 간단한 경우에는 크게 문제가 되지 않지만 복잡한 로직의 경우 별도로 문자열 처리 등을 하면서 재사용하기 어려운 코드들이 만들어진다. 또 JPQL로 작성한 쿼리는 문자열이다보니 컴파일 타임에 로직 상의 에러가 발생하지 않게 되고 에러를 맞이하는 시점은 런타임에 발생하게되고 장애로 이어진다. Querydsl 설정 강의와 블로그등을 참조하면 설정을 하는데도 불..
[Python] 숫자 카드 게임
2022. 6. 25. 21:53
Algorithm
숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 카드들이 N x M 형태로 놓여 있을 때, 게임의 룰에 맞게 카드를 뽑는 프로그램을 만드시오. input 3 3 3 ..
[Python] 큰 수의 법칙
2022. 6. 25. 21:23
Algorithm
큰 수의 법칙 '큰 수의 법칙' 은 일반적으로 통계 분야에서 다루어지는 내용이지만 글쓴이는 본인만의 방식으로 다르게 사용하고 있다. 글쓴이의 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6 으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 인 46이 된다. 단, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTxfkF%2FbtrE75WRvZj%2FQGx99kMXIAejW4jwwE2VK0%2Fimg.png)
AWS S3를 파일 시스템에 마운트하기 (goofys)
2022. 6. 20. 07:09
AWS
배경 AWS를 사용하다보면 가장 많이 사용하는 서비스 중 하나로 S3가 있다. 하지만 S3는 일반적인 파일 시스템과는 구조가 다르기때문에 불편한 점이 있었고 업무적으로 개인적으로 사용할 때 Object Storage인 S3를 일반적인 파일 시스템처럼 사용하고 싶다는 생각이 들 때가 있었다. 마침 회사 일을 진행하다가 S3를 실제 파일 시스템처럼 마운트해서 사용하고 싶다는 니즈가 있었고 러서치를 하게 됐다. AWS S3를 마운트하기 위한 패키지 종류 s3fs-fuse 초기에 goofys가 나오기 전까지 가장 많이 사용됐던 패키지로 알고있다. github의 스타 숫자가 6.2k나 될 정도로 많은 사람들이 사용하던 패키지이지만 치명적인 단점이 하나 있다. 속도가 .. 너무 느리다. 실제 프로덕션 환경에서 조금..