Spring 성능 테스트 튜닝 # 1. 성능 테스트 이해하기
·
Backend/Performance
서버 개발을 하다 보면 '성능 테스트' 라는 말을 자주 접하게 된다. 처음에는 문제가 없던 서비스도 사용자가 늘어나고 트래픽이 증가하게 되면, 시스템을 어떻게 안정적으로 운영할 수 있을까 고민하게 된다. 이러한 고민은 결국 성능에 대한 문제로 이어진다. 성능 테스트는 단순히 응답이 빠른지 느린지를 확인하는 작업이 아니라요청 처리 과정에서 시간이 오래 걸리는 구간이 어디인가? (병목 발생 지점)부하가 증가할 때, 시스템이 무너지기 시작하는 시점은 언제인가? (임계점)이러한 문제점을 최대한 해결하기 위해서 어떤 설정이 적절한지를 찾는 과정이다. 물론 정답은 없지만 테스트를 통해 정답에 가까운 값을 찾아갈 순 있다. 이번 시리즈는 동기방식의 Spring 기반 서비스를 대상으로, 실제로 부하를 발생시키고 병목을..
docker-compose로 Docker 이미지 생성하기
·
Infra/DevOps
성능 테스트를 하기 위해 테스트 할 서비스를 Docker 이미지로 생성해야 했다.기존에 서비스 배포에 사용하던 docker-compose.yml 파일이 있어, 이 파일을 기반으로 Docker 이미지를 생성하기로 했다. 기존 docker-compose 파일services: blog-backend: image: amazoncorretto:21 container_name: blog_backend restart: always ports: - "80:8084" working_dir: /app volumes: - ./build/:/app/build/ - ./logs/:/app/logs/ environment: - secretKey=${SEC..
ASG로 생성된 EC2 로그를 CloudWatch Logs로 관리하기 # 4
·
Infra/AWS
CloudWatch를 활용한 로그 통합 및 지표화분산 환경 로그 통합 관리CloudWatch > 로그 > Log Management- Config 파일에서 설정한 로그 그룹 명으로 생성된 것을 확인 - 생성된 로그 그룹 선택 > 로그 스트림 탭- 인스턴스 ID로 로그 스트림이 생성된 것을 확인 - 로그 스트림 목록 중 하나 클릭- 해당 EC2 인스턴스의 서비스에 대한 로그들을 확인 할 수 있다 Log Insights 사용하여 로그 필터링 하기- 로그 그룹 선택 > Log Insights에서 보기 - 쿼리를 입력 후 쿼리 실행 버튼 클릭 시 전체 로그를 필터링 해서 볼 수 있다- 필터링 된 로그를 선택 할 경우 로그 데이터 구조 확인 가능 - fields: select문과 같이 @timestamp, @me..
ASG로 생성된 EC2 로그를 CloudWatch Logs로 관리하기 # 3
·
Infra/AWS
CodeDeploy 배포 환경 구성애플리케이션 생성CodeDeploy > 배포 > 애플리케이션- 컴퓨팅 플랫폼: EC2/온프레미스 배포 그룹 생성- 애플리케이션 > 배포 그룹 탭 > 배포 그룹 생성 - 배포 그룹 이름 입력- 서비스 역할: CodeDeploy 역할 선택(🔗 [CodeDeploy 서비스용 IAM 역할] 항목 참고)- 배포 유형: 현재 위치- 환경 구성: Amazon EC2 Auto Scaling 그룹 체크, 생성한 ASG 선택 - 배포 설정: CodeDeployDefault.AllAtOnce- 로드 밸런서: 로드 밸런싱 활성화 체크, Application Load Balancer 또는 Network Load Balancer 선택, 생성한 대상그룹 선택 배포 파이프라인 실행- Github ..
ASG로 생성된 EC2 로그를 CloudWatch Logs로 관리하기 # 2
·
Infra/AWS
ASG 생성시작템플릿 생성EC2 > 인스턴스 > 시작 템플릿- Auto Scaling 지침: 체크- AMI, 인스턴스 유형 선택 - 키페어 선택- 서브넷 선택 X- 보안 그룹 설정▷ Inbound: SSH(22) / Anywhere-IPv4(0.0.0.0/0), HTTP(80) / ALB 보안 그룹▷ Outbound: 모든 트래픽 / Anywhere-IPv4(0.0.0.0/0)- 퍼블릭 IP 자동 할당: 활성화 (편의를 위해 public subnet 선택) - 고급 세부 정보 설정- IAM 인스턴스 프로파일: 생성한 EC2 인스턴스용 IAM 역할 설정- 사용자 데이터▷ Docker, Docker Compose, CodeDeploy Agent, CloudWatch Agent 설치▷ CloudWatch Ag..
ASG로 생성된 EC2 로그를 CloudWatch Logs로 관리하기 # 1
·
Infra/AWS
ASG(Auto Scaling Group)를 통해 동일한 서비스를 여러대의 EC2로 운영하다 보면, 특정 시점의 발생한 로그를 확인해야 할 경우가 생긴다.하지만 각 인스턴스가 분산되어 있다 보니, 로그를 확인 할때마다 개별 인스턴스에 SSH로 직접 접속하여 로그를 확인해야 할 수 밖에 없는데 인스턴스 숫자가 늘어날수록 이 과정이 비효율적이고 번거로워진다. 직접 접속하지 않고 한번에 로그를 모아보거나, 필요한 로그만 필터링해서 볼 수 있는 방법이 없을까? 이러한 문제를 해결하기 위해 AWS에서는 ASG로 생성된 EC2 인스턴스들의 로그를 하나의 그룹으로 묶어 관리할 수 있는 CloudWatch Logs 기능을 제공해준다.CloudWatch Logs에서는 분산된 서버의 로그를 한곳으로 수집하여 실시간으로 모..
Logstash, Elasticsearch 기본 사용법 - Logback 연동, Spring Data Elasticsearch 사용
·
Infra/ELK
3. Logback에 Logstash 연동의존성 추가# maven: pom.xml net.logstash.logback logstash-logback-encoder 7.3# gradle: build.gradleimplementation 'net.logstash.logback:logstash-logback-encoder:7.3' logback 설정파일에 logstash appender 추가# logback-spring.xml localhost:5000 4. Spring Boot에서 Elasticsearch 조회- Spring Data Elasticsearch 사용🔗 Spring Data Elastic Version의존성 추가# maven: pom.xml org.springframew..
Logstash, Elasticsearch 기본 사용법 - 설치 및 실행
·
Infra/ELK
1. 개발환경VersionJava: Open JDK 11Spring Boot: 2.7.11Elasticsearch: 7.17.3Logstash: 7.17.3 호환 버전 비교🔗 Logstash, Elasticsearch와 JDK 호환 버전 🔗 Elasticsearch와 Spring 호환 버전🔗 Elasticsearch와 Logstash 호환 버전 2. 설치 및 실행Elasticsearch- 다운로드: Windows🔗 https://www.elastic.co/kr/downloads/past-releases/elasticsearch-7-17-3 - 실행: Elasticsearch 설치 경로/bin.\elasticsearch - 확인: http://localhost:9200 (기본 포트: 9200) Lo..