본문 바로가기

분류 전체보기74

[Redis] Docker Compose로 Redis + Spring Boot 띄우기 (로컬) 백엔드 개발을 하다 보면 Docker를 자주 활용하는 것을 알 수 있다.따라서 이번엔 Docker Compose로 Redis와 Spring Boot를 한 번에 띄울 수 있게 구성을 진행해보려 한다. 1. Dockerfile 만들기Spring Boot 프로젝트 root 디렉토리에 Dockerfile을 생성한다.# JDK17을 사용해서FROM openjdk:17-jdk# 빌드한 파일을 복사해와서COPY build/libs/*SNAPSHOT.jar app.jar# 복사한 파일을 기반으로 실행ENTRYPOINT ["java", "-jar", "/app.jar"] 2. compose.yml 파일 만들기이 파일도 Spring Boot 프로젝트 root 디렉토리에 생성하면 된다.services: api-serve.. 2024. 10. 26.
[Redis] Redis 적용 전,후 부하 테스트도 진행해볼까? 1. 부하 테스트의 기본 개념우리가 실제 서비스를 배포 하기 전, 문득 이런 생각이 들 수 있다."우리 서버에 요청이 몰려서 서버가 터지면 어떡하지?""트래픽이 몰려 갑자기 서버가 죽으면 어떡하지?" 이런 문제를 사전에 방지하기 위해 배포 전 우리는 부하 테스트를 진행해봐야 한다. 우선 부하 테스트의 의미를 먼저 알아보자.부하 테스트는 서비스를 배포하기 전, 서버가 어느 정도의 요청을 견딜 수 있는지 확인하는 과정을 의미한다. 부하 테스트 진행할 때 사용하는 용어에 대해서도 알아볼까?Throughput: 1초당 처리할 수 있는 작업량TPS(Transaction Per Seconds): 1초당 처리한 요청의 수만약 내가 처리한 서버가 1초당 최대 100개의 API 요청을 처리할 수 있다고 가정한다면,해당 .. 2024. 10. 25.
[Redis] AWS EC2에서 Redis를 활용해보자! (2) 1. EC2에 Redis 설치 생성한 EC2에 접속하기 위해 연결을 클릭한다. 연결을 누르면 EC2 인스턴스에 원격 접속을 하게 된다. EC2 인스턴스에 접속이 완료되었다. Redis 설치# apt update 명령어sudo apt update# Redis 설치 명령어sudo apt install redis Redis 설치 및 통신 확인 2. EC2에 JDK 설치JDK 설치 JDK 설치 여부 확인 3. Spring Boot 프로젝트에 배포 환경 설정 추가로컬 환경과 분리하여 배포 환경의 설정을 추가해준다.데이터베이스 설정 정보는 일전에 생성한 RDS의 정보로 작성한다.# local 환경spring: profiles: default: local datasource: url: jdbc:mysq.. 2024. 10. 25.
[Redis] AWS EC2에서 Redis를 활용해보자! (1) 현업에서 사용하고 있는 환경과 최대한 비슷하게 환경을 구성하기 위해 AWS EC2에서 Redis를 활용해보고,Redis 적용 전,후의 성능을 또 비교해보자! 1. 배포 환경 인프라 구성이제 로컬 환경이 아닌 실제 배포 환경의 인프라를 구성해서 사용해보려고 한다.배포 환경 아키텍처는 아래와 같이 구성한다. 아키텍처 구성AWS EC2RDSSpring BootRedis사용자는 EC2를 통해 데이터를 요청 하고, EC2 내부에는 Spring과 Redis를 같이 설치한다.데이터베이스는 EC2 내부가 아닌 외부 RDS를 통해 통신할 수 있도록 하자! 2. EC2 생성 AWS 홈페이지에 로그인한 후, EC2를 검색해서 클릭한다. 리전이 서울인 것을 확인하고 인스턴스 시작을 클릭한다. 이름 및 태그는 서버 이름을 작성.. 2024. 10. 25.
[Redis] 로컬에서 Spring Boot + Redis 사용해보자! (2) 드디어 Spring Boot에 Redis를 연동하고 성능 테스트 내용까지 다뤄보자!이론도 이론이지만 실습이 더 재밌는건 어쩔 수 없다! 1. Spring Boot 프로젝트에 Redis 세팅 추가build.gradle 파일에 Redis 의존성 먼저 추가해야 한다.implementation 'org.springframework.boot:spring-boot-starter-data-redis' 의존성을 추가하고 추가한 의존성이 프로젝트에 빌드될 수 있도록 오른쪽 상단에 있는 코끼리 새로고침 표시를 눌러줘야 한다. 2. application.yml 설정 파일 수정Redis 연동에 필요한 설정과 Redis 사용에 대한 로그가 찍힐 수 있도록 설정을 추가해준다.spring: profiles: default:.. 2024. 10. 25.
[Redis] 로컬에서 Spring Boot + Redis 사용해보자! (1) Redis의 기본 개념부터 전략까지 머릿속에 넣었으니 이제 활용해볼 때이다!익숙한 Spring Boot를 활용해서 Redis를 구현해볼까? 1. Spring Boot 프로젝트 생성Spring Boot 프로젝트 세팅 환경은 참고로 작성한다.Spring Boot 3.x.x 버전MySQL 8.x 버전 이상JDK 17 우선 IntelliJ Ultimate 버전을 사용하고 있어 사이트를 통하지 않고 프로젝트를 진행하는 방법만 다룰 예정이다.Community Edition 버전을 사용하거나 다른 IDE 사용 유저들은 사이트를 통해 진행할 수 있도록 링크를 공유해놓을테니 참고하시면 좋겠다. Community Edition, 다른 IDE 사용 유저 프로젝트 세팅 참고https://start.spring.io/ Ulti.. 2024. 10. 25.
[Redis] Redis 캐싱 전략이 궁금해! Redis의 기본 개념을 다지면서 Redis의 장점도 알게 되었고 기본 명령어 7가지와 Key의 네이밍 컨벤션까지 다지게 되었다.이제 어떤 전략이 실무에서 자주 활용되는지 머릿속에 넣어보자! 1. 캐시(Cache)란?원본 저장소보다 데이터를 빠르게 가져올 수 있는 임시 데이터 저장소를 의미한다.Chrome에서도 사용자에게 웹브라우저를 빠르게 제공하기 위해 브라우저에 이미지와 파일들을 캐시해둔다. 캐시는 Redis에서만 사용되는 용어는 아니고 전반적인 개발 분야에서는 통용되어서 사용되는 용어라 개발 분야에서는 굉장히 중요하다. 2. 캐싱(Caching)이란?임시 데이터 저장소에서 빠르게 데이터를 가져오는 방식이라고 이해하면 된다. 3. 현업에서 가장 많이 사용되는 Caching 전략Caching 전략은 구.. 2024. 10. 25.
[Redis] Redis의 기본 개념부터 다져볼까? Redis를 활용하기 전, 기본 개념부터 다지기 위해 차근차근 기록하며 글을 작성하려 한다.내 머릿속엔 지우개가 있기 때문에, 그리고 강사님도 내가 이해하기 쉬운 방법으로 정리하라 하셨기에 잘 정리해보자? 1. Redis란?Remote Dictionary Server의 약자로, "Key-Value" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다.- 위키백과 - 라고 정의되어 있지만 너무 어렵다.따라서, 나는 아래와 같이 이해하기로 했다.데이터 처리 속도가 엄청 빠른 NoSQL 데이터베이스이다. 여기서 NoSQL은 Key-Value 형태로 데이터를 저장하는 데이터베이스라고 생각하면 쉽다. 2. Redis의 장점장점은 무수히 많겠지만, 많이 .. 2024. 10. 24.
[Database] 3. DB락 개념 이해 동시에 같은 데이터를 수정하게 될 경우 DB락이 어떻게 동작하는지 정리하려 한다. 1. 문제점 세션1이 트랜잭션을 시작하고 데이터를 수정하는 동안(커밋 연산이 일어나기 전) 세션2에서 같은 데이터를 수정하게 되면 여러가지 문제가 발생한다. 첫번째, 트랜잭션의 원자성(트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다는 원칙)이 깨진다.두번째, 세션1이 커밋 연산이 아닌 롤백 연산을 실행하게 될 경우, 세션2는 잘못된 데이터를 수정하게 된다. 이와 같은 문제를 방지하려면, 세션이 트랜잭션을 시작하고 데이터를 수정하는 동안(커밋이나 롤백 연산이 일어나기 전) 다른 세션에서 해당 데이터를 수정할 수 없게 막아야 한다. 데이터베이스는 이런 문제를 해결하기 위해 락(Lo.. 2024. 6. 4.