AWS 인프라 성능최적화 방안
1. EC2 인스턴스 유형 최적화 (컨테이너 기반시 컨테이너 최적화 진행)
2. ELB, EKS Ingress Controller 를 사용하여 트래픽 분산 처리
3. CDN을 사용하여 정적 컨텐츠 캐싱 적용
4. Redis를 활용한 데이터 캐싱 적용(상품, 이벤트, 메뉴 등)
5. 트래픽 부하 대비에 따른 사전 Scale-out / Scale-up
6. 데이터베이스 Read Only DB(Replica)를 활용한 부하 분산
7. DB Pool 설정
- DB 설정은 기본적으로 reader/writer로 구분하여 구성
- DB Pool 사이즈는 환경에 따라 사이즈를 조정하며 컨테이너 별로 설정
8. HTTP Pool 설정
- HttpClient : PoolingHttpClientConnectionManger
1) MaxTotal : HttpCluent가 사용하는 전체 쓰레드 개수(Default : 25)
2) MaxPerRoute : URL Domain별로 사용될 수 있는 최대 쓰레드 개수(Default : 5)
3) UI → API 요청이 빈번히 발생하는 어플리케이션의 경우 MaxTotal 및 MaxPerRoute 설정 값을 조정하여 성능 향상
4) MaxTotal 및 MaxPerRoute 설정 값을 변경할 수 있도록 환경 변수 설정
5) k8s의 하나의 pod의 최대 소켓수는 128개이므로 DB 커넥션풀 수를 고려하여 MaxTotal 수를 100개 미만으로 설정
- 로그 설정
- Redis 설정
1) 기본 구성의 경우 RedisIndexedSessionRepository 사용하게 되고, 향후 성능 저하를 일으킬 수 있기에 RedisSessionRepository를 사용한다.
2) Redis Key를 전체 검색 하지 않게 하며 HashOperations를 활용하여 특정 Key로 일치하는 데이터를 가져올 수 있게 구현
3) 검색이 필요한 경우 ScanOperation을 활용하여 검색
9. 화면 최적화
- 동기방식으로 페이지 로딩 지연 방지 (비동기 방식의 랜더링을 통해 페이징 처리)
- 우선순위에 기반한 리소스 로딩
'아키텍처' 카테고리의 다른 글
클라우드 락인(Lock-in) 이란? (1) | 2023.07.10 |
---|