본문 바로가기

아키텍처

[아키텍처] AWS 인프라 성능최적화 방안

반응형

 

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