프로젝트/RESTAPI 추천 서비스

예전에 버퍼 풀의 사이즈를 8MB -> 128MB로 상향 조정해서 조회 성능을 끌어올렸던 적이 있었다.(이후에 128MB -> 4GB로 또 상향 조정을 했다.) https://qkrqkrrlrl.tistory.com/118 0.026초)" data-og-description="api_request_history에 50만 개의 데이터를 넣어두고 SELECT * FROM api_request_history ORDER BY request_date DESC; 해당 쿼리를 날려보자. request_date에 인덱스가 걸려있는 상태다. 1.32초면 나쁘진 않군요! SELECT count(*) " data-og-host="qkrqkrrlrl.tistory.com" data-og-source-url="https://q..
RESTful API 프로젝트는 아래와 같은 아키텍처를 가지고 있다. 가난한 나는 ec2 프리티어를 사용하고 있어서 하나의 서버에 백엔드, 젠킨스, DB가 전부 올라가 있는 상태다. 여기서 고민이 '만약에 DB 컨테이너에 갑자기 문제가 생긴다면?' 혹은 '데이터가 날아간다면?' 사실 DB 백업은 가장 먼저 고민했어야 하는 점인데... 그래서 지금이라도 백업을 통해 불상사를 대비하려고 한다.  백업은 cron을 통해서 주기적인 스케줄링을 진행한다. 나는 하루에 4번 데이터 백업을 진행한다.(6시간 간격)또한, 5일이 지난 데이터는 삭제하도록 한다.(무분별한 백업 데이터가 쌓이지 않도록) 우선 아마존리눅스2는 기본적으로 cron이 설치되어 있지 않다. 그래서 아래 명령어로 설치를 진행.sudo yum ins..
유저가 GPT API를 호출하면 RestTemplate을 통해 동기로 처리를 진행했다.그 이유는 gpt의 응답으로 DTO를 생성해서 유저한테 넘겨줘야 하기 때문에 RestTemplate를 선택했었다. 우선 RestTemplate을 바꾸려는 이유는 지원이 중단됐기 때문이다.(많은 블로그에서 RestTemplate이 Deprecated가 되어 다음 버전에서 빠진다고 하는데 절대 아니다.) 예전 스프링 주석에는 Deprecated 내용이 적혀있었다지만, 이후에는 없어지고 유지보수 모드로 동작한다고 바뀌었다. 자세한 내용은 아래의 토비 님 유튜브를 보면 된다.https://www.youtube.com/watch?v=S4W3cJOuLrU   스프링 6.1부터 동기 HTTP 처리를 위해 RestClient라는 것을..
https://qkrqkrrlrl.tistory.com/161 확장성이 좋은 oauth 코드로 리팩토링하기https://qkrqkrrlrl.tistory.com/160 spring-oauth-client 라이브러리의 동작 흐름 정리해당 지식은 혼자 디버깅과 gpt, 블로그를 교차 검증 하면서 얻은 정보입니다. 틀린 내용이 있을 수 있습니다. 소셜 로그qkrqkrrlrl.tistory.com이전 게시글에서 oauth 코드를 리팩토링 하면서 다양한 소셜 환경을 빠르게 추가할 수 있도록 리팩토링을 진행했다. 그러니 한번 naver를 추가해 보면서 얼마나 쉽게 추가할 수 있는지 체감해 보고 수정해보려고 한다.  naver우선 네이버 개발자 센터로 가서 애플리케이션을 등록한다.https://developers.n..
https://qkrqkrrlrl.tistory.com/160 spring-oauth-client 라이브러리의 동작 흐름 정리해당 지식은 혼자 디버깅과 gpt, 블로그를 교차 검증 하면서 얻은 정보입니다. 틀린 내용이 있을 수 있습니다. 소셜 로그인을 사용하면서 oauth2를 사용하게 되었는데 코드를 한번 다시 살펴보고qkrqkrrlrl.tistory.com 여기서 oauth 라이브러리를 추가했을 때 시큐리티 필터의 흐름을 살펴봤었다.이제는 현재 작성된 스프링 코드를 다시 리팩토링 하면서 확장성이 좋은 코드로 리팩토링을 진행해보려고 한다. 개선하게 됐던 계기는 코드 리뷰를 받으면서 시작됐다. 분명 당시에는 PrincipalOAuth2UserService 코드를 작성하면서 확장성을 챙겼다고 생각했다. 근데..
https://qkrqkrrlrl.tistory.com/category/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8/RESTAPI%20%EC%B6%94%EC%B2%9C%20%EC%84%9C%EB%B9%84%EC%8A%A4 '프로젝트/RESTAPI 추천 서비스' 카테고리의 글 목록싸피 비전공9기 비전공자바 서식하는 초보개발자 백준 - https://www.acmicpc.net/user/esu08259 깃허브 - https://github.com/qkrrlgus114qkrqkrrlrl.tistory.com 이전 게시글에서 배포 과정을 기록했지만 해당 파이프라인에는 이미지 백업에 대한 내용이 없는 상태다. 아래가 현재 진행되는 프로세스의 순서다. 새로운 이미지 생성기존 이미지 삭제기존 컨..
3~4달 전에 도커와 젠킨스를 이용해서 CI/CD를 구성했지만 현시점에 기억을 다시 살리고자 정리를 진행해 보았습니다. DOCKER우선 도커를 쓰는 이유는 동일한 환경에서도 IMAGE를 통해 안전하게 배포하고 컨테이너를 통해 관리할 수 있어서 사용했다. VM과 비교가 많이 된다고 들었는데  VM의 경우 하나의 머신에 OS까지 전부 들어있게 된다. 예를 들면 윈도우 환경에서 맥 OS를 가진 VM, 리눅스를 가진 VM을 구동시킬 수 있지만 무겁다는 문제가 발생하게 되는데!도커를 사용하면 컨테이너에 OS를 설치하지 않게 된다. 컨테이너는 호스트 OS의 커널을 공유한다고 한다.  도커를 사용하면 3가지의 개념을 알아야 한다. DOCKER FILE도커 이미지를 생성하기 위한 명령어 or 레시피를 의미한다. 도커 ..
현재 서비스에서 사용하는 모든 쿼리를 분석하고 다음의 내용을 개선해보려고 한다. 1. 불필요한 정보 조회 -> DTO 조회로 변경2. N+1 문제 확인하기3. 인덱스 타는지 파악하기(쿼리 실행 계획) 아래는 쿼리 개선을 진행하며 남긴 기록들이다.  메인화면 유저 정보 가져오기fetchJoin을 걸어두지 않아서 Role를 가져올 때 따로 조회를 진행한다. 따로 MemberRoles와 fetchJoin을 통해 N+1 문제를 해결. (왼쪽 기존, 오른쪽 개선)  유저의 토큰 조회토큰의 개수만 필요한데 유저의 전체 데이터를 가져오는 것은 낭비라고 판단. 토큰만 파악할 수 있도록 변경했다. id에 일치하는 데이터가 없을 수도 있기 때문에 Optional로 감싸주었다.// 토큰 개수 반환 ..
indeep
'프로젝트/RESTAPI 추천 서비스' 카테고리의 글 목록