오늘은 스팀잇 관련 프로젝트 (Steempages, Steem2KRW)들을 만들면서 알게된 노하우를 공유해드리려 합니다.
Steempages나 Steem2KRW의 경우 서버가 필요한 서비스들이지만 서버가 필요 없는 구조로 만들었습니다.
(정확히는 개인 소유의 서버가 필요없는, 즉 서버 사용료를 내지 않는 구조로 만들었습니다.)
두 프로젝트 모두 실시간으로 서버가 필요하지 않고, 특정 주기마다 아주 짧은 시간 동안만 스크립트가 실행되면 된다는 특징을 가졌습니다. 그리고 그 점으로 인해서 서버를 사용하지 않고 서비스를 구동시킬 방법을 찾을 수 있었습니다.
기본적으로 두 프로젝트 모두 Github Pages를 웹사이트의 호스팅 서비스로 사용합니다.
Github Pages의 경우 다음과 같은 특징을 가지고 있습니다.
저는 위 특징 중에서 Github의 Repository 구조를 그대로 사용한다는 점을 활용했습니다.
외부에서 Repository의 파일을 업데이트해주면 마치 서버를 사용하는 것과 같은 효과를 낼 수 있다고 생각했고,
프로젝트마다 약간은 다른 방식을 사용했습니다.
Steempages의 경우에는 Travis CI를 Repository를 업데이트해주는 용도로 사용했습니다.
Travis CI의 특징은 아래와 같습니다.
Travis CI는 원래 프로그램을 빌드할 때 사용하는 서비스입니다. 그리고 그 과정에서 사용자가 작성한 빌드 스크립트를 실행하게 해줍니다.
빌드 스크립트의 경우 저는 Node.js를 사용했지만, Python이나 Ruby, PHP 등 어떤 언어든 상관없이 사용할 수 있을거라 생각됩니다.
저는 이때 빌드 스크립트 대신 Github Pages를 업데이트하는 스크립트를 실행하게 만들었습니다.
Steempages의 코드는 Github에 공개되어 있습니다.
오늘 만든 Steem2KRW의 경우 Travis CI를 사용하려고 했지만, 거래소 정보를 몇 분 주기로 받아와야 하는 Steem2KRW의 특성 때문에 Travis CI를 사용할 수 없었습니다. (Travis CI는 스크립트를 하루에 한 번 실행 가능)
그래서 그냥 서버를 사용하기로 하고, Heroku, PythonAnywhere 등을 후보로 생각해봤는데, 이들 모두 무료 한도 내에서는 어쩌면 스크립트가 실행되지 않거나, 과금될 것으로 예상이 되어서 다른 방법을 또 찾아봤습니다.
그때 Google Apps Script가 생각났습니다.
Steem2KRW를 만들기에는 충분한 조건들이기 때문에 Google Apps Script를 사용했고, 실제로 잘 동작하는 것 같습니다.
Travis CI를 사용하는 것과 비교해서 한가지 아쉬운 점은 작성 언어가 JavaScript와 닮았지만, 진짜 JavaScript는 아니라서 Node.js의 잘 만들어진 라이브러리들을 제대로 활용할 수 없습니다.
하지만 서버 상에서 실행할 수 있는 대부분의 기능들을 API로 제공하기 때문에 왠만한 서비스는 다 만들 수 있을거라 생각됩니다.
Steem2KRW에서는 특히 URL Fetch Service라는 API를 많이 활용했습니다.
Steem2KRW의 코드도 모두 Github에 공개되어 있습니다.
다른 개발자 분들에게도 이 내용이 도움이 되었으면 좋겠네요.
읽어주셔서 감사합니다.