[nGrinder] ECS로 기동중인 SpringBoot 부하 테스트
·
DevOps/nGrinder
상용에서 실행 중인 레시피 서버에 부하 테스트를 진행했다. 📌 서론 이번 포스트에서는 "레시피아" 상용 서버의 부하 테스트를 진행했다. 테스트를 통해 서버 성능을 비교하기 위해 내 노트북(M2 max)과 냉면님의 노트북(m1 air)을 사용했다. 상용 서버는 AWS의 t4g.small을 사용 중이다. (아직 사용자가 없어서 저성능 ec2를 사용하고 있다.) 지금부터 테스트 결과를 같이 확인해 보자 1. 점차 유저수를 증진시키며 테스트 "레시피 상세 조회" API에 get요청을 보내는 것으로 모든 테스트를 진행했다. 테스트 시간은 모두 1분으로 동일하게 설정했다. 상용 (t4g.small): 10명 상용 (t4g.small): 50명 상용 (t4g.small): 99명 상용 (t4g.small): 198명..
실전! 테라폼 적용기3편 - Auto Scaling Group과 용량 공급자(Capacity provider) 작성
·
AWS/테라폼(Terraform)
이번에는 Auto Scaling Group과 Capacity Provider를 테라폼 모듈로 생성하자 📌 서론 이전 포스트에서 vpc와 subnet을 설정했고 EC2 런치 템플릿을 모듈로 생성했다. 이렇게 생성한 EC2 런치 템플릿은 ASG에 의해 사용되어 인스턴스의 생성을 관리해 주고, 용량 공급자(Capacity Provider)는 ASG와 연결되어 인스턴스의 스케일링을 관리하는 데 도움을 준다. ASG는 EC2 런치 템플릿을 바탕으로 EC2 인스턴스의 생성 및 관리를 담당하며, 용량 공급자는 이런 ASG를 활용해 ECS 환경에서의 자동 스케일링을 조절한다. 이렇게 설정된 ASG는 ECS 클러스터와 연결되어, ECS에서 실행되는 컨테이너들이 적절한 자원을 가진 인스턴스에서 실행될 수 있도록 해준다. ..
실전! 테라폼 정복기 2편 - vpc, subnet 설정과 인프라 구축
·
AWS/테라폼(Terraform)
지금부터 실제 사이드 프로젝트에 적용시킨 테라폼 코드를 알아보자 📌 서론 테라폼을 실전에 적용하면서 많은 것을 배웠지만 주로 한국보다는 외국 블로그나 커뮤니티에 필요했던 자료가 존재했던 것 같다. 나와 같은 주니어들이 테라폼을 사용하고 싶을 때 이 글을 보고 따라 할 수 있었으면 좋겠다는 마음에 이 글을 추가적으로 작성한다. 지금부터 알아볼 테라폼 코드는 아래의 MSA 프로젝트에서 사용된 인프라를 기반으로 진행된다. Spring Boot MSA 환경에서 트랜잭션을 관리하며 스프링 이벤트/SNS/SQS를 사용하여 DB 정합성 보장하기1 나는 MSA 프로젝트에서 DB 정합성 보장을 위해 Spring Event를 다음과 같이 사용했다. 잠시 이전 글의 서론을 다시 가져왔다. 한번 읽어보자 내가 구성한 MSA ..
테라폼(Terraform) 사용 가이드 7: AutoScailingGroup과 LoadBalancer을 생성하고 연결하기
·
AWS/테라폼(Terraform)
이번 포스트에서는 테라폼으로 AutoScailing을 적용시켜 보자 📌 서론 Auto Scailing Group을 테라폼으로 사용하려면 어떻게 해야 할까? 이번 포스트를 통해 테라폼으로 ASG를 생성하고 로드 밸런서까지 연결시켜 보자 1. Auto Scailing Group이란? AWS Auto Scaling Group의 개념 AWS Auto Scaling Group (ASG)은 AWS 클라우드 환경에서 중요한 역할을 하는 서비스다. ASG를 이용하면 동일한 설정을 가진 EC2 인스턴스들을 그룹으로 묶어, 이들의 숫자를 자동으로 조절할 수 있다. 이는 애플리케이션의 부하에 따라 필요한 컴퓨팅 리소스를 유연하게 관리하는 데 도움을 준다. ASG의 작동 원리 ASG는 미리 정의된 조건에 따라 EC2 인스턴스..
테라폼(Terraform) 사용 가이드 6: 테라폼으로 IAM 정책 생성/관리하기
·
AWS/테라폼(Terraform)
이번 포스트는 테라폼으로 IAM정책 및 리소스를 관리하는 방법이다. 📌 서론 AWS EC2 인스턴스 생성과 함께 관련된 IAM 사용자 및 S3 버킷을 만들어보는 내용이며 S3 버킷에 대한 액세스를 허용하는 IAM 정책을 생성하고, 해당 정책을 새 IAM 사용자에게 연결하는 과정을 설명하도록 하겠다. 1. IAM 정책 리소스 검토 IAM 정책 리소스 코드 분석 아래의 코드는 Terraform을 사용하여 IAM 정책을 정의한다. 이 코드는 S3 버킷에 대한 권한을 정의하고 있다. resource "aws_iam_policy" "policy" { name = "${random_pet.pet_name.id}-policy" description = "My test policy" policy =
MSA 서버 간 통신: SNS의 MessageAttributes로 완벽한 Zeropayload 전략 구현하기
·
Spring MSA
우리 팀은 MSA에서 SNS를 사용하여 서버 간 통신을 할 때 어떻게 완전한 Zeropayload를 적용했는지 소개한다. 우리 팀은 MSA 아키텍처를 구성하면서 Zipkin을 사용하여 분산추적을 설계했고 그 과정은 traceId를 SNS메시지를 통해 서로 주고받아서 추적하도록 설계했는데 여기에서 무언가 찝찝함이 계속 느껴졌다. 왜냐하면 지금 설계한 아키텍처에서는 Zeropayload정책이 지켜지지 않은 것 같았기 때문이다. 최소한이면서 꼭 필요한 정보만 담는 것이 Zeropayload 정책인데 나는 message안에 memberId라는 값 1개만 넣어서 메시지를 발행하는 것이 아니라 traceId를 같이 담아서 보내줘야만 했다. 이런 상황을 해결해보고자 다른 기업이나 지식 공유자 분들께서는 어떤 방식으로..
AWS SQS에서 오류 메시지 처리하기: 수동 삭제로 해결하는 방법
·
AWS/SNS, SQS
이번에는 SQS 메시지의 수신 오류가 발생한 상황을 어떻게 해결할지 알아보자 스프링 부트에서 SQS를 사용하여 메시지를 처리하던 중 오류가 발생했다. 초기에는 이 오류를 @SqsListener 메서드 내부에서 발생한 문제로 생각하여 스프링 코드를 수정했지만, 여전히 같은 오류가 발생했다. 그래서 오류의 원인을 찾아보던 중 중요한 사실을 알게 되었다. 이전에 발생한 오류는 SQS의 메시지 내부에 문제가 있었기 때문이다. SQS 메시지 자체에 문제가 있었기 때문에 해당 메시지는 계속해서 처리되지 않았다. 그리고 오류가 발생한 메시지는 계속해서 큐에서 polling되고 있었다. 이로 인해 같은 오류 메시지가 300번 이상 polling되는 상황이 발생했다. 이번 포스트에서는 오류가 발생한 SQS메시지가 제대로..
SpringBoot MSA 로깅: Zipkin으로 서버간 SNS, SQS, Feign 통신의 분산 로그 추적 하기
·
Spring MSA
저번 포스트에서 서버 간 분산 추적을 위해 Zipkin을 적용시켰는데 제대로 추적되지 않았다. 이것을 해결해 보자 이전 글은 아래의 포스트에 있다. SpringBoot MSA 로깅: Zipkin을 활용하여 효율적인 분산 로그 추적 하기 MSA에서 Zipkin을 사용하여 분산추적 로깅을 구현해 보자 이벤트를 사용해서 데이터베이스의 정합성 보장 문제는 해결했지만 아직 이 과정들을 전부 로그를 통해서 추적하는 것은 적용시키지 못 curiousjinan.tistory.com 1. Zipkin 적용시 발생한 문제점과 글을 이해하기 위해 알아야 할 내용 1-1. Zipkin을 적용하다 발생한 문제점 1. 각 SpringBoot서버에 Zipkin 적용은 완료했는데 서버 간 요청 추적이 제대로 되고 있지 않다. 2. ..