서버없는 웹사이트 만들어 주는 itty bitty
현재 웹 서비스의 트렌드 중 하나는 아마존의 람다(Lambda)와 같은 서버리스 컴퓨팅 입니다. 서버리스 컴퓨팅은 특정 리퀘스트에 대한 요청을 기다리는 전용 서버가 없다는 것입니다. 그대신, 리퀘스트를 듣고 필요에 따라 하나의 서버를 사용해서 처리를 하는 환경을 구축하는 것입니다.
하지만 오늘 소개해드릴 서비스는 아마존 람다에서 좀더 진일보한 서버리스 서비스 입니다. itty bitty라 불리는 이 서비스는 콘텐츠가 URL에 인코딩 된 웹사이트를 만들 수 있습니다.
itty bitty는 HTML 소스 또는 데이터를 압축해서 URL로 만들어 줍니다. 이 URL에 접속하면 클라이언트 사이드에서 해당 데이터를 풀어서 사용할 수 있습니다.
URL에 모든 데이터를 압축해서 넣어야 하기 때문에 itty bitty는 Lempel-Ziv-Markov 체인 알고리즘을 사용하여 내용을 압축합니다. 이렇게 압축하면 html의 크기가 상당히 줄어들어 한 페이지 정도의 코드를 URL에 저장할 수 있습니다.
이렇게 압축된 데이터는 base64로 인코팅되어 URL에 포함될 수 있는 문자로 변환됩니다.
itty bitty의 URL 형식은 '#' 기호 뒤 fragment라는 URL 센셕에 인코딩된 문자열을 추가합니다.
http://itty.bitty.site/#Name/SITE_DATA
이 fragment에는 고유한 특성이 있는데, 클라이언트의 리퀘스트를 서버에 전송하지 않고 웹브라우저가 페이지를 로드할때 페이지를 스크롤하는데 사용합니다.
이 서비스로 생성된 링크는 기본적으로 2000 bytes(2KB)를 지원하지만 일부서비스에서는 더 큰 사이즈의 링크를 사용할 수 있습니다.(각 서비스별로 허용되는 사이즈는 아래 표를 참고하세요.)
▲ 각 서비스별 지원하는 URL 사이즈
이렇게 생성된 링크를 클릭하면 클라이언트에서 데이터가 추출되고 압축이 풀린 후 웹 브라우저에 해당 내용이 표시됩니다.
아래는 이 서비스를 이용해서 만든 서버리스 웹사이트 입니다. 단순히 텍스르만 존재하는 웹사이트만 만들 수 있는 것이 아니라 계산기 같은 서비스도 만들 수 있습니다.
▲ itty bitty로 만든 사이트
▲ itty bitty로 만든계산기
물론 지금은 서버 없이 만들 수 있는 웹사이트의 용량이 2KB 밖에 되지 않지만 기술은 계속해서 발전시킬 수 있기 때문에 가까운 미래에 꽤 훌륭한 서버리스 웹사이트를 볼 수도 있습니다.
다만 itty bitty URL의 디코딩 프레임워크를 제공할 서버는 필요한데, 이는 기본 데이터센터보다 작은 규모로 운영이 가능하기 때문에 개인도 호스팅을 할 수 있을 것입니다. 이런 서비스가 대세가 된다면 더이상 공격할 서버가 존재하기 않기 때문에 DDOS 공격도 큰 의미가 없어질 것입니다.
물론 이 서비스가 현재 완벽한 것은 아닙니다. URL방식이라 용량의 한계도 있고, 큰 용량의 이미지가 포함된 웹 사이트를 만들기 위해서는 이미지를 저장할 서버가 필요합니다.
그렇지만 이 서비스는 현재 github에 공개되어 있기 때문에 누구나 프로그램을 포크해서 이 문제점을 해결할 수 있습니다. 또한 누군가 암호화 기능을 추가해 특정인들에게만 공유할 수 있는 URL를 만들 수 있는 기능 등이 추가되면 더욱 좋을 것 같습니다.