SY 개발일지
article thumbnail
[Redis] Redis에 RefreshToken 저장하기 - 설치, Spring boot 적용
프로젝트 2024. 9. 22. 15:20

프로젝트를 진행하며 RefreshToken을 과연 어디에 저장을 해야 효율적인가에 대해 고민을 하게 되었습니다. 이전의 프로젝트에서는 단순히 MySQL 데이터베이스에 저장을 하였습니다.그래서 만료일과 액세스 토큰, 그리고 리프레스 토큰값을 저장해둔 후 액세스 토큰이 만료가 되었을 시, 액세스 토큰값과 리프레스 토큰값을 이용하여 재발급 로직을 실행하였습니다. 하지만, 이렇게하면 데이터베이스에 쓰레기 데이터가 너무 많이 남는다는 단점과 사용자의 액세스 토큰이 만료가 될 때마다 데이터베이스에 접근해야 한다는 단점이 있습니다. 그만큼 사용자가 많아질수록 데이터베이스에 접근을 많이하여 성능도 좋지 않겠죠. 그래서 많은 사람들이 사용하는 Redis를 이용하여 RefreshToken을 저장하는 것을 생각하게 되었습니..

article thumbnail
[하나금융티아이 채용 회고] SSAFY 전형 후기
취업준비 2024. 9. 20. 21:42

그동안 취업준비로 인하여 블로그에 글을 못썼었습니다... (프로젝트도 멈췄음)저의 경우에는 SSAFY 9기 출신인데, 하나금융티아이 SSAFY 전형에 참여했습니다. 채용 과정은 하나금융티아이 공채와 같았습니다.서류전형 → 필기전형 → 1차면접 → 2차면접 → 채용검진 → 최종입사 서류전형서류전형의 경우 다른 기업과 같이 자소서와 함께 인적 사항을 적었습니다.자소서의 경우 3문항으로 이루어져 있으며, 공채와 문항이 비슷한 것 같았습니다.필기전형필기전형은 코딩테스트와 인성검사로 이루어져 있었습니다.코딩테스트는 총 6문제로 이루어져 있으며 백준 골드 5 정도의 난이도로 다소 쉽다고 느껴졌었습니다. (어떤 문제였는지는 정확히 기억이 안나지만 알고리즘 스터디를 진행하며 풀었던 문제 수준이었습니다.)또한 SQL  ..

article thumbnail
[Spring/MongoDB] 스프링 프로젝트에 MongoDB 연결하기 (설치 및 연결)
프로젝트 2024. 7. 12. 18:20

현재 진행중인 프로젝트에는 채팅이 있습니다.이러한 채팅 기능은 많이들 NoSQL을 이용하여 구현하는데, 그 이유는 다음과 같습니다. 1️⃣ 데이터의 수정이 없습니다. 현재 진행중인 프로젝트 특성 상 채팅내역 삭제는 고려하지 않았습니다.2️⃣ 많은 데이터가 실시간으로 생성됩니다. 하지만, 채팅방에 대해 채팅 메세지가 존재할 뿐, 그 외의 관계는 따로 없습니다.      (즉, Join이 없습니다.) 전 채팅 기능에 대해 다음과 같은 특성을 추출해보았고, 기존의 MySQL 에서 MongoDB로 변경한 후 데이터를 가져오는 데에서 테스트를 해보고자 합니다.MongoDB는 무료이며, 또한 이전에 노마드코더에서 node.js 강의를 들었을 때 한번 다루어보았기 때문에 선택하게 되었습니다. 그러기 위해 우선 현재 ..

[트러블슈팅] 객체 삭제 시 org.hibernate.StaleObjectStateException 에러 발생
프로젝트 2024. 6. 24. 20:34

유저 RefreshTokenRepository에서 accessToken과 refreshToken 을 이용해서 데이터를 삭제해주는 로직을 작성하였습니다. // Service@Transactionalpublic void tokenRemove(HttpServletResponse response, String accessToken, String refreshToken) { // 쿠키에서 삭제 -> 클라이언트에게 감 log.info("토큰 삭제"); tokenCookieRemove(response, TYPE_ACCESS); tokenCookieRemove(response, TYPE_REFRESH); refreshTokenRepository.deleteByAccessTokenAndRefr..

article thumbnail
[CI/CD] 스프링부트에 HTTPS 적용
프로젝트/CICD 2024. 6. 21. 15:36

프론트엔드와 백엔드가 소통을 하지 못하는 일이 발생하였습니다.프론트에서 백으로 HTTPS 요청을 보내도록 하였는데 HTTPS이 인증이 안되어 에러가 발생하는 것처럼 보였습니다.그래서 스프링부트 컨테이너에 직접 HTTPS 옵션을 걸어보도록 하겠습니다.  1️⃣ 먼저 스프링에서는 .pem을 인식하지 못하기 때문에 springboot key 생성을 해줍니다. openssl pkcs12 -export -in /etc/letsencrypt/live/restagram.shop/fullchain.pem -inkey /etc/letsencrypt/live/restagram.shop/privkey.pem -out keystore.p12 -name restagram -CAfile /etc/letsencrypt/live/r..

article thumbnail
[CI/CD] nginx 설치부터 Let's Encrypt 인증서 발급 받기 with Ubuntu 24.04
프로젝트/CICD 2024. 6. 20. 18:19

현재 사이트에 들어가면 이런 식으로 주의를 요한다는 메세지가 뜹니다이는 https가 적용되지 않아 암호화가 되지 않았으므로 주의해달라는 표시입니다. 따라서 이번 포스팅에서는 https를 적용하고 포트도 80, 443 포트로 변경해보도록 하겠습니다. 우선 let's encrypt를 진행하기 위해 nginx부터 설치해주도록 하겠습니다.Nginx 설정설치설치 전 패키지 목록 업데이트sudo apt-get update nginx 설치sudo apt-get install nginx 방화벽 설정방화벽 설정sudo ufw app list다음과 같은 명령어를 입력하면 아래와 같은 리스트가 출력됩니다.각 설정은 다음을 의미합니다.Nginx HTTP: 포트 80번만 허용Nginx HTTPS: 포트 443번만 허용Nginx..

article thumbnail
2024년 2분기 근황
취업준비 2024. 6. 20. 16:03

이번 4, 5, 6월에는 좀 많은 일들이 있었다.알고리즘일단 알고리즘 스터디가 끝이 났다. 그래서 매일 2-3문제씩 풀던 것들을 1-2문제 정도로 줄여서 풀고 있다.백준은 저번에 플레4를 찍었었는데 이제 플레4의 중간까지 왔다. 아마 이제 하반기 코테 준비할 쯔음이면 플레3이지 않을 까 하고 기대만 하고 있다. 특히 알고리즘 스터디장 덕분에 LeetCode라는 사이트를 알게 되었는데 문제가 영어로 되어있지만 난이도가 그다지 높지 않아 왠만하면 매일 백준 1문제 + LeetCode 1문제씩 풀려고 노력중이다.https://leetcode.com/problemset/ CS 스터디여전히 CS 스터디를 진행중이다. 같이 스터디하는 사람들이랑 요즘에는 아래 깃허브에 있는 질문들을 하나씩 타파중이다.https://..

article thumbnail
[CI/CD] 가비아에서 도메인을 구매한 후 AWS EC2 서버 연결하기
프로젝트/CICD 2024. 6. 19. 22:23

이번에는 가비아에서 도메인을 구매한 후에 aws ec2 서버와 연결해보도록 하겠습니다. 도메인 구매1️⃣ 먼저 가비아 페이지에 로그인해주세요https://www.gabia.com/ 웹을 넘어 클라우드로. 가비아그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브www.gabia.com 2️⃣ 여기에 원하는 도메인을 입력하여 검색 후 신청합니다.원하는 도메인을 선택하여 신청합니다. 3️⃣ 서비스정보를 입력합니다.기간의 경우 1년과 2년 사이의 가격이 매우 다르니 저는 저렴하게 1년을 선택해주었습니다.하단의 동시 신청 가능 서비스와 같은 경우에는 금액적 부담이 커서 하지 않았습니다. 결제 방법의 경우 신용카드는 1000원 이상이어야 하기 때문에 무통장 입금을 선택해주었습니다. 정상적으로 결제가 되었다면 서비스 ..

article thumbnail
[CI/CD] 도커와 젠킨스, 그리고 WebHooks로 React 자동 배포로직 만들기
프로젝트/CICD 2024. 6. 19. 18:59

이번에는 저번 백엔드에 이어 프론트엔드 React 컨테이너를 배포해보도록 하겠습니다 ☺ 어느정도 백엔드와 겹치는 부분이 많아 파이프라인 설정부터 웹 훅까지 하나의 포스팅에서 다루어보려고 합니다. .env 파일 서버에 등록하기먼저 배포를 준비하기 위해 .env 파일을 서버에 복사하겠습니다.1. 도커 젠킨스 컨테이너 안으로 들어가기docker exec -it jenkins-server /bin/bash 2. 루트 계정으로 접속하기su - 3. 파일 생성하기vi /var/jenkins_home/.env 3. 파일 작성 후 저장젠킨스 서버에 npm 설치하기배포를 하기 위해 npm install, npm run 등의 명령어를 사용해주기 위해 npm을 먼저 설치해주도록 하겠습니다. 1. 도커 젠킨스 컨테이너 안으로..