라엘님의 이미지 캐시 서버구축 해보니 진짜 좋네요. 정보
라엘님의 이미지 캐시 서버구축 해보니 진짜 좋네요.
본문
컨셉은 이렇습니다.
트래픽과 하드 용량이 빠듯한 서버에 그누보드를 돌리고 있다고 가정합니다.
그리고 CPU는 느리지만 트래픽과 HDD 용량이 풍부한 서버가 따로 있구요.
우선 그누보드에서 이미지나 gif, mp4를 기존처럼 업로드합니다.
이미지나 동영상이 그누보드 서버에 올라가겠죠?
이제 아파치나 Nginx로 캐시 전용서버를 구축합니다.
캐시서버로 쓸 것이니, 서버 사양은 중요하지 않고, 용량과 트래픽이 제일 중요하겠죠.
오라클 클라우드 무료 계정이 딱 좋습니다.
무려 50~100GB HDD와 10TB/한달 트래픽을 주기 때문입니다.
게다가 서버가 춘천, 서울에 있으니 지연시간에서도 매우 유리합니다.
이제 @라엘 님이 알려주신대로 캐시서버를 구축합니다.
이제 그누보드에 가서 이미지 경로만 전부 캐시서버 주소로 바꿔줍니다.
해당 페이지에 접속하면 원본서버에 있던 이미지, 동영상이 자동으로 캐시서버로 업로드되고
그 뒤엔 캐시서버에서만 이미지, 동영상을 불러오게 됩니다.
셋팅을 잘 한다면 위와 같이 HIT이 뜨게 됩니다.
HIT의 의미는 캐시서버에 이미지가 있다는 뜻입니다.
이미지, 동영상 트래픽을 분리할 수 있어서 원본서버의 CPU를 분산할 수 있고,
트래픽에서도 매우 유리하겠죠?
----
하지만 문제는 제가 그누보드 이미지 및 동영상의 URL 변경을 못한다는 것입니다. ㅠㅠ
그것만 해결되면 멋진 가이드 하나 드릴 수 있는데 어렵네요 ㅠㅠ
추천
0
0
관련링크
https://blog.lael.be/post/7605
543회 연결
댓글 8개

일단 캐시 개념을 잘 못 잡으신 것 같습니다. 틀릴수도 있지만, 제가 알고 있는 캐시 개념은, 만약에 캐시 서버가 죽더라도 동작을 해야 된다는 것입니다. 원본에 이미지가 존재하고, 그 이미지가 요청이 되면 캐시서버로 들어가서 캐시에 없으면 원본에 요청한후에 캐시에 넣고 요청한 곳에 보내주는 방식입니다.
즉 그러면 원본 소스코드를 수정안하고, 캐시서버쪽에서 세팅을 조정만 하면 되는 것으로 알고 있습니다.
https://medium.com/about-developer-blog/varnish-58c5d8269269
이론적으로는 이렇게 되는 것이 맞겠지만, 이 부분도 또 하나의 분야라서, 해보고 싶은 것은 많은데........
즉 그러면 원본 소스코드를 수정안하고, 캐시서버쪽에서 세팅을 조정만 하면 되는 것으로 알고 있습니다.
https://medium.com/about-developer-blog/varnish-58c5d8269269
이론적으로는 이렇게 되는 것이 맞겠지만, 이 부분도 또 하나의 분야라서, 해보고 싶은 것은 많은데........

@마젠토 이미지 CDN 서버라고 보는게 맞겠네요. ㅎㅎ
캐시라는 개념과는 약간 다르기는 하겠습니다.
하지만 동작하는 방식이 캐시와 비슷해서 라엘님도 그렇게 이름을 붙인 것 같습니다.
바니시 캐시도 실전에서는 많이 쓰이는 것 같습니다.
전 redis를 세션 저장소로 활용하고 있고,
워드프레스에서는 W3TC에서 Redis를 컨트롤 할 수 있기 때문에
도커에 php-redis 깔아서 페이지 캐시, 오브젝트 캐시, DB캐시로 잘 쓰고 있습니다.
그누보드는 어떻게 쓰는지 잘 모르겠습니다.
예전에 Nginx FastCGI캐시를 그누보드에 붙여보려고 했는데 지식 부족으로 포기했었습니다.
캐시라는 개념과는 약간 다르기는 하겠습니다.
하지만 동작하는 방식이 캐시와 비슷해서 라엘님도 그렇게 이름을 붙인 것 같습니다.
바니시 캐시도 실전에서는 많이 쓰이는 것 같습니다.
전 redis를 세션 저장소로 활용하고 있고,
워드프레스에서는 W3TC에서 Redis를 컨트롤 할 수 있기 때문에
도커에 php-redis 깔아서 페이지 캐시, 오브젝트 캐시, DB캐시로 잘 쓰고 있습니다.
그누보드는 어떻게 쓰는지 잘 모르겠습니다.
예전에 Nginx FastCGI캐시를 그누보드에 붙여보려고 했는데 지식 부족으로 포기했었습니다.

@우성짱 우선 docker로 그누보드 앞에 varnish를 넣고, 이미지 캐시로 동작시킨 다음에 서버를 별도로 분리하는 방법을 찾아 보는 식으로 진행해 보세요.
개인적으로 원본 코드를 수정하는 것은 비추입니다. (잘 죽지야 않겠지만, 한번 죽으면 모두 엑박이 나올것 같아서..)
개인적으로 원본 코드를 수정하는 것은 비추입니다. (잘 죽지야 않겠지만, 한번 죽으면 모두 엑박이 나올것 같아서..)

@마젠토 그게 제일 좋겠죠.
다만 제가 바니시 캐시는 써본 적이 없고 두렵네요...
일단 볼피드님 도움으로 congif.php에 G5_CDN_URL을 지정하여 썸네일이 나오는 부분의 URL은 전부 수정이 되었습니다.
thumbnail.lib.php에서 G5_URL을 G5_CDN_URL로 수정한거 하나 밖에 없으니 원본 수정에 대한 두려움도 적을 듯 합니다.
아직 사이즈가 작은 이미지에 대해서는 잘 모르겠지만.. 하나씩 해봐야겠죠.
다만 제가 바니시 캐시는 써본 적이 없고 두렵네요...
일단 볼피드님 도움으로 congif.php에 G5_CDN_URL을 지정하여 썸네일이 나오는 부분의 URL은 전부 수정이 되었습니다.
thumbnail.lib.php에서 G5_URL을 G5_CDN_URL로 수정한거 하나 밖에 없으니 원본 수정에 대한 두려움도 적을 듯 합니다.
아직 사이즈가 작은 이미지에 대해서는 잘 모르겠지만.. 하나씩 해봐야겠죠.



개발 스터디모임 어느 하나 참가해보려고 찾아보는 도중에, 이 글을 발견했습니다!
위 댓글의 varnish 설명을 읽어보면 아시겠지만, 캐시 동작하는게 결국엔 똑같아요.
varnish 는 프록시의 일종으로써, 사용자 => varnish(proxy) => apache/nginx 방식으로 동작하는 것인데,
varnish 도 결국엔 파일을 저장해두는 것이고, varnish 죽으면 서비스가 죽는건 마찬가지에요.
제 블로그 글의 가이드가, 더 확장하기 좋고, 더 성능이 좋고, 더 안정적입니다. (복제와 확장이 쉽습니다.)
varnish 는 구축과 장애대처, 확장 관리가 어려워요.
요즘은 트랜드가, MVC, MVVM 등등, 역할 구성에 따라서 나누는 편이며,
주로, frontend(html/js), backend(PHP), storage(S3,Object storage)로 나누는 편입니다.
잘 판단이 안될때는 이미 앞서가는 기업들의 사용을 살펴보면 됩니다.
Naver 의 경우 이미지 캐시서버 도메인은 https://s.pstatic.net/static/www/u/2014/0328/mma_20432863.png 입니다.
Google 의 경우 https://ssl.gstatic.com/gb/images/i1_1967ca6a.png 입니다.
Naver와 Google 의 사례에서 봤을때 cdn.wsgvet.com 로 운영하는 것은 바람직하다고 생각합니다.
위 댓글의 varnish 설명을 읽어보면 아시겠지만, 캐시 동작하는게 결국엔 똑같아요.
varnish 는 프록시의 일종으로써, 사용자 => varnish(proxy) => apache/nginx 방식으로 동작하는 것인데,
varnish 도 결국엔 파일을 저장해두는 것이고, varnish 죽으면 서비스가 죽는건 마찬가지에요.
제 블로그 글의 가이드가, 더 확장하기 좋고, 더 성능이 좋고, 더 안정적입니다. (복제와 확장이 쉽습니다.)
varnish 는 구축과 장애대처, 확장 관리가 어려워요.
요즘은 트랜드가, MVC, MVVM 등등, 역할 구성에 따라서 나누는 편이며,
주로, frontend(html/js), backend(PHP), storage(S3,Object storage)로 나누는 편입니다.
잘 판단이 안될때는 이미 앞서가는 기업들의 사용을 살펴보면 됩니다.
Naver 의 경우 이미지 캐시서버 도메인은 https://s.pstatic.net/static/www/u/2014/0328/mma_20432863.png 입니다.
Google 의 경우 https://ssl.gstatic.com/gb/images/i1_1967ca6a.png 입니다.
Naver와 Google 의 사례에서 봤을때 cdn.wsgvet.com 로 운영하는 것은 바람직하다고 생각합니다.

@라엘 그렇군요 ㅎㅎ 일단 게시물 목록에 있는 썸네일은 전부 돌렸습니다.
이미지를 클릭했을 때 원본은 원본서버에서 불러오지만 ㅠㅠ
그래도 많은 트래픽을 절약할 수 있을 것 같습니다!
이미지를 클릭했을 때 원본은 원본서버에서 불러오지만 ㅠㅠ
그래도 많은 트래픽을 절약할 수 있을 것 같습니다!