-
AWS 배포를 위한 모든것 3 (S3, Redis)AWS 2024. 11. 18. 00:57
S3
배포를 위한 서버 EC2
DB를 배포하는 RDS 두가지 인스턴스만 있으면 충분할것 같은데
S3와 redis는 무엇을 위한 것일까?
먼저 S3는 파일 저장에 초점을 두고 있는 인스턴스이다.
Amazon Simple Storage Service인데
객체 스토리지 서비스로 대규모 데이터를 저장하고 관리하는데 사용된다.
EC2 인스턴스에 파일을 저장하는 대신, S3를 사용하여 정적파일 (이미지, 동영상, 문서)를 저장한다.
언제 S3가 필요할까?
• 대규모 파일 저장: EC2나 RDS의 스토리지 제한 문제 해결.
• 정적 파일 배포: 이미지, 동영상, 문서 등 빈번히 요청되는 데이터를 효율적으로 제공.
• 백업 및 아카이브: 데이터의 안전한 장기 보관 필요.
Redis
Redis는 AWS ElasticCache의 주요 구성요소중 하나로, 인메모리 데이터 저장소이다.
데이터베이스 쿼리 결과를 Redis에 캐싱하여 응답속도를 크게 향상시키고, RDS의 부하를 줄일 수 있다.
또한 사용자의 로그인 세션 데이터를 redis에 저장하여 서버가 재시작되어도 세션 데이터가 유지가능하도록 구현 가능하다.
언제 Redis가 필요할까?
• 응답 속도 향상: RDS의 느린 쿼리 응답이나 반복되는 작업을 빠르게 처리.
• 세션 관리: 로그인 세션 정보를 중앙화하여 관리.
• 실시간 데이터 처리: 채팅, 알림, 대기열 같은 실시간 요구사항 처리.
• 복잡한 애플리케이션 상태 관리: 빠르고 일관성 있는 데이터 처리가 필요할 때.
S3는 인스턴스끼리 연결해주는것이 아니라 어플리케이션 레벨에서 API를 통해 통신하게 된다.
AWS SDK를 이용해 접근키와 비밀키를 사용해서 인증할 수 있고
프로퍼티 파일을 통해 주입시킬수도 있다.
aws.s3.bucket-name=my-s3-bucket
aws.s3.region=us-east-1Redis도 S3와 마찬가지로 어플리케이션 레벨에서 통신하지만 접근을 위한 보안그룹설정은 필요하다.
즉 Redis클러스터가 있는 보안그룹에서 EC2의 보안그룹을 허용해줘야 한다.
EC2 인스턴스는 Redis엔드포인트를 통해 연결된다.
redis.host=redis-cluster.xxxxxx.ap-northeast-2.cache.amazonaws.com
redis.port=6379
S3 버킷을 실제로 만들어 보면 별로 설정할게 많지는 않다.
나는 영상 플레이어 즉 스트리밍 서비스를 위한 S3가 필요하기 때문에 퍼블릭설정은 꺼두었고 그 외에는 이름 정도만 설정해주면 된다.
이후 S3에 접근하기 위한 AWS자격증명
즉 Access Key ID와
Secret Access Key가 필요하기 때문에 IAM 사용자 설정에서 Access Key ID와 Secret Access Key를 생성해준다.
다만 이미 배포도 진행되었고 키를 사용하는것은 장기적으로 보안측면에서 좋지않아
IAM에서 EC2에 권한설정해주는것으로 했다.
IAM에 역할 대시보드에 들어간다.
이후 역할 생성을 누른 뒤 사용사례에 EC2를 선택해준다
약 1000가지의 권한을 선택할 수 있는데
AmazonS3FullAccess 를 선택해준다.
이렇게 IAM정책을 만들고 나면 EC2에 들어가 IAM역할을 선택해 연결해준다.
이후 어플리케이션에서 S3Config를 추가해주고 build.gradle에 s3 의존성을 주입해준다.
pre-signed URL을 통해 클라이언트가 직접 영상을 올리는 방식으로 진행하는데,
그럼에도 url을 생성할때 EC2는 IAM권한이 필요하다. 따라서 앞의 설정은 필수
1. Redis 보안 그룹에서 EC2 보안 그룹 허용:
• ElastiCache Redis가 속한 보안 그룹에서 EC2의 보안 그룹에 대해 포트 6379 트래픽 허용.
2. VPC 내부 통신 사용:
• Redis와 EC2는 같은 VPC에 있어야 하며, 퍼블릭 액세스는 불가.
• 퍼블릭 서브넷이 아닌 프라이빗 서브넷에서 Redis를 설정하는 것이 일반적.
3. 암호화 및 TLS (선택적):
• ElastiCache Redis는 전송 중 데이터 암호화와 TLS 연결을 지원.
• Redis 연결 시 SSL을 사용하는 클라이언트를 설정.
Redis 사용 시 고려 사항
1. VPC 내부 사용:
• Redis는 인터넷과 직접 연결되지 않으며, VPC 내부 통신으로 제한.
2. 네트워크 레이턴시:
• EC2와 Redis가 같은 가용 영역(AZ)에 있으면 더 빠른 성능을 보장.
3. 동시 연결 제한:
• Redis는 단일 스레드로 작동하므로, 연결 수를 효율적으로 관리해야 함.
4. 백업 및 복구:
• Redis 데이터는 휘발성이 있으므로, 스냅샷을 설정해 정기적으로 데이터를 저장.
'AWS' 카테고리의 다른 글
AWS 배포를 위한 모든것 2 (EC2 RDS 연동) (0) 2024.11.18 AWS 배포를 위한 모든것 1 (개념 + EC2) (0) 2024.11.18