Surge 소개

정적 파일을 간편하게 웹에 업로드하여 웹 CDN 기능을 제공하는 surge 라는 프로그램을 소개해 본다. 단, surge 에서 사용하는 서비스 프로바이더 디지털 오션의 경우 한국, 일본 등의 리전을 미지원하므로 CDN 의 장점인 네트워크 지연 완화 측면에서 이득을 볼 수 없다.

현재 무료/유료 가능하며, 테스트 용도로는 무료도 충분해 보인다. 향후 한국 리전도 지원된다면 운영기로써 사용도 고려해 볼 만큼 편의성 이 강점이다.

참고로 가격 정책도 1개월 30[$] 정액제이므로 잘만 사용한다면 좋은 가성비로 운영이 가능해 보인다.

Surge 장점

- 무료 버전에서도 custom domain 을 사용 가능하다.

- Web Cache 기능을 제공한다. 단, Client 에서 Cache-Control 조작은 불가하다. (ETag 변경이 유지되는 동안 무제한 캐시 저장)

- Gzip 압축을 지원한다.

Surge 단점

- 한국 리전을 미지원한다. (테스트 시 싱가폴, 미국 리전 서버에 배포된다.)

- http2 미지원

Surge 설치

NodeJS 를 바로 설치하는 방법도 있지만 여기서는 nvm 을 통해 특정 NodeJS 런타임을 다운로드 받는다.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
. ~/.bashrc
nvm install --lts
nvm ls

node --version

npm install --global surge

Surge 예제

본 예제에서 커스텀 도메인 및 유료 기능은 다루지 않는다.

Surge 예제 1

정적 웹페이지를 최초 배포해보자.

mkdir test && cd test/

echo hello > index.html

surge

project: /home/user/test/
## CDN 에 업로드 하고자 하는 프로젝트 루트 경로를 입력한다.

domain: noiseless-duck.surge.sh
## 배포하고자 하는 도메인을 입력한다.
## Aborted 오류가 발생한 경우 다른 사람이 해당 서브도메인을 사용중인 상태이다. 다시 시도 혹은 더 복잡한 단어를 입력한다.
## Success! 메세지를 확인하면 정상 배포가 된 상태이다.

curl -I https://noiseless-duck.surge.sh
## HTTP/1.1 200 OK 확인 시 정상 응답된 상태이다.

Surge 예제 2

surge 의 기능을 사용하여 정적 웹페이지를 배포해보자.

우선 아래 예제를 실습하기 위한 사전 준비를 한다.

mkdir test && cd test/

echo "index" > index.html

mkdir ignore/
echo "ignore/index" > ignore/index.html

.surgeignore 와 200.html 파일의 기능을 테스트해보자.

# .surgeignore
echo "ignore/" > .surgeignore
# 자동으로 아래 파일들은 배포되지 않고 무시된다.
## .git
## .*
## *.*~
## node_modules
## bower_components

# 200.html
## 404 에러가 발생하는 경우 200.html 이 응답된다.
echo "200" > 200.html

surge ./ --domain noiseless-duck.surge.sh
## ./ 현재 경로에 있는 파일을 noiseless-duck.surge.sh 라는 이름으로 배포한다.

curl https://noiseless-duck.surge.sh
## index.html 페이지 응답

curl https://noiseless-duck.surge.sh/notexist
## 404 에러 발생 -> 200.html 페이지 응답

curl https://noiseless-duck.surge.sh/ignore
## .surgeignore 파일로 인해 업로드 안됨 -> 404 에러 발생 -> 200.html 페이지 응답

현재 계정에서 생성된 프로젝트 삭제 및 로그아웃을 해보자.

surge list
## 배포된 프로젝트를 조회한다.

surge teardown noiseless-duck.surge.sh
## 해당 프로젝트를 삭제한다.

surge logout
## 계정 토큰을 쉘에서 제거한다.

Surge 결론

surge 의 기본 기능에 대해 알아보았다. 해당 포스트의 조회수가 많이 발생한다면 surge 시리즈로 기재 예정이다.

참고 문헌

https://surge.sh/help/

image_print

호스트웨이 시스템 팀

호스트웨이 시스템1팀