Redis

[JWT를 활용한 로그아웃, 회원탈퇴, 회원 정보 조회 API 구현] 과정을 기록해보려고 한다. 프로젝트 개발 환경은 아래와 같다.Java: 17JDK: 17.0.6IDE: IntelliJ IDEA 2024.1Framework: Spring Boot 3.3.1 로그아웃 및 회원탈퇴 API 구현Access Token과 Refresh Token은 각각 유효 시간이 정해져 있다. [로그아웃 및 회원탈퇴 API]는 유효 시간이 남은 Access Token을 통해 호출할 수 있고, API가 호출되면 해당 사용자의 Access Token과 Refresh Token을 모두 사용할 수 없도록 만들어야 한다.이전 글을 보면 Refresh Token은 Access Token을 재발급할 때만 사용한다. 입력받은 Refres..
[JWT를 활용한 토큰 재발급 API 구현] 과정을 기록해보려고 한다. 프로젝트 개발 환경은 아래와 같다.Java: 17JDK: 17.0.6IDE: IntelliJ IDEA 2024.1Framework: Spring Boot 3.3.1 Refresh Token 생성 및 Redis에 저장아래 글에서 보안상의 이유로 JWT를 Access Token과 Refresh Token으로 나눠서 사용한다고 했다. [팀 프로젝트] 쿠키(Cookie)와 세션(Session), 토큰(Token) 차이 & JWT(JSON Web Token)JWT를 활용한 인증 및 인가(로그인, 로그아웃, 회원탈퇴) 기능 구현 방법에 대해 작성하기 전, 기본 개념부터 정리해두려고 한다. 사실 완벽하게 이해하고 구현했다기보단 최소한의 필요한 게..
1. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유예시EC2에 MySQL을 직접 설치해서 DB 서버처럼 써도 괜찮지만, 직접 MySQL을 깔고 이것저것 설정하는 것보단 AWS RDS 서버(AWS에서 세팅해 놓은 DB 서버)를 사용하는 게 여러 가지 부가 기능도 사용할 수 있고 안정성도 높다. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유도 비슷하다. 현업에서 EC2에 Redis를 직접 설치하는 경우는 드물다. 일일이 Redis를 설치하고 세팅하고 관리하면서 확장까지 하려면 신경 쓸 게 생각보다 많다. 그러나 ElastiCache를 사용하면 세팅이나 확장을 쉽게 할 수 있고, 기본적인 모니터링 기능도 제공해 주며 장애가 날 가능성도..
1. Docker Compose로 Redis, Spring Boot 한 번에 띄울 수 있게 구성하기구성에 필요한 파일 만들기a. Dockerfile17-jdk에서 빌드한 파일을 복사해 실행시키는 Docker 이미지FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"] b. compose.ymlDockerfile을 기준으로 서버를 빌드함 (포트는 8080)캐시 서버(Redis)가 정상적으로 실행되고 있다는 걸 확인한 뒤에 백엔드 서버를 띄울 것임 (캐시 서버가 안 띄워져 있으면 오류 표시)services: api-server: build: . ports: - 8080:8..
1. 내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견딜 수 있을까?부하 테스트의 기본 개념백엔드 서버를 구현하고 나서 배포를 하게 될 경우 요청이 몰려서 서버가 터질까 봐 불안하다거나 내 서버가 어느 정도의 사용자 요청을 견딜 수 있는지 궁금해질 수도 있음이런 불안감을 없애기 위해 서비스를 배포하기 전, 백엔드 서버가 어느 정도의 요청을 견딜 수 있는지 부하 테스트를 해봐야 함 부하 테스트실제 사용자인 척 요청을 막 보내서, 여러 사용자가 한 번에 몰리는 상황을 가정하여 많은 트래픽인 것처럼 서버에 때려보는 것Throughput(처리량)서비스가 1초당 처리할 수 있는 작업량으로, 단위는 TPS(Transaction Per Second, 1초당 처리한 트랜잭션의 수) 우리가 구축한 서비스의 Throu..
EC2, RDS, Spring Boot, Redis를 활용한 아키텍처 구성은 아래와 같다.  1. EC2 생성서울 리전으로 맞추기 & 인스턴스 시작 버튼 클릭 인스턴스 이름 설정 애플리케이션 및 OS 이미지 → Ubuntu (버전 24.04)로 설정 인스턴스 유형은 t3a.small 이상으로 생성할 것을 권장함프리티어인 t2.micro에서 Spring Boot, Redis를 다 돌리기엔 성능이 모자라기 때문에 중간에 EC2가 멈춰버리기도 함 원래는 키페어를 생성해서 셋팅을 해야 하지만, Redis만 연결시켜 보고 테스트 후 바로 종료시킬 것이기 때문에 [키 페어 없이 계속 진행(권장되지 않음)]을 선택서비스를 하는 입장이라면 키 페어를 만드는 걸 추천 네트워크 설정 → 편집 클릭VPC는 기본값 그대로 셋..
7.18(목) 백엔드 회의에서 API 명세서를 바탕으로 역할 분배를 했다. 어떻게 나눌까 하다가 최대한 동시에 작업할 수 있도록 도메인 별로 5~7개 정도씩 나눴고, 나는 그중에서 회원 도메인을 담당하게 됐다. 크게 보면 회원가입과 로그인, 로그아웃, 회원 정보 조회 API를 구현해야 했다. 소셜 로그인(애플)에서 이메일 인증 방식을 사용한 회원가입으로 바꾸기로 해서 구글과 GitHub에 관련된 내용을 검색해 봤다. 이미 로그인을 구현해 본 제아가 공유해 준 본인의 블로그 글도 참고하면서 진행했다. 개발 환경은 아래와 같다.Java 17Spring Boot 3.3.1GradleIntelliJ(IDE)MySQL(Main DB), Redis(Sub DB) Redis보통 이메일 인증 방식을 사용할 때 인증 코..
1. Spring Boot 프로젝트에 Redis 셋팅 추가하기Redis 의존성 추가하기build.gradle에 아래 코드를 추가하고 gradle 새로고침 버튼을 눌러야 갱신한 의존성이 반영된다.dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-data-redis'} application.yml 수정하기# local 환경spring: profiles: default: local datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: password driver-class-name: com.mysql.cj..
1. 캐시(Cache), 캐싱(Caching)이란?캐시(Cache)원본 저장소보다 빠르게 가져올 수 있는 임시 데이터 저장소를 의미한다. 원본 데이터베이스에 접근해 데이터를 가져오는 건 시간이 오래 걸린다. 보통 최근 접근한 페이지 등이 다시 접근될 확률이 높기 때문에 속도가 빠르거나 사용자와 거리가 가까운 임시 저장소를 두고, 최근에 접근한 이미지나 파일 등의 데이터를 빨리 가져올 수 있게끔 하는 게 좋다. 예를 들어 크롬 같은 검색 도구에서도 방문한 페이지에 있던 이미지나 파일 등을 캐시(저장)해놓고 해당 페이지 재방문 시 캐시된 이미지 및 파일을 불러와 빠르게 페이지가 뜰 수 있도록 한다. 캐싱(Caching)캐시(임시 데이터 저장소)에 접근해 데이터를 빠르게 가져오는 방식을 의미한다. 예를 들어 ..
1. 로컬(Windows)에서 Redis 설치하기 아래 링크로 들어가 확장자가 msi인 설치 프로그램을 다운로드하여야 한다.https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgithub.com  설치 과정에서 딱히 따로 설정할 것은 없다.Redis의 기본 포..
dev-meung
'Redis' 태그의 글 목록