성능 향상/보장 방안
전시, 상품

리소스 구성
내용
요약 테이블
프런트에서 빈번하게 조회하는 데이터가 Full Scan, Sort 등을 유발하는 테이블 구조
반정규화로 해소가 되지 않는 상품, 전시, 프로모션 가격 테이블에 대하여 요약 테이블을 만들어 Index Range Scan으로 조회할 수 있음
관리자에서 수정, 프런트에서 조회
요약 테이블 생성, 전파 후 데이터 조회 가능
요약 테이블 생성 배치
Master-Replica
AWS RDS 제공(또는 PostgreSQL 기술 이용하여 구성) Master의 데이터를 CDC 이용하여 Replica로 복제 동기화함
Master와 Replica는 동일한 데이터
1개의 Master
Replica는 Scale Out 가능
Master와 Replica는 동일한 데이터
Master 장애 시 Replica 중 1개가 Master 역할 대체
Application

리소스 구성
내용
Spring Cache
<Method +Parameter> 를 키값으로 호출 응답 객체를 캐시 함
사용가능 저장소
EhCache (Heap Memoty)
Redis
Caffeine
Hazelcate
Infinispan
EHCache
별도의 서버 구성 없이 사용 가능
캐시 Hit 시 속도가 빠름
개별 VM마다 캐시 필요(Hit율 하락)
캐시 메모리가 상대적으로 작음
Redis
한 번 캐시하면 복수의 Pod Replica가 같이 사용(Hit 율 증가)
대용량으로 캐시 메모리 사용 가능
캐시 Hit 시 조회 속도가 상대적으로 느림
별도로 Redis 서버 필요(비용 증가)
CDN

리소스 구성
내용
CDN
Contents Delivery Network동일한 요청 url에 대하여 동일한 내용을 리턴하는 정적 컨텐츠의 경우 매번 파일시스템 (S3)까지 요청이 와서 처리하는 것이 아니라 네트워크 앞단에 클러스터로 구성된 CDN을 이용하여 사용자에게 빠른 delivery를 하여 클라이언트 속도를 향상한다.
– 이용 CDN : CloudFront
Purge
대량의 컨텐츠 변경 또는 긴급 변경 시 캐시된 컨텐츠를 즉시 변경하는 기능
Front - End
Front-End UI의 로딩 속도 향상을 위하여 3가지(PWA/Lazy-Load/Skeleton UI) Plug-in을 적용할 것임
1) PWA
PWA(Progressive Web App)란? HTML, CSS, JavaScript와 같은 웹 기술로 만드는 앱을 말합니다.
PWA의 장점
익숙한 웹 기술 그대로 사용함으로 진입 장벽이 낮음
푸시 알림, 오프라인캐시, HTTPS 사용
웹 브라우저만 있으면 어디든 배포 가능
홈 화면 추가를 통한 응용 프로그램으로 설치 가능
빠른 실행 속도
네이브 앱과 유사한 사용자 경험 제공
PWA의 단점
웹 API를 통하여 통신하므로 웹 표준 지원 브라우저 필요
앱스토어, 플레이스토어 이용 불가
IOS는 일부 기능만 사용 가능

리소스 구성
내용
PWA Caching
Application에서 API 서버 호출
Service Worker가 Caching된 data가 있는지 확인하여, 있으면 caching된 data를 먼저 화면에 보내고 API 요청
API의 respons를 Service Worker가 caching하고 application으로 보내 줌
2) Lazy - Load
Lazy-Load 란?
페이지에 액세스할 때, 모든 콘텐츠를 대량으로 로드하는 대신, 사용자가 필요한 페이지의 일부에 액세스할 때 콘텐츠를 로드할 수 있음
component , image 등에 주로 사용됨
Lazy-Load 의 장점
사용자가 처음 웹 페이지를 열 때 사이트의 일부만 다운로드하므로콘텐츠를 더 빠르게 제공
모든 콘텐츠를 로드하는 게 아니므로 리소스 비용 감소
Lazy-Load 의 단점
페이지의 모든 콘텐츠를 불러오는 게 아니기 때문에SEO(Search Engine Optimization)에 상대적으로 취약함
3) Skeleton UI
Skeleton UI 란? 실제 데이터가 렌더링 되기 전, 보일 화면의 윤곽을 먼저 그려 주는 로딩 애니메이션
Skeleton UI 의 장점
로딩이 완료되면 윤곽에 데이터가 대체되어 화면이 부드럽게 전환되기 때문에 체감 로딩 시간이 짧음
Skeleton UI 의 단점
모든 페이지에 적용하기에는 시간과 비용이 많이 듦


성능 보장 방안 ( AutoScaling )

리소스 구성
내용
HPA
Horizontal Pod Autoscaling
Pod로 서비스를 구성할 때 최소 개수와 최대 개수를 지정하면 부하가 없을 때 최소 수로 서비스를 제공하다가 부하가 많아지면 Node의 Reource가 허용하는 한도내에서 최대 개수까지 자동으로 Pod가 증가한다.
– 전체 서비스 중 필요한 서비스의 Pod만 증가하므로 MSA에서 매우 효율적인 Utilization과 빠른 Scale-out 성능을 보인다.
Node Autoscaling
AWS위의 Kubernetes에서는 할당된 Node의 자원을 모두 사용했을 때 (새로운 Pod가 스케줄되지 않을 때) 지정된 Node 개수만큼 Node를 자동으로 scale-out 하여 서비스 성능을 보장한다.
마지막 업데이트