청소 플랫폼 만들기 (13)
대용량 트래픽 발생시 대처법공부하며 느낀 점
참조한 페이지
PR 과정에서 주고받은 코멘트들
1. 라우터 변경 : 로그인/로그아웃관련 라우터의 api를 /login 으로 설정했는데, /auth 로 바꾸는게 어떠냐는 의견이 들어왔다. 좋은 생각이라고 해서 적용하려했는데, 이미 다른 사람이 만들어둔 상태였다. 다음에는 API 명세를 짤 때 더 조심히 짜야겠다.
2. 코드 컨벤션 : 에러 처리나, 3계층 구조의 클래스내의 함수명등이 미리 정한 규칙에 맞지 않아서 수정했다.
여러가지 있었지만 위의 둘이 중요했던것같다.
3. commit 할때 자신이 고친것만 올리기 : 변경을 할 때 자신이 맡은 부분만 바꾸고, 다른 부분을 바꿀때는 그 담당자와 이야기하고, 커밋을 할때 고친것만 올려서 불필요한 충돌이 계속 나는것을 막자는 의견이 있었다.
나의 생각
돈과 시간에 여유가 있는 경우 : AWS나 유튜브처럼 트래픽이 많이 발생할 곳에 본서버의 내용을 복사한 센터들을 생성해둔다.
실시간으로 봐야하는 정보도 역시 서버에서 1:1로 주지 않고 센터에서 분배하는 방식으로 하면 좋을 것 같다.
돈은 있는데 시간에 여유가 없는 경우 : 서버를 임대해야할 것 같다. 클라우드로 빌리면 시간은 빠르지만 원래 서비스에서 사용하던 서버와 어떻게 통합하거나, 트래픽을 나눌지, 또 그 사이에 저장 된 정보들을 나중에 정보들을 어떻게 처리할지 머리가 아플 것같다. 물리적으로 서버를 가져와서 임대하는 경우 원래 서버와의 통합은 상대적으로 간편할 것 같지만, 당장 트래픽에 대처할 수 는 없을 것 같다.
검색해서 알아 본 것
그럼 방문자들에게 트래픽 적으로 좋은 경험을 주기 위한것들을 알아보자
1. 방문자들은 빠른 걸 원한다 : CXL에 의하면, 57%의 사용자는 로드시간이 3초 이상이면 나가고, 47%의 사용자는 2초 이내에 로드되기를 바란다고 한다.
1초의 지연으로 7%의 전환(conversions)이 감소하고 고객 만족도가 16% 감소한다고 한다. 고객수는 최대 75%까지도 감소한다고 한다.
당장의 고객도 감소하고, 사이트의 평가도 나빠져서 수익이 나빠지게 되는 것이다.
2. 호스팅 점검하기 : 사이트의 이용자가 늘어나기 시작한다면 사람이 적을 때 만들었던 공유 호스팅이 아니라, 가상 개인 서버(VPS)나 전용 호스팅 플랜을 사용하는 것이 더 좋다.
공유 호스팅에서 할당된 용량보다 많은 양을 정기적으로 사용하면 패널티를 받을 수 있으며, VPS는 반대로 단일 서버가 여러 가상환경으로 분할된다. 또한 리소스를 공유하는 사이트도 적어서, 나의 사이트가 온전한 물리 서버를 가지게 된다.
VPS와 전용 호스팅은 세팅 시간을 많이 잡아먹지만, 호스팅 환경을 사용자 마음대로 커스터마이징할 자유도가 있다.
3. 사이트 디자인 능률화 :
불필요하거나 쓰지 않는 스크립트 제거
손상되거나 쓰지않는 링크를 찾아 수정한다.
플러그인 사용을 최소화하고, 경량 플러그인을 사용한다.
레이지 로딩(필요할때마다 미디어를 로딩)을 사용하기
가능한 한 리디렉션을 쓰지 않는다.
CSS를 하나로 통합한다. (HTTP/2 에서는 중요치 않음)
이미지를 업로드 할때 최적화도구를 사용하기.
src 사용 (이미지를 보여줄 특정 크기를 정하기).
큰 이미지를 리사이징 하지 말고, 디스플레이 크기에 맞춰 업로드하기.
모바일 사용자들 좀 더 고려하기
4. 콘텐츠 전송 최적화
같은 지역의 사용자가 많을경우 해당 지역의 CDN을 사용한다. CDN은 지역 방문자의 콘텐츠 전송을 최적화 하기 위한 서버의 모음이다. 물리적으로 멀리 있는 사람들에게 정적 캐시를 제공하기 때문에 서버와의 응답시간을 줄일 수 있다.
5. 압축파일
검색이나 전송중에 압축된 JS나 CSS를 보내고, 브라우저가 압축을 풀게해서 전송시간을 줄이는 방식이다.
6. 캐싱
사이트를 방문할때마다 브라우저에 페이지의 구성요소를 저장시키는 것이다. 이미 사이트의 정보가 있기 때문에 첫 방문 이후에는 여러 요청이 생략될 수 있다.
또한 헤더의 만료기간을 설정하여, 동적요소보다는 적은빈도로 내용을 업데이트 할 수 도 있다.
7. 보안 강화
DDOS 공격 또는 XSS(사이트 간 스크립팅에, 악의적 스크립팅 삽입하는 공격)와 같은 사이트를 다운시키거나, 사이트의 신뢰도를 저하 시킬 수 있는 공격에 대처하기 위해서 보안을 가화한다.
8. 변화 분석
트래픽 최적화는 일회성 작업이 아니다. 계속해서 방문자가 오는 이상 패턴이 바뀌기 때문이다. 그렇기 때문에 지속적으로 모니터링하고, 그것을 바탕으로 사이트를 진화시켜야한다.
속도를 추적할 수 있는 도구를 쓰는것도 좋다.
요약
서버의 성능 관련 : 호스팅 정검, 콘텐츠 전송 최적화, 수직/수평 확장
클라이언트의 요청 관련 : 사이트 디자인 능률화, 압축파일, (비동기 )캐싱
기타 외적인 요인 : 보안강화
깃은 협업 도구인 만큼 다른 개발자 동료가 뜬근 없는 불편함을 느끼지 않도록 만들어야한다.
트래픽 대처는 단순히 잘만드는 것 부터, 잘 관리하고, 트래픽을 분산하고, 악의적 공격을 막는 등 여러가지가 종합적으로 필요한 작업이다.
Running High Traffic Websites - 8 Things to Consider
What is Website Conversion? [+5 Ways to Improve Conversions]