DynamoDB 테이블 생성하기 서론 알림 서버에서 사용할 닉네임 관련 테이블을 DynamoDB를 이용해 생성해 보자. RDB로 치면 member_nickname 테이블에 Long member_id(pk), Varchar nickname로 컬럼 두 개인 테이블인데 이것과 비슷하게 DynamoDB에서 테이블을 생성해 보자 DynamoDB 기본 개념 1. 테이블 이름 테이블 이름은 테이블을 고유하게 식별하는 이름이다. 내가 만들 테이블은 멤버의 ID와 닉네임을 저장하는 용도로 member_nickname라는 이름을 사용할 것이다. 2. 기본 키 기본 키는 DynamoDB의 각 항목을 고유하게 식별하는 데 사용되는 키다. 기본 키는 파티션 키만으로 구성되거나, 파티션 키와 정렬 키의 조합으로 구성될 수 있다...
AWS
Lambda로 RDS 시작 및 중지 설정 아직 개발단계인데 AWS 비용이 너무 많이 나와서 RDS를 사용할 때 시작하고, 사용하지 않을 때는 중지하는 lambda 함수를 만들어봤다. 1. 함수 생성 먼저, 두 개의 RDS 인스턴스를 시작하고 종료하는 Python 코드로 람다를 생성해 보자. 우선 AWS Lambda 콘솔창으로 이동한다. https://aws.amazon.com/ko/lambda/ 클라우드 컴퓨팅 PaaS | Amazon Web Services 닫기 Amazon Simple Storage Service(Amazon S3)를 사용하여 업로드 후에 실시간으로 AWS Lambda 데이터 처리를 트리거하거나 기존 Amazon EFS 파일 시스템에 연결하여 대규모 파일 처리를 위한 대규모 병렬 공유..
AWS ALB 헬스 체크(상태 검사) 간격 및 경로 수정을 통한 서비스 최적화 나는 MSA 아키텍처에서 스프링 부트 서비스를 SNS, SQS를 이용해 서버 간 연동을 시도했다. 그리고 서버 간 연동된 로그를 추적하기 위해 프로젝트에 Zipkin을 사용했다. 그리고 로그 테스트를 진행하다 보니, 내가 직접 테스트한 URL보다 ALB에서 상태 검사를 위한 요청이 더 많이 눈에 띄었다. 그래서 ALB에서 상태 검사하는 주기를 수정하기로 했다. (기존에는 5초로 지정되어 있었다.) 1. AWS ALB에서 헬스 체크 요청하는 건 어떤 프로세스인가 AWS ALB (Application Load Balancer)에서 상태 검사(Health Check)는 ALB가 백엔드 서버들의 상태를 모니터링하는 방법이다. 이 기능..
ECS에서 Zipkin을 통한 스프링 부트 서비스 트레이싱 구축하기 AWS ECS 환경에서 서비스 간 효율적인 통신 모니터링은 시스템의 안정성과 성능 향상에 필수적이다. 이 글에서는 ECS에서 이미 실행 중인 두 개의 스프링 부트 서비스 간의 통신을 Zipkin을 통해 모니터링하는 방법을 단계별로 설명한다. Zipkin은 분산 시스템에서 서비스 간 요청을 추적할 수 있는 강력한 도구이며, ECS 환경에서의 구현은 서비스의 성능 분석과 문제 해결에 큰 도움을 준다. 1. ECR 리포지토리 생성 및 Docker 이미지 빌드 💡 ECR에 Zipkin 이미지를 저장하는 것: 효율성과 안정성을 위한 전략 배경 - 이전 프로젝트에서 무중단 배포 과정 중 buildspec.yml을 통해 Docker Hub에서 이미지..
Spring Boot 3 버전과 SNS, SQS 연동하기 지난 포스팅에서는 SNS-SQS를 연동할 때 Amazon console을 이용했다. 이번 글에서는 Spring Boot 3 버전에서 SNS로 이벤트를 발행하고 SQSListener로 메시지를 받아보자! 1. SpringBoot 설정 (build.gradle, application.yml) 1. build.gradle 코드 추가 스프링 부트 버전 3과 호환되는 의존성으로 적어준다. // AWS implementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:3.0.1") implementation 'io.awspring.cloud:spring-cloud-aws-starter-sqs' ..
SNS, SQS 생성하기 1. SNS 생성하기 1. AWS SNS 페이지로 이동하자. AWS 콘솔창에서 'SNS'를 검색해서 이동하자. 2. SNS 페이지에서 "주제 생성" 영역에서 '주제 이름'을 작성하고 [다음 단계]를 클릭한다. 나는 테스트 용도로 'sns-test'로 작성했다. 3. 그럼 "주제 생성" 페이지로 이동한다. "세부 정보"에서 "유형"을 선택한다. FIFO 선택 경우 중복 메시지 없음: FIFO 주제는 메시지의 중복 전달을 허용하지 않는다. 순서 보장: 메시지는 정확히 한 번씩, 전송된 순서대로 처리된다. 제한된 처리량: 표준 주제에 비해 처리량이 낮으며, 특정 제한이 있다. 보다 엄격한 메시지 필터링: 메시지 필터링이 표준 주제보다 더 엄격하다. 사용 사례: 금융 거래 처리, 주문..
IAM MFA 설정하기 1. AWS 콘솔에 로그인하고 우측 로그인 계정을 클릭해 "보안 자격 증명" 페이지로 이동한다. 2. 아래와 같이 "내 보안 자격 증명" 페이지로 이동된다. 여기서 [MFA 디바이스 할당] 버튼을 클릭한다. 3. MFA 디바이스 할당 1단계 페이지로 이동된다. 3-1. 1단계에서 디바이스 이름을 작성한다. 나는 "내 이니셜-iphone"으로 작성했다. 3-2. 그리고 MFA device를 선택한다. 나는 모바일로 인증하기 위해 "Authenticator app"을 선택했다. 그리고 [다음]을 클릭한다. 4. 2단계로 이동한다. 나는 Google Authenticator 어플을 사용했다. 앱 설치하고 실행 후 브라우저 화면에서 "QR 코드 표시" 링크를 클릭하면 QR코드가 화면에 노..
ECS, ALB - 동적 포트 매핑 활성화와 DNS 접속 ECS를 동적 포트 매핑을 활성화하고 ALB DNS를 이용해 접속해 보자. 이전 포스팅에서 ECS 태스크 정의에서 호스트 포트와 컨테이너 포트를 전부 8081로 설정해 주고, 재 배포가 진행되면 8081 포트가 이미 사용 중이라는 에러를 만났었다. 그래서 호스트 포트를 0으로 설정해서 동적 포트를 활성화시켰더니 포트 충돌 에러가 해결됐다. 그리고 이름 확인하기 위해 ALB DNS로 접속해 확인해 보자 동적 포트 매핑 ECS에서 호스트 포트를 0으로 설정하는 것은 "동적 포트 매핑"을 활성화하는 것이다. 이렇게 설정하면, ECS는 컨테이너가 시작될 때 사용 가능한 포트를 자동으로 할당받는다. 이 방법은 여러 인스턴스에서 같은 컨테이너를 실행할 때 포..