일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 12738
- 이진 탐색
- EntityGraph
- Upper bound
- 20115
- slice개념
- 13975
- 1495
- dto projection
- 이분 탐색
- 19598
- 무한페이징
- 14921
- 11501
- no offset
- DP
- 모니터링
- 로그
- Blue/Green
- Lower bound
- Java
- join제거
- 백준
- binary search
- NCP
- greedy
- 2512
- 3187
- 그리디
- Promtail
- Today
- Total
목록SpringBoot (27)
멘지의 기록장

그동안 AWS만을 사용하여 서버를 구축하였는데 공모전에서 NCP를 무료로 사용할 수 있게 해주셔서 NCP로 서버를 구축해보려고 합니다.서브계정 생성루트 계정으로 로그인하면 다음과 같습니다. 루트 계정에서 Sub Account를 생성하면 다음과 같은 화면이 나옵니다. 서브 계정을 생성한 이유는 📌 루트 계정을 모든 팀원이 공유하여 사용할 경우 보안상에 문제가 있을 수 있고, 📌 루트 계정으로는 API 키가 발급이 되지 않기 때문입니다. 서브 계정으로 로그인한 화면은 다음과 같습니다.VPC 생성우선 먼저 VPC를 생성해보도록 하겠습니다. VPC( Virtual Private Cloud )란 퍼블릭 클라우드 환경에서 사용할 수 있는 전용 사설 네트워크로, 다른 네트워크와 논리적으로 분리되어 있어 IT..

이전 글에서 No offset을 적용해서 무한 페이징을 구현해보았습니다. https://amepistheo.tistory.com/44 No Offset을 적용한 무한 페이징 구현하기 (성능 비교)프로젝트를 진행하면서 내가 작성한 모든 댓글을 조회하는 API를 페이징 처리를 하여 제공해야 했습니다. 처음에는 offset 방식을 사용하여 개발하였습니다.하지만, offset 방식은 매번 Full Scan을amepistheo.tistory.com 작성했던 코드를 다시 살펴보도록 하겠습니다. Servicepublic MyReviewResponseList getMyReview(Long userId, Long lastReviewId, Long size) { List reviewSimpleResponse = (l..

프로젝트를 진행하면서 내가 작성한 모든 리뷰를 조회하는 API를 페이징 처리를 하여 제공해야 했습니다. 처음에는 offset 방식을 사용하여 개발하였습니다.하지만, offset 방식은 매번 Full Scan을 하여 성능이 좋지 않다는 것을 알게 되었고, 가장 큰 문제인 중복된 데이터가 보인다는 문제가 발생하였습니다. 해당 API가 페이지 단위가 아닌 무한 스크롤 형식으로 최근 작성한 리뷰 순서로 데이터를 제공하는 특징과 함께 중복 데이터 문제를 해결하고자 no offset 방식을 도입하였습니다. no offset 방식을 도입하여 개발한 코드와 함께offset과 no offset 방식의 성능차이가 얼마나 나는지 한번 확인해보도록 하겠습니다.Offset페이징을 사용하는 방법으로 2가지가 존재합니다. 그중 o..
프로젝트를 하며 1번의 쿼리가 나갔을 때 각각의 row에 대해서 추가로 조회하기 위해서 N 번의 쿼리가 나가는 N+1 문제가 종종 발생하였습니다. N+1 문제가 어떤 상황에서 발생하고, 어떻게 해결하는지에 대해 작성해보겠습니다.Fetch Join프로젝트에서 질문(Opinion)에 대한 모든 댓글(Comment)을 불러오는 부분에서 N+1 문제가 발생하였습니다. 처음 작성한 코드는 다음과 같습니다.각 질문에 대한 모든 댓글의 Id 값을 return 할 때 질문과 함께 댓글 테이블의 값도 가져오기 때문에 추가적으로 쿼리가 나가는 문제가 생겼습니다.public void showOpinionAndCommentList() { List opinions = opinionRepository.findAll(); ..

프로젝트를 진행하면서 적용했던 Docker와 Github Action, Nginx를 사용한 무중단 배포를 하는 방법을 작성해보려고 합니다. 무중단 배포무중단 배포는 서비스의 중단 없이 새로운 버전의 소프트웨어를 배포하는 것을 말합니다. 새로운 버전의 소프트웨어를 배포하기 위해선1. 기존 서비스 종료2. 새로운 서비스 시작 이와 같은 2가지 과정이 필요합니다. 기존 서비스를 종료하여 시스템을 사용할 수 없는 시간이 생기게 되면 이 시간을 다운타임이라고 합니다.이러한 다운타임을 해결하기 위해 무중단 배포를 사용합니다. 무중단 배포 전략에는 3가지 전략이 있습니다. Rolling, Canary, Blue/Green 중 Blue/Green 방식을 사용하였습니다.Blue/GreenBlue/Green 방식은 트래..

1) 처음에 postman으로 값을 넘겼는데 Invalid URI 에러가 나서 왜지? 했는데 http://localhost:8080 이거를 API 앞에 안붙였더라구요..ㅎㅎ 2) ERROR 14664 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.RuntimeException] with root cause java.lang.RuntimeException: null at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] at project.maribo.a..