블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'이미지 압축'에 해당되는 글 1

  1. 2015.11.12 대용량 서비스의 트래픽을 줄이는 이미지 최적화 기술 Web-P
 

대용량 서비스의 트래픽을 줄이는 이미지 최적화 기술 Web-P


조대협 (http://bcho.tistory.com)





대용량 트래픽 서비스를 하다보면, 항상 고민하게 되는 것이 인프라 운영 비용에 대한 문제이다.

특히 미디어 서비스의 경우, 네트워크 트래픽을 유발하는 이미지나 동영상에 대한 CDN과 네트워크 비용이 문제가 되고, 사용자 입장에서도 모바일 3G/LTE 망을 통해서 이미지나 동영상을 다운로드 받는 경우, 데이타 사용량에 실제로 연관이 되기 때문에 점점 더 멀티미디어 파일 포맷에 대한 용량 최적화가 문제로 대두 되고 있다.


그중에서, 이미지 압축 방식으로 GIF,JPEG/PNG을 대체할 이미지 포맷으로 BNG,구글 Web-P, Microsoft JPEG-X 등이 소개되고 있는데, 이 중에서 Web-P에 대해서 소개하고자 한다.


기본적으로 JPEG는 손실 압축 기술로, 이미지를 압축했을때, 손실이 발생한다. 특히 텍스트나 정교한 내용이 있을때, 그 내용이 뭉게지는 현상이 있을 수 있지만, 큰 사진이나 일반적인 이미지를 표현하는데 좋고 색 단계를 여러가지 표현할 수 있기 때문에 사진이나 일반 이미지 저장 포맷으로 많이 사용된다.


GIF의 경우 무손실 압축 알고리즘이기 때문에 텍스트가 들어간 이미지등에는 유리하지만, 256 색까지만 표현이 되지 않기 때문에 사진등에는 유리하지 않지만, 움직이는 영상(움짤/Animated GIF)등으로 많이 주목받고 있다. (그런데 이 움짤 용량이 무지 크다.)


JPEG,BPG,Web-P를 비교해보면, 

압축률을 BPG > Web-P >> JPEG 순으로,  BNG 가 가장 압축률이 좋고, 또한 압축된 이미지의 품질또한 가장 높다.


잠재적인 위험이 있는 BPG


그렇지만 문제는 BPG는 내부적으로 HEVC라는 기술을 사용하는데, 이 기술은 MPEG(동영상 압축) 기술의 일부로, 특허가 복잡하게 얽혀 있는 가능성이 있는 것으로 알려져있다. (실제로 BPG 사이트에 들어가도 그렇게 공지하고 있다.) MPEG 기술 안에는 너무 많은 특허가 들어가 있어서 당사자도 특허 참여 여부 또는 제품에 그 특허가 들어갔을때 침해를 당했는지도 찾기 어려워서 MPEG-LA라는 특허관리 업체에서 MPEG 특허를 관리하고, 문제가 생기면 소송을 통해서 특허 권리금을 받아서 MPEG-LA 참여 업체에 특허 권리료를 나눠 준다. 특허 권리에 대해서 BPG 를 개발한 사람이 낸 의견 중의 하나는 HEVC 기술을 하드웨어 가속 기능에 탑재해서 하드웨어 업체 또는 드라이버 업체가 특허를 물면된다는 논리는 내세우고 있는데, 라즈베리파이 같은 저사양 하드웨어등에서 이런일이 가능할까 의문이다. 개인적인 생각으로는 BPG는 특허에 대한 위험성 때문에 널리 확산되기가 어렵지 않을까 싶다.


구글의 Web-P


Web-P는 구글에서 만든 압축 기술로, JPEG에 비해 높은 압축률과 투명 이미지와 GIF 처럼 움짤을 지원한다.

대략 움짤 gif를 web-p로 줄이게 되면 대략 1/4 정도로 사이즈가 줄어드는 효과가 있다




<그림. WebP와 JPEG 화질 비교>

출처 : https://developers.google.com/speed/webp/gallery


아직 브라우져 커버리지는 높지는 않지만, 크롬이나 Opera 등에서 일부 지원하고 있고, Android 플랫폼에서도 지원하고 있다. 




출처 : http://www.slideshare.net/guypod/high-performance-images-beautiful-shouldnt-mean-slow-velocity-eu-2015



또한 재미있는 것중의 하나는 구글에서 제공하는 웹 최적화 플러그인인 페이지 스피드 https://developers.google.com/speed/pagespeed/module/ 플러그인에서, 브라우져의 web-p 지원 여부에 따라서 기존의 JPEG를 web-P로 자동 변환하여 내려주는 기능을 제공하여, 별도의 인프라에 큰 변화를 주지 않고도 web-p를 지원하는데 큰 문제가 없다. 지원이 안되는 브라우져의 경우에는 javascript를 이용하여, web-p를 지원하게 할 수 도 있다.


전체 이미지를 web-p로 바꾸는 것은 무리가 있겠지만, 모바일을 기준으로 볼때 안드로이드 점유율이 상당하기 때문에, 안드로이드 디바이스에만이라도 선별 적용하게 하는것만으로도 용량을 줄이는 큰 효과가 있지 않을까 한다.


참고 : WebP 관련 자료 - https://developers.google.com/speed/webp/

본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요