전체 글 127

[AWS] Amazon S3 - Event Notifications

S3 Event Notifications이벤트란  - 예를 들어 객체가 생성되었거나 객체가 삭제되었거나 객체가 복구되었거나 복제되는 것 등을 말한다.S3:ObjectCreated, S3:ObjectRemoved, S3:ObjectRestore, S3:Replication 등의 이벤트의 유형을 필터링할 수 있다.객체 이름 필터링도 가능하다.  - 예를 들어, .jpg로 끝나는 객체만 고려하고 싶다면 가능하다.이벤트 알림의 활용 사례  - Amazon S3에서 일어나는 특정한 이벤트에 자동으로 반응하려는 경우나 S3에 업로드된 모든 이미지의 섬네일을 생성하려 할 수도 있다.원하는 만큼 S3 이벤트를 만들 수 있다. S3 Event Notifications - IAM Permissions이벤트 알림이 작동하려..

[TIL] 마이페이지 성능 최적화 : 로컬 캐시(Ehcache) 적용

목적마이페이지 조회 시 반복적으로 DB를 조회하게 되어 성능 저하가 발생이를 개선하기 위해 로컬 캐시(Ehcache)를 적용하여 DB 조회 횟수를 줄이고 응답 속도를 최적화하고자 함캐시 선택 (Ehcache vs Redis)Ehcache 선택 이유로컬 캐시로, 외부 캐시 서버를 별도로 두지 않아도 돼서 설정이 간단하고 비용 절감응답 속도가 빠르며, 애플리케이션 서버에 직접 캐싱하여 네트워크 요청이 필요 없음지속적으로 갱신되는 마이페이지 데이터 특성상, 짧은 TTL 설정으로 캐시 활용도와 일관성 유지Redis와의 비교Redis는 분산 캐시로 여러 서버 간 캐시 일관성을 보장하고 큰 데이터 세트도 효과적으로 캐싱 가능Ehcache는 분산되지 않기 때문에 서버 로컬 캐시용으로 적합하며, 데이터 일관성을 관리하..

[AWS] Amazon S3 - Requester Pays

Requester Pays(요청자 지불)일반적으로는 버킷 소유자가 버킷과 관련된 모든 Amazon S3 스토리지 및 데이터 전송 비용을 지불한다.요청자가 익명이어서는 안된다.요청자가 AWS에서 인증을 받아야한다. - AWS에서 인증을 받아야 AWS가 객체에 대한 특정 다운로드를 요청한 요청자에게 청구할 수 있기 때문이다.  예를 들어, 버킷 셋이 있고, 그 안에 객체를 보관하고 있다.그리고 요청자, 즉 사용자가 버킷으로부터 파일을 다운로드 한다.그러면 네트워킹 비용 역시 버킷 및 객체 소유자에게 청구된다.그러나 수많은 대형 파일이 있고 일부 고객이 이를 다운로드하려고 하면 요청자 지불 버킷을 활성화 해야 할 것이다.이 경우 버킷 소유자가 아니라 요청자가 객체 데이터 다운로드 비용을 지불한다.소유자가 여전..

[AWS] Amazon S3 - Lifecycle Rules

Moving between Storage Classes클래스 간에 객체를 이전할수 있는데, 그게 가능한지 보여주는 다이어그램이다.위의 이미지처럼 예를 들어 Standard에서 Standard IA로 이전할 수 있고, 다시 Intelligent Tiering, 그리고 One-Zone IA로, 그리고 다음으로 보이는 것처럼 Flexible Retrieval 또는 Deep Archive로 갈 수 있다.실제로 객체에 자주 액세스하지 않을 걸 알고 있다면 'Standard IA'로 옮길 수 있고,객체를 아카이브화 하려는 걸 알고 있다면 Glacler 티어나 Deep Archive 티어로 이전할 수 있다.이런 객체들을 수작업으로 옮길 수도 있지만 '라이프사이클 규칙'을 이용해서 자동으로 옮길 수도 있다. Amazo..

[AWS] Amazon S3 Storage Classes

S3 Stroage Classes(스토리지 클래스)Amazon S3에서 객체를 생성할 때 클래스를 선택할 수 있다.스토리지 클래스를 수동으로 수정할 수도 있다.S3 수명 주기 구성을 사용해 모든 스토리지 클래스 간에 객체를 자동으로 이동시킬 수도 있다.  - Durability(내구성)Amazon S3로 인해 객체가 손실될 수 있는 확률이다.(= 객체가 손실되는 횟수)Amazon S3의 내구성은 아주 높다.(= 1만 년에 한 번 객체가 손실될 확률일 만큼)모든 스토리지 클래스의 내구성은 동일하다.  - Availability(가용성)얼마나 쉽게 서비스를 이용할 수 있는지이다.(= 서비스가 얼마나 용이하게 제공되는지)  - 예를 들어, S3 Standard의 가용성은 99.99%인데 즉, 1년에 약 53분..

[Spring] 프로젝트에서 OAuth 소셜 로그인 적용하기: 카카오, 네이버, 구글, 깃허브 사례

OAuth2.0사용자 인증 및 권한 부여를 위한 표준 프로토콜이다.주로 사용자 정보에 접근할 때 사용자 비밀번호를 직접적으로 요구하지 않고, 제3자 서비스(클라이언트)가 특정 사용자 데이터를 일정 기간 동안만 접근할 수 있게 권한을 부여하는 방식으로 작동한다.이를 통해 보안성을 높이고 사용자 경험을 개선할 수 있다. OAuth 2.0의 주요 개념Resource Owner(자원 소유자) - 보통 서비스의 사용자로, 자신의 데이터에 접근할 수 있는 권한을 가진 사람이다.Client(클라이언트) - 사용자가 접근을 허용해주는 애플리케이션 또는 서비스를 말한다.Authorization Server(인증 서버) - 자원 소유자의 신원을 확인하고, 권한을 부여하는 서버이다. - 이 서버는 자원 소유자가 허가한 범위..

[AWS] Amazon S3 - Replication (CRR & SRR)

Amazon S3 - Replication(복제) (CRR & SRR)CRR == '교차 리전 복제'SRR == '같은 리전으로 복제' - 어떤 특정한 리전에 S3 버킷이 있고, 이를 다른 리전의 S3 버킷에 복제해야 할 때 사용한다.버킷간에는 비동기 복제가 필요하다고 해보자. - 가장 먼저, 소스 버킷과 복제 대상 버킷 둘 모두 버전 관리 기능이 활성화되어야 한다. - CRR은 이름 그대로 두 리전이 달라야하고, 반대로 SRR은 같은 리전이어야 한다.버킷은 서로 다른 AWS 계정간에도 사용할 수 있다. 복제는 비동기 식으로 이루어진다.복제 과정은 백그라운드에서 이루어지게 된다.복제 기능이 정상적으로 실행되려면, S3에 올바른 IAM 권한, 즉 읽기, 쓰기 권한을 S3에 부여해야 한다.사용 사례  - C..

[AWS] Amazon S3 - Versioning

Amazon S3 - Versioning(버전 관리)Amazon S3에서는 파일을 버전 관리할 수 있다.버킷 수준에서 활성화해야하는 설정이다.버킷을 버전관리하면, 의도하지 않게 삭제하지 않도록 보호해주기 때문에 좋다. - 가령, 한 파일 버전을 삭제하는 경우 사실상 삭제 마커를 추가한 것이다.    따라서 이전 버전을 복구 할 수 있다. 또 이전 버전으로 롤백할 수도 있다.버전 관리를 활성화하기 전에 버전 관리가 적용되지 않은 모든 파일은 널(null) 버전을 갖게 된다.  - 버전 관리를 중단해도 이전 버전을 삭제하지는 않는다.  - 버전 관리는 안전한 작업이다. 위의 이미지처럼 버킷이 주어졌고, 버전 관리로 활성화된 상태이다.사용자가 파일을 업로드할 때마다 선택키에서 해당 파일의 버전이 생성될텐데, ..

[AWS] Amazon S3 - Static Website Hosting

Amazon S3 - Static Website HostingS3는 웹사이트를 호스팅하고 인터넷에서 액세스 할 수 있게 만들 수 있다.웹사이트 URL은 이것을 생성하는 AWS 리전에 따라 달라진다. - 예를 들어, 밑의 둘 중 하나가 될 것 이다.    http://bucket-name.s3-website-aws-region.amazonaws.com    http://bucket-name.s3-website-aws.region.amazonaws.com   유일한 차이점으로는 빨간색으로 표시한 대시 기호와 점이다. S3 버킷에는 HTML 파일이나 이미지 파일 등이 있다고 하고, 위의 웹 사이트 호스팅과 호환할 수 있게 만들어보자.해당 URL과 함께 나타날텐데, 그럼 사용자는 S3 버킷에 액세스 할 수 있게..

[Spring] 스프링에서 알아두면 좋은 어노테이션(Annotation) 모음

1. Validation 기능개념 - 사용자 입력값의 유효성을 검증하여 잘못된 데이터 입력을 방지하는 기능이다. 적용 사례 - 프론트엔드와 백엔드 모두에서 검증을 수행하여 안전한 데이터 처리가 가능하며, 유효성 검증 실패 시 예외 처리를 통해 사용자에게 명확한 오류 메시지를 제공할 수 있다.주요 어노테이션 - 밑 다양한 어노테이션을 사용해 필드의 유효성을 정의할 수 있다.@NotNull, @Size, @Valid, @Validated, @ControllerAdvice ... DTO 클래스에서 사용하는 Validation 어노테이션 - @NotNull: 필수 입력 필드로, 값이 null이 아니어야 함을 보장한다. - @Size: 문자열이나 컬렉션의 길이를 제한한다. - @Email: 유효한 이메일 형식인지..