1. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유예시EC2에 MySQL을 직접 설치해서 DB 서버처럼 써도 괜찮지만, 직접 MySQL을 깔고 이것저것 설정하는 것보단 AWS RDS 서버(AWS에서 세팅해 놓은 DB 서버)를 사용하는 게 여러 가지 부가 기능도 사용할 수 있고 안정성도 높다. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유도 비슷하다. 현업에서 EC2에 Redis를 직접 설치하는 경우는 드물다. 일일이 Redis를 설치하고 세팅하고 관리하면서 확장까지 하려면 신경 쓸 게 생각보다 많다. 그러나 ElastiCache를 사용하면 세팅이나 확장을 쉽게 할 수 있고, 기본적인 모니터링 기능도 제공해 주며 장애가 날 가능성도..
💻[백엔드]/🥫[Database]
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는 기본값 그대로 셋..
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의 기본 포..
1. RedisRedis란?Redis 공식 홈페이지 문서를 살펴보면 아래와 같은 설명이 적혀 있다.Redis is an in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and message broker. Redis has built-in replication and different levels of on-disk persistence. It supports complex data types (for example, strings, hashes, lists, sets, sorted sets, and JSON), with atomic operat..