지속가능성과 IT -1-
이길원, 윤여경
안녕하세요, 여름방학 블로그 지속가능성과 IT시리즈 연재의 1탄을 맡게 된 이길원, 윤여경입니다. 한 학기동안
SDGs를 실천하기 위해 전력 소모의 중요성을 다룬 블로그 글이 자주 올라왔는데요, 오늘은
테크팀의 일원으로서 컴퓨터의 전력소모를 줄이는 방법 중 하나인 캐싱에 대해 소개하려고 합니다.
·
캐시/캐싱이란 ?
캐시(Cache)는 명령어(Instructions)나 데이터(Data)를 하위 메모리로부터 복사하여
일시적으로 저장해두는 저장 장치를 의미합니다. 캐시에 저장된 데이터는 브라우저의 이용 기록을 삭제하는
창에서 손쉽게 지울 수 있습니다. 캐싱은 이러한 과정을 일컫는 용어로,
캐싱을 사용하면 메모리 처리 속도가 빨라지기 때문에 웹 페이지 렌더링 속도도 단축됩니다. 쉽게
말하면, 자주 방문하는 웹사이트의 이미지나 기타 요소들이 캐시에 저장되어 유저가 페이지를 다음 방문할 때 데이터 로딩 속도가 빨라지게
되는 것을 하나의 예시로 들 수 있습니다.
·
캐시의
지역성
그렇다면 캐시가 ‘자주 쓰는 명령어나 데이터'는 어떤 기준으로 결정되는 걸까요? 이 판단 기준은 캐시의 지역성으로
설명할 수 있습니다. 캐시의 지역성에는 최근 참조된 데이터에 다시 접근하는 경향을 가리키는 시간 지역성(Temporal locality)과 최근 참조된 데이터의 주변 데이터에 접근하는 경향을 가리키는 공간 지역성(Spatial locality)으로 구분할 수 있습니다. 캐싱은 이러한
지역성을 바탕으로 유저가 다음에 쓸 것이라 판단되는 데이터를 캐시에 저장하는 것을 의미합니다. 참조하려는
데이터가 캐시에 존재하는 경우를 Cache Hit, 캐시가 존재하지 않는 경우에 Cache Miss가 발생했다고 합니다. 캐시에 대한 적중률은 Cache Hit의 횟수를 데이터의 전체 참조 횟수로 나눈 값으로 계산하게 되며, 이 적중률이 높을 때 더 많은 데이터 지연을 막을 수 있게 됩니다.
·
캐싱의
쓰임
캐싱의 활용은 무궁무진하며, 캐싱은 데이터의 계산이나 접근 시간을
단축하여 시스템의 효율성을 높이는데 효과적입니다. 웹 캐싱의 기본적인 구현 방법 중 하나인 HTTP 캐시는, 세 개의
API(Cache-Control, ETag, Last-Modified)를 사용하며 HTTP의
헤더(header)에 캐싱 로딩 및 저장에 대한 조건을 저장합니다.
·
캐시
서버
우리가 사용하는 네트워크 데이터는 모두 0과 1로 비트로 나타낼 수 있는 전기 신호입니다. 그렇다면 이런 전기
신호를 주고 받기 위해선 연결의 가장 아랫단에는 물리적 연결이 있어야 합니다. 이런 사실에 비추어 본다면, 물리적 연결 자체가 가까운 경우에, 전송 속도가 더 빠르지 않을까
하고 생각해볼 수 있습니다. 실제로 이런 아이디어에 기반하여 캐시 서버를 운영하기도 합니다. 즉, 실제 어딘가에서 구동되는 서버와 별개로, 사용자들과 물리적으로 가까운 위치에 캐싱 서버를 두는 것입니다. 서버
역시 하나의 컴퓨터이기 때문에, 캐싱을 담당할 프로그램을 사용해야합니다. 이 때, Redis 와 같은 프로그램이 이런 역할을 수행하는 데
큰 도움을 줄 수 있습니다. Redis는 서버 메모리에 db를
직접 캐싱해두는 방식을 사용하기 때문에 cache hit이 발생한다면,
database가 직접 디스크에 접근하지 않아도 된다는 장점이 존재합니다.
·
캐시의
장점
이러한 캐시가 우리에게 주는 장점을 정리해볼 수 있습니다. 우선, 사용자의 입장에서, 사용자 경험이 향상될 수 있습니다. 서버 또는 DB에서 불러오는 것이 아니라, 캐시된 값을 바로 사용하기 때문에 리소스 제공 속도가 매우 빨라질 수 있습니다. 또한 일반적인 경우, 실제 서버 또는 DB에 동일한 요청을 다시 보내지 않기에, 불필요한 통신에 드는 전력을
아낄 수 있습니다.
지금까지 캐시와 캐싱에 대해 간단하게 알아봤습니다. 이처럼, 캐시를 활용하는 것이 항상 성능 향상을 보장해주는 것은 아니지만 캐시를 적절히 활용하면 수행해야하는 연산이
줄어들어 전력 소모를 줄일 수 있다는 장점을 가지고 있습니다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Caching
https://aws.amazon.com/ko/caching/web-caching/
Comments
Post a Comment