[Spring] Redis에서 RDB로 조회수 동기화하기
·
Spring/JPA
일정 시간마다 Redis의 데이터를 RDB에 저장해 보자 📌 서론 내가 만든 요리 SNS어플인 "레시피아"에서는 유저가 레시피를 조회하면 조회수 데이터를 Redis에 계속 누적시킨다. 만약 유저가 레시피 상세보기를 하면 Redis에 저장된 누적 조회수 데이터를 호출하여 화면에서 조회수를 보여주도록 기능을 구현했다. 이렇게 RDB에서 데이터를 가져오지 않고 Redis에서 바로 조회수 데이터를 호출하게 하여 빠른 반응속도와 RDB의 부하를 줄였다. 이렇게 행복하고 편리하게 기술이 적용되었다면 참 좋겠지만 Redis는 휘발성 데이터베이스이기 때문에 문제가 발생하면 데이터가 다 날아가기 때문에 복구 전략이 엄청 중요하다. 이미 Redis에서는 자체적인 복구기능으로 aof, rdb 방식을 지원하지만 이것만으로는..
AWS Secrets & ECS SpringBoot 설정 (2): ECS 연동
·
AWS/ECS, ECR
저번 포스트에서는 AWS의 Secret을 만들었으니 이번에는 이것을 ECS에 연결해 보도록 하는 작업을 진행할 텐데 IAM정책부터 ECS의 태스크 정의까지 해보도록 한다. 1. IAM 역할 설정하기 먼저, ECS 태스크가 Secrets Manager에 접근할 수 있도록 ecsTaskExecutionRole IAM 역할에 권한을 부여해야 한다. 이 역할은 ECS 태스크가 다른 AWS 서비스와 상호 작용할 때 필요한 권한을 제공하는 역할이다. 1-1. IAM 콘솔 접속 AWS 관리 콘솔에 로그인한 후, IAM 서비스 페이지로 이동한다. 1-2. 역할 선택 대시보드 페이지 좌측의 메뉴에서 '역할' 섹션을 클릭해서 들어간다. 아래와 같은 페이지가 나올 텐데 여기서 ecsTaskExecutionRole을 검색한다..
AWS Secrets & ECS SpringBoot 설정 (1): Secret 생성
·
AWS/ECS, ECR
이전 포스트에서는 로컬 환경에서 RDS를 SpringBoot 프로젝트와 연결하는 데 성공했다. 이번에는 AWS의 CodePipeline을 CI/CD구축을 해서 ECS로 배포에 성공한 SpringBoot 프로젝트의 tomcat에 이 RDS(postgreSQL)를 연결해 주도록 하자 이 포스트에서는 우선 Secret을 생성하는 방법에 대해서 소개한다. 1. AWS Secrets Manager를 사용하는 이유 1-1. Secrets Manager를 사용하는 이유 AWS Secrets Manager를 사용하는 이유는 보안 때문이다. 예를 들어, GitHub 같은 공개된 저장소에 데이터베이스 접속 정보나 API 키 같은 민감한 정보를 yml 파일에 그대로 넣어두면, 누구나 그 정보를 볼 수 있게 되고, 이는 심각..
AWS의 RDS(PostgreSQL)와 SpringBoot 연동하기
·
AWS/RDS
이번 포스트에서는 RDS로 생성한 PostgreSQL 데이터베이스를 개발 중이던 SpringBoot 프로젝트와 연동해 보도록 하자 1. Gradle 의존성 추가하기 1-1. 의존성 추가하기 SpringBoot 프로젝트에서 postgreSQL을 사용하기 위해 Gradle에 의존성을 추가한다. // postgreSQL runtimeOnly 'org.postgresql:postgresql' 1-2. 주의사항 Gradle 의존성을 추가했다면 꼭 프로젝트에서 Gradle을 reload 해줘야 한다. 좌측의 코끼리를 누르거나 우측의 Gradle 버튼을 클릭해서 새로고침을 해주도록 하자 그래야 의존성을 다운로드해서 추가한다. 좌측의 dependency 폴더 하단에 아래와 같이 추가가 되었다면 잘 다운받은 것이다. 2..
AWS RDS로 PostgreSQL 데이터베이스 생성하기
·
AWS/RDS
이번 포스트에서는 AWS에서 지원하는 DB서비스인 RDS(Amazon Relational Database Service)에서 PostgreSQL을 생성해 보도록 하자 1. RDS (Amazon Relational Database Service)를 사용하는 이유 1-1. 관리의 편리성 RDS는 데이터베이스 관리 작업들, 예를 들어 하드웨어 프로비저닝, 데이터베이스 설정, 패치 적용 그리고 백업 같은 작업들을 자동화해 준다. 1-2. 확장성 사용자의 요구에 맞춰서 컴퓨팅 리소스나 스토리지를 쉽게 확장할 수 있다. 1-3. 가용성과 내구성 RDS는 멀티 AZ(Availability Zone) 배포를 지원해서 데이터베이스의 고가용성을 보장한다. 또한 자동 백업, 데이터베이스 스냅샷, 자동 호스트 교체 같은 기능..