일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 백준
- 다형성
- 무디스
- mco
- FCF
- StringBuffer
- 제태크
- 프로그래머스
- 그리디 알고리즘
- 기업분석
- object
- Java
- 금리인하
- javascript
- 주식
- etf
- 오버라이딩
- S&P500
- 주린이
- 금리인상
- 미국주식
- 객체지향
- 자바
- 접근제어자
- 잉여현금흐름
- 알고리즘
- XLF
- 현금흐름표
- 배당성장
- 인플레이션
- Today
- Total
오늘의하루
Load Balancing을 통한 성능 최적화와 AWS의 활용 본문
성능 향상을 위한 Load Balancing 전략을 검토하고, AWS의 ELB와 오토 스케일링을 활용하여 효과적인 서비스 배포를 준비합니다.
Load Balancing
Load Balancing은 Scale-Out 전략의 핵심으로, 서버나 리소스의 수를 증가시켜 시스템 성능을 향상시킵니다. 테스트 결과, 30~40개의 스레드가 최적의 성능을 나타내므로 이를 고려하여 Load Balancing 전략을 수립합니다.
Nginx를 통한 Load Balancing 설정
Nginx는 Reverse Proxy와 Load Balancing 설정이 간편하며, 적은 자원으로 많은 연결을 처리할 수 있어 선택했습니다. Load Balancing 알고리즘으로는 Least Connections, Generic Hash를 테스트 중이며, 파일 분석 트래픽을 30~40을 유지하기 위해 선택했습니다.
- Round Robin: 모든 서버에 요청을 순서대로 분배하여 부하를 균등하게 분산합니다.
- Least Connections: 현재 연결된 클라이언트 수가 가장 적은 서버에 요청을 전달하여 부하를 최적화합니다.
- IP Hash: 클라이언트의 IP 주소를 해시하여 특정 서버로 요청을 보냅니다. 동일한 클라이언트는 항상 동일한 서버로 요청이 전달됩니다.
- Generic Hash: 사용자가 정의한 변수를 기준으로 트래픽을 분산시킵니다.
Nginx 설정
최신 버전의 Nginx에서는 HTTP 버전이 기본적으로 1.1로 설정되어 있습니다. HTTP/1.1은 지속적인 연결(Persistent Connection)을 지원하여 한 번의 TCP 연결로 여러 개의 요청과 응답을 처리할 수 있습니다. 이로써 연결 시간과 대기 시간을 줄여 성능을 최적화할 수 있습니다.
HTTP/1.1의 주요 특징은 다음과 같습니다:
- Keep-Alive 지원: 연결을 유지하고 여러 개의 요청과 응답을 동일한 연결을 통해 처리합니다.
- 다중 요청/응답: 하나의 연결로 여러 개의 요청을 병렬로 처리하고 여러 개의 응답을 동시에 받아들일 수 있습니다.
- Chunked 전송 코딩: 메시지를 여러 조각(chunk)으로 나누어 전송하고, 수신측에서 조각들을 조립하여 메시지를 구성합니다.
이러한 HTTP/1.1의 특징을 통해 서버와 클라이언트 간의 효율적인 통신이 가능해지며, 이전보다 성능을 향상시킬 수 있습니다. 추가적인 HTTP 버전 설정은 보통 필요하지 않습니다.
AWS 활용
서버 인스턴스를 다수 열어두어야 하는 고민을 ELB와 오토 스케일링을 통해 해결할 수 있습니다.
- ELB (Elastic Load Balancer): 다수의 인스턴스로 트래픽을 분산하여 성능을 향상시키는 서비스입니다. CLB를 선택하여 비용 효율적인 L4 레이어에서 작동하도록 설정했습니다. L4는 전송 계층의 프로토콜인 TCP 및 UDP에서 작동함을 의미하며, IP 주소와 포트 번호로만 분리합니다.
- 오토 스케일링: 인스턴스 수를 자동으로 조정하여 트래픽 변화에 유연하게 대응합니다.
결론
Load Balancing 전략을 통해 성능을 향상시키고, AWS의 ELB와 오토 스케일링을 활용하여 효율적인 서비스 배포를 준비하였습니다. 추가적인 테스트를 통해 배포를 완성할 예정입니다.
'Spring > SourceCode.io 프로젝트' 카테고리의 다른 글
[SourceCode.io] 5차 성능 테스트 : 분석 및 해결책 (0) | 2024.04.14 |
---|---|
[SourceCode.io] 4차 성능 테스트 : 분석 및 해결책 (0) | 2024.04.03 |
[SourceCode.io] 3차 성능 테스트 : 분석 및 해결책 (0) | 2024.04.02 |
[SourceCode.io] 2차 성능 테스트 : 분석 및 해결책 (0) | 2024.03.29 |
[SourceCode.io] 1차 성능 테스트 : 분석 및 해결책 (0) | 2024.03.28 |