전체 글

싸피 비전공9기 비전공자바 서식하는 초보개발자 백준 - https://www.acmicpc.net/user/esu08259 깃허브 - https://github.com/qkrrlgus114
https://qkrqkrrlrl.tistory.com/160 spring-oauth-client 라이브러리의 동작 흐름 정리해당 지식은 혼자 디버깅과 gpt, 블로그를 교차 검증 하면서 얻은 정보입니다. 틀린 내용이 있을 수 있습니다. 소셜 로그인을 사용하면서 oauth2를 사용하게 되었는데 코드를 한번 다시 살펴보고qkrqkrrlrl.tistory.com 여기서 oauth 라이브러리를 추가했을 때 시큐리티 필터의 흐름을 살펴봤었다.이제는 현재 작성된 스프링 코드를 다시 리팩토링 하면서 확장성이 좋은 코드로 리팩토링을 진행해보려고 한다. 개선하게 됐던 계기는 코드 리뷰를 받으면서 시작됐다. 분명 당시에는 PrincipalOAuth2UserService 코드를 작성하면서 확장성을 챙겼다고 생각했다. 근데..
· CS지식
해당 지식은 혼자 디버깅과 gpt, 블로그를 교차 검증 하면서 얻은 정보입니다. 틀린 내용이 있을 수 있습니다. 소셜 로그인을 사용하면서 oauth2를 사용하게 되었는데 코드를 한번 다시 살펴보고 새로운 소셜 로그인을 추가하기 쉽도록 코드 리팩토링을 진행해보려고 한다. 그전에 다시 한번 oauth2의 흐름을 정리하고 넘어가자. 위 사진처럼 oauth2에는 대표적으로 4가지의 역할이 존재한다.Resource Owner : 사용자Resource Server : 소셜 서버(네이버, 구글, 카카오)Authorization Server : 토큰 발급 서버(네이버, 구글, 카카오)Client : 우리 애플리케이션 여기서 가장 혼동하기 쉬운 부분이 Client다. 여기서 말하는 Client는 사용자를 의미하는 것이 ..
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로 감싸주었다.// 토큰 개수 반환 ..
REST API 서비스의 certbot 인증서가 벌써 3개월을 채워가고 있다. 만료가 되면 보안에 문제가 발생하기에 미리 갱신을 진행하려고 한다.  certbot을 사용하고 있기에 아래 명령어로 갱신 시뮬레이션 시도(--dry -run을 붙이면 시뮬레이션을 시도한다. 즉 실제로 갱신하지는 않음)sudo certbot renew --dry-run 80번 포트를 이미 사용하고 있다고 갱신 시뮬레이션이 실패했다. 아마 nginx가 현재 80번 포트를 잡고 있어서 그런 것 같다. nginx 먼저 잠시 중지sudo systemctl stop nginx 다시 도전시뮬레이션 결과 성공적으로 갱신된 것을 확인할 수 있다. 아래 명령어를 통해 실제로 갱신을 진행한다.sudo certbot renew  성공적으로 ssl을..
이번에 인프런 프리온보딩을 진행하면서 발생하는 Log를 슬랙으로 전송시켜 로그 파악을 편리하게 진행해야 한다는 생각이 들어서 슬랙 api를 사용해 보았다.  슬랙 설정1. 채널을 생성하고 우클릭 -> 채널 세부정보 보기 -> 통합 -> 앱 추가  2. incoming webhooks 설치 해당 WebHooks를 다운로드. WebHook은 웹 애플리케이션에서 특정 이벤트를 발생시켰을 때, 다른 시스템에게 자동으로 알림을 보내는 방식이다. 3. 웹훅 url 추가를 완료하면 위 화면처럼 웹훅 URL을 발급받을 수 있다.  아래 슬랙 홈페이지를 가면 의존성 주입을 위한 코드가 존재.https://slack.dev/java-slack-sdk/guides/web-api-client-setup Installation..
Service에서 현재 유저 Entity를 가져오는 경우가 굉장히 빈번하게 일어난다.그럴 때마다 유저를 가져오는 메서드를 작성해서 쓰는데 서비스마다 하나씩 작성해서 중복되는 경향을 엄청 받았었다.// 현재 로그인 유저 찾기 private Member getCurrentMember() { Long currentUserId = jwtService.getCurrentUserId(); return memberRepository.findById(currentUserId).orElseThrow( () -> new MemberException(MemberExceptionInfo.NOT_FOUND_MEMBER, currentUserId + "번 유저를 찾지 못했..
indeep
indeep한 개발자