공돌이푸84 (221.♡.171.141)
2024년 4월 22일 PM 11:59 · 수정됨(04. 23. 14:12)
안녕하세요.
아마 이전에도 관련된 내용이 올라왔던 것 같지만, 최근에도 가끔 초기화면이 안 보이는 경우가 있기도 해서 혹시나 싶어서 한 번 더 소개를 해 봅니다.
현재 다모앙 초기화면의 경우 추천글과 공지사항, 자유게시판 등의 최신 글을 보여주고 있습니다.
기본적으로 이런 사이트에서 초기화면의 PV는 많은 경우 전체 PV의 절반을 넘기기도 하기 때문에 초기화면의 부하를 줄이는 것이 전체 서버의 부하를 줄이는데 큰 도움이 됩니다. 특히 스케일아웃이 비교적 쉬운 웹서버 부하보다도, DB의 부하를 줄이는 것이 중요합니다.
코드를 보지 못해서 정확히 어떻게 구현되어 있는지 알 수 없지만, 기본적인 그누보드의 코드를 그대로 활용했다면
초기화면에서 게시판 게시물을 보여줄 때마다 직접 DB에서 쿼리를 날려서 최신글을 가져올 것으로 예상됩니다.
제가 만든 사이트의 경우 내용이 DB에 저장되고 그걸 초기화면에서 보여주는 형태였는데,
초기화면 부하를 줄이기 위해, 1분마다 초기화면에서 보여줄 내용을 JSON으로 저장을 하고, 초기화면에서는 그 JSON을 불러오는 형태로 변경을 하여, 매번 초기화면을 불러올 때마다 DB에 쿼리를 날리는 부분을 확 줄였습니다. 1분간 사용자가 1000명일 경우, DB 조회가 기존에는 1000번이었는데, 변경된 구조에서는 1번으로 줄어들고 대신 JSON 호출이 1000번이 되는 형태가 됩니다.
그만큼 JSON 호출이 늘어나는 부분은, 이 JSON을 S3에 저장을 하게되면 사실상 무한대의 대역폭을 가질 수 있습니다. AWS SDK를 이용해서 S3에서 JSON을 가져와서 보여줘도 되지만, 정적 웹사이트 호스팅<https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/WebsiteHosting.html> 기능을 통해 S3의 JSON 파일을 마치 API 호출하는 것처럼 프론트엔드코드에서 바로 가져올 수도 있습니다.
장기적으로는 백엔드와 프론트엔드 코드를 분리하여, 백엔드는 API만 제공하고, 프론트엔드는 S3에 배포하여 CloudFront를 이용<https://repost.aws/ko/knowledge-center/cloudfront-serve-static-website>해서 배포하고 백엔드의 API를 불러서 보여주는 형태로 전환을 하면 좋을 듯 합니다.
아마 많은 분들이 이미 비슷한 의견을 내주셨겠지만 조금이라도 도움이 되면 좋겠네요.
댓글 (19)
-
달달짝지근
24.04.23 · 125.♡.218.23
똑똑한 방법이군요 굿굿 -
대대끼리
24.04.23 · 211.♡.105.2
뭔말인지 모르겠으니 일단 추천만 합니다. - 다
다시머리에꽃을
24.04.23 · 124.♡.159.183
그냥 캐시사용하면 됩니다. - 팡
팡파파팡
→ 다시머리에꽃을
24.04.23 · 211.♡.235.47
캐시가 절대 저렴하지 않습니다…
오히려 작성자님의 아이디어는 대역폭에 강점이 있어서 캐시 서버보다 더 많은 리퀘스트에도 강점을 가집니다 - 다
다시머리에꽃을
→ 팡파파팡
24.04.23 · 106.♡.197.65
수많은 캐시 솔루션이 있고 캐시도 메모리캐시말고도 간단히 할 수도 있습니다
이런사이트의 초기화면 정도라면 메모리캐시 안써도 되요
그리고 용량 크지 않으면 메모리 캐시인 엘라스틱캐시도 생각보다 별로 안비쌉니다. -
KKyleDev
24.04.23 · 112.♡.76.76
[https://s3.damoang.net/data/editor/2404/comment_1889946700_rF3eCxfD_aeb6599ebcd6189ac19a0c38912e30fb01a6b828.jpeg]
@앙실장 - 앙
앙실장
→ KyleDev
24.04.23 · 14.♡.155.113
디코방에서 여러 형태로 고민하면서 방법을 찾아 보고 있습니다. 머지 않아 결론이 날 것 같아요. -
아아이비아
24.04.23 · 211.♡.150.229
[https://s3.damoang.net/data/editor/2404/comment_3543045861_khPbfCT2_d3d453627290a1a6c3e09e7c8750af0cf839a407.jpeg] -
Pplaintext
24.04.23 · 119.♡.120.4
정적 페이지로 만들어서 제공하는 방법도 있지 않을까 싶습니다. ㅎㅎ -
세세피로스
24.04.23 · 123.♡.119.228
잘은 모르겠지만 일단 추천하고 봅니다. ㅋ
댓글을 작성하려면 이 필요합니다.