반응형 전체 글346 Messaging System SQS (Simple Queue Service) SQS의 핵심은 자료구조 큐다. 큐는 메시지를 포함한다. 메시지를 담기 위해서 프로듀서가 SQS 대기열에 메시지를 전송해야 한다. 프로듀서는 한 개일 수도 그 이상일 수도 있다. 여러 프로듀서가 여러 개의 메시지를 SQS 대기열에 보내게 할 수 있다. 큐에서 메시지를 처리하고 수신해야 하는 대상을 컨슈머라고 한다. 소비자는 큐에서 메시지를 폴링하는데 이는 대기열에게 소비자 앞으로 온 메시지가 있는지를 물어보는 것이다. 만일 큐에 메시지가 있으면 소비자는 이 메시지를 폴링해서 정보를 얻는다. 그리고 그 메시지로 처리를 하고 큐에서 그 메시지를 삭제한다. 여러 컨슈머가 SQS 큐에서 메시지를 소비할 수 있도록 할 수도 있다. 큐는 프로듀서와 컨슈머 사이를 분리.. Cloud/AWS 2023. 7. 9. 스토리지 추가기능 SnowFamily 보안성이 뛰어난 휴대용 장치의 모음이다. AWS 내에서 두 가지 경우에 사용한다. 엣지에서 데이터를 수집하고 처리하기 위해 사용 (Snowcone, Snowball Edge) AWS 안팎으로 데이터를 마이그레이션할 때 (Snowcore, Snowball Edge, Snowmobile) Snow Family를 사용한 데이터 마이그레이션 대용량의 데이터를 네트워크를 경유해 전송하려면 많은 시간이 걸린다. AWS에 빠르게 접속해야 할 때가 있는데 그런 경우에 생기는 문제점은 전송 가능한 데이터의 양이 적다는 것과 제한된 연결 및 제한된 대역폭 문제와 네트워크를 통한 데이터 전송으로 비용이 발생한다는 것이다. 대역폭 문제도 존재한다. AWS에서 영상을 다운로드하는데 그 데이터 크기가 10TB.. Cloud/AWS 2023. 7. 8. CloudFront & Global Accelerator CloudFront CloudFront란 CDN, 컨텐츠 전송 네트워크를 의미한다. CDN은 웹사이트의 컨텐츠를 서로 다른 엣지 로케이션에 미리 캐싱하여 읽기 성능을 높인다. 네트워크 전체에 캐싱되므로 전세계 사용자들이 낮은 레이턴시로 접근할 수 있어서 사용자 경험을 증대시킬 수 있다. 컨텐츠가 전체적으로 분산되어 있으므로 DDoS 공격에서 보호를 받을 수 있다. 호주에 위치한 S3 버킷에 웹사이트를 만들었다 하더라도 미국에 있는 사용자는 CloudFront를 이용해 미국에 있는 엣지에 컨텐츠를 요청하게 된다. 그럼 CloudFront가 호주에서 이 컨텐츠를 페치해서 가져온다. 그리고 미국의 다른 사용자가 똑같은 컨텐츠를 요청한다면, 이 컨텐츠는 호주에서 출발하지 않고 엣지에서 직접 컨텐츠를 제공받는다... Cloud/AWS 2023. 7. 7. S3 고급 기능 및 보안 S3 수명 주기 규칙 S3 버킷 내부의 객체는 수명 주기 규칙을 이용해서 객체의 이동을 자동화할 수 있다. 수명 주기 규칙은 여러 가지로 구성된다. 전환 작업 다른 스토리지 클래스로 객체를 전환하도록 구성한다. 생성 60일 후에 Standard IA로 이동하도록 설정하거나 6개월 후에 Glacier에 아카이빙 되도록 설정할 수 있다. 만료 작업 설정 만료 작업을 설정할 수 있어 일정 시간이 지나면 객체가 삭제 또는 만료되게 할 수 있다. 365일 후에 액세스 로그 파일을 삭제하도록 하거나 버저닝을 활성화한 경우 이전 버전의 파일을 삭제하도록 설정할 수 있다. 규칙에는 특정 접두사를 사용하여 전체 버킷이나 버킷의 일부 경로에만 적용할 수 있고 특정 객체 태그에만 지정할 수도 있습니다 한 클래스에서 다른 클.. Cloud/AWS 2023. 7. 6. S3 기초 S3 S3는 파일을 버킷에 저장한다. 버킷은 상위 레벨 디렉토리로 표시된다. 사실 S3 그 자체는 디렉토리의 개념은 없다 S3 버킷의 파일은 객체라고 하며, 이 버킷은 계정 안에 생성된다. 즉 객체란 S3 저장소에 저장되는 데이터를 의미한다. 버킷 이름은 계정에 있는 모든 리전과 AWS에 존재하는 모든 계정에서 유니크해야 한다. 버킷은 리전 수준에서 정의되므로, 반드시 특정 AWS 리전에서 정의되어야 한다. 객체나 파일에는 키가 있으며, 키는 Amazon S3 키는 파일의 전체 경로입니다. 키는 접두사와 객체 이름으로 구성되며, 키는 길이가 굉장히 긴 이름으로 슬래시를 포함하며, 키는 접두사와 객체 이름으로 만들어진다. 파일 등 원하는 것은 뭐든지 업로드 가능하며, 최대 객체 크기는 5TB이다. 업로드하.. Cloud/AWS 2023. 7. 5. Route 53 Route 53 고가용성, 확장성을 갖춘, 완전히 관리되며 권한있는 DNS다. 권한이 있다라는 뜻은 우리가 DNS 레코드를 업데이트 할 수 있다는 의미다. 도메인 레지스트리로 도메인 이름을 등록한다. Route 53의 리소스 관련 상태 확인을 확인할 수 있다. 100% SLA 가용성을 제공하는 유일한 AWS 서비스입니다 Route 53에서 여러 DNS 레코드를 정의하고 레코드를 통해 특정 도메인으로 라우팅하는 방법을 정의한다. 레코드가 가지는 값 도메인/서브도메인 이름 레코드 타입 A: 호스트 이름과 IPv4 IP를 매핑 AAAA: 호스트 이름과 IPv6를 매핑 CNAME: 호스트 이름을 다른 호스트 이름과 매핑 대상 호스트 이름은 A나 AAAA 레코드가 될 수 있다. Route 53에서 DNS 이름 공.. Cloud/AWS 2023. 7. 4. 트랜잭션 수행 코드에 포함된 네트워크 통신 코드 분리하기 현재 프로젝트에서 관리자 권한을 가진 유저가 다수의 유저에게 초대 이메일을 보내는 비즈니스 로직이 존재합니다. 해당 로직을 수행하는 메서드에 트랜잭션이 걸리고, 메일 서버에 메일 전송 요청도 보내고 있습니다. 트랜잭션을 수행하는 중에 네트워크 통신을 진행하면 굉장히 안 좋다는 글을 본 적이 있습니다.(Real MySQL) 따라서 트랜잭션 수행 코드와 네트워크 통신 코드가 결합된 비즈니스 로직 코드를 개선한 과정을 포스팅으로 작성하려고 합니다. 시작하겠습니다. 비즈니스 로직 정리 멤버와 프로젝트 멤버 프로젝트는 M:N 관계이다. 비즈니스 로직을 수행하는 메서드의 로직은 다음과 같다. 로그인에서 사용하는 JWT 토큰에서 멤버 id를 얻는다. 트랜잭션 시작 멤버 id를 사용해 데이터베이스에서 멤버 엔티티를 조.. 프로젝트 2023. 7. 1. RDS, Aurora, ElasticCache RDS Relational Database Service, AWS가 제공하는 관리형 서비스다. (프로비저닝과 OS가 자동화) 다음과 같은 데이터베이스 엔진을 제공한다. Postgresql Mysql MariaDB Oracle Microsoft SQL Server Aurora 지속적으로 백업이 되므로, 특정 시점으로 복원이 가능하다. 데이터베이스의 성능을 대시 보드에서 모니터링 가능하다. 읽기 전용 복사본을 생성해 읽기 성능을 올릴 수도 있다. 재해 복구 목적으로 다중 AZ 설정 가능하다. 유지 관리 기간에 업그레이드도 가능하다. 수직 확장하거나 읽기 전용을 추가해 수평 확장도 가능하다. 파일 스토리지는 EBS에 구성된다. (gp2, io1) RDS 인스턴스는 ssh 액세스가 불가능하다. EC2 인스턴스에.. Cloud/AWS 2023. 6. 30. 고가용성 및 확장성 (ELB 및 ASG) 고가용성 및 확장성 고가용성 고가용성은 애플리케이션 또는 시스템을 적어도 둘 이상의 AZ나 데이터센터에서 가동 하는 것이다. 고가용성은 데이터 센터에서의 손실에서 살아남아야 한다. 즉, 가동중인 데이터센터에서 문제가 생겨도 다른 데이터 센터에서 돌아가야 한다. 동일한 애플리케이션의 동일한 인스턴스를 멀티 az에서 가동한다. 다중 az가 활성화된 자동 스케일러 그룹이나 로드 밸런서에서도 사용한다. 고가용성은 수동적일 수도 있다. (ex: RDS Multi AZ) 활성형도 존재한다. (수평 확장을 하는 경우) 확장성 수직 확장성 수직확장성은 인스턴스의 크기를 확장한다. 시스템의 스펙을 올려리는 것이다. 데이터베이스와 같이 분산되지 않은 시스템에서 주로 사용한다. 하드웨어 제한이 걸려있기 때문에 한계가 존재한.. Cloud/AWS 2023. 6. 28. EC2 Instance Storage EBS Volume EBS란 Elastic Block Store의 줄임말이다. EBS Volume는 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브다. EBS Volume를 사용하면 인스턴스가 종료된 후에도 데이터를 지속할 수 있다. 이것이 바로 ebs 볼륨을 쓰는 목적이다. EC2를 재생성해 EBS Volume을 마운트하면 기존의 EC2 데이터를 사용할 수 있다. CCP 레벨의 EBS Volume은 한번에 하나의 인스턴스에만 마운트할 수 있다. CCP 레벨은 하나의 EBS는 하나의 EBS에만 마운트 가능하고, Associate 레벨은 일부 EBS 다중 연결이 가능하다. 그러나 인스턴스 1개에 2개의 EBS 볼륨이 연결되는 건 문제가 없다. EBS Volume을 생성할 때는 특정 가용 영역에서만.. Cloud/AWS 2023. 6. 23. 동시성 문제 해결하기 현재 프로젝트의 재고 도메인 코드에 문제가 있다는 것을 알아차렸다. 문제는 여러 명의 사용자가 동시에 재고 감소 로직을 실행한다면 동시성 이슈가 발생하는 것이다. 마침 동시성 관련 강의를 인프런에서 발견했고 이를 적용해보았다. 프로젝트 테이블 이해 재고 모델과 옵션 모델은 N:M 관계이다. 따라서 중간 테이블이 존재한다. 중간 테이블의 옵션 id 외래키를 in 절로 사용해 재고 엔티티를 찾는다. 테스트할 데이터는 사전에 DB에 미리 넣어놓았다. (id가 9L인 재고 테이블 Row) 먼저 문제 상황을 테스트 코드로 작성해보았다. @Test void 재고_감소() throws InterruptedException { //given int threadCount = 100; ExecutorService exec.. 프로젝트 2023. 6. 22. 도메인과 테이블을 설계하고 개선하기 백엔드 파트는 혼자인 이커머스 개발 프로젝트를 진행하고 있습니다. 이번 포스팅에서는 도메인, 테이블을 설계하고 개선한 부분에 대한 글을 쓰겠습니다. 혼자 생각하고 여러 자료를 참고하며 진행했으므로 미흡한 부분이 있습니다. 도메인 설계 현재 요구사항에 따르면 도메인은 다음과 같다. 회원 도메인 상품 도메인 장바구니 도메인 주문 도메인 설계 과정을 살펴보고 상위 도메인에 포함된 하위 도메인도 살펴보겠다. 회원 도메인 회원 도메인은 회원과 이메일로 이루어진다. 회원은 일반 회원과 판매자 회원으로 구분된다. 테이블을 살펴보면 1:1 관계다. 상품 도메인 상품 도메인은 상점, 상품, 상품 옵션 그룹, 상품 옵션, 재고로 이루어진다. 상점은 상품과 1:N 관계다. 상품은 상품 옵션 그룹과 1:N 관계다. 예시를 들.. 프로젝트 2023. 6. 21. 이전 1 ··· 3 4 5 6 7 8 9 ··· 29 다음 반응형