월세, 관리비 무료의 매장을 만들어보자
웹서비스 운영에 있어서 운영비는 중요하다. 건물의 관리비, 월세와 비슷한 개념이다. 당장 뭔가를 판매하지 않는 한 서비스로 수익을 내려면 시간이 필요하다. 기본적으로 꾸준히 트래픽을 모으는 작업이 필요한데, 그 트래픽이 향후에 수익이 될 수도 있겠지만 당장 비용이 된다. 그래서 초기에 운영비를 적게 가져가야 초조해지지 않는다. 이 일은 장기전이니 말이다.
이번에 사이트를 오픈하면서 거의 무료에 가깝게 오픈을 했다. 완전 무료가 아닌 이유는 DB 때문이다. DB는 월 500원이니 부담이 적다. 분야별로 고민한 과정과 선택한 서비스를 소개하고자 한다.
중고등학생 때 HTML, PHP를 익히면서 사이트를 많이 만들어왔다. 그때는 그저 싸고 잘 돌아가면 문제가 없었기에 카페24의 월 500원짜리 서비스를 쓰기도 했다. 점점 트래픽이 늘어나면서 더 비싼 등급으로 올라가긴 했지만, 나에게 '서버란 관리하기 귀찮은 것, 웹호스팅으로 충분한 것'으로 여겨졌다.
그런데 약 8년간 외주를 하면서 느낀 점은 서버가 모든 것의 시작이라는 점이다. 앱 개발을 맡든, 웹 개발을 맡든 서버 이야기는 항상 나온다. 그리고 요즘 서버와 거의 동의어로 쓰이는 말이 바로 AWS 다. 작은 기업이든 큰 기업이든 거의 다 AWS를 쓴다. 굳이 그럴 필요가 있나 싶은 사이즈의 회사도 AWS를 쓴다. 그래서 AWS는 일종의 스펙이 되었다. 'PHP 다룰 줄 알아요', 'JAVA 몇 년 했어요' 처럼 'AWS로 어느 규모의 서비스 운영했어요' 같은 식으로 말이다.
그래서 AWS를 제대로 익혀보려고 몇 년을 썼다. 내가 지금의 사이트를 만드는 데 3년이 걸렸다고 했는데, 여기에 큰 기여를 한 것이 AWS다. 강의도 듣고 좌충우돌 헤매다 보니 이젠 기본적인 셋팅과 배포 등은 할 줄 알지만, 예상밖의 상황이 생기면 스트레스가 너무 심했다. 그러는 사이에 사이트 접속은 안 되는데, 원인 파악이 안 되는 날들이 길어질수록 AWS에 대한 미련을 버리게 됐다. 무시 못 할 비용도 한몫했다.
그 후엔 Serverless라는 개념에 끌렸다. 그 골치 아픈 서버가 less라고!? 서버가 없을 수는 없겠지만, AWS에 직접 올릴 때처럼 신경 쓰지 않아도 된다는 개념 정도로 이해했다. 나 같은 서버 포비아가 있는 사람에겐 매력적인 개념이었고, 그러다 우연히 알게 된 서비스가 Vercel 이다.
Vercel은 기본적으로 Next.js로 만든 코드를 쉽게 배포하도록 만들어진 서비스이다. PHP가 공식적으로는 지원되지 않지만, 한 오픈소스 덕분에 PHP도 잘 작동한다. PHP를 사용하는 Wordpress도 공식적으로는 아니지만, 할 수 있는 방법이 있다고 한다. (직접 해보지는 않음)
본인이 사용하는 언어만 맞다면 안 쓸 이유가 없는 서비스다. 개발자는 코드에만 집중하고 배포 이후의 모든 것은 Vercel이 전부 알아서 해주기 때문에 너무나 만족스럽다. 아직은 Hobby 등급이라 무료이지만, 향후 트래픽이 오르더라도 유료로 이용할 의사가 크다. 가격도 월 $20이라 크지 않은 편이다.
서비스를 운영하다 보면 트래픽의 주범은 보통 이미지다. "트래픽 = 비용"이기 때문에 이미지를 잘 관리한다는 것은 운영비용을 잘 관리한다는 의미와 일맥상통한다. 대부분 이미지 호스팅은 쇼핑몰 운영하는 사람들을 위해 저장공간만 제공하는 경우가 많은데, 나의 경우엔 API가 필수였다.
후보를 찾던 중 무제한 트래픽, 무제한 용량임에도 1년 결제 시 월 $8 정도로 저렴한 가격이었던 imgbb가 눈에 띄었다. 사이트가 좀 부실해 보여도, 그래도 많이 들어본 이름이라서 결제하려고 했는데 계속해서 결제가 안 됐다. 그날만 문제인가 싶어서 다음날, 또 다음날 시도를 해봐도 여전히 결제 되지 않아 포기했다.
그래서 또 찾다가 알게 된 서비스가 바로 imagekit 이다. 서비스 퀄리티만 보면 끝판왕이라고 생각한다. 사실, 이 글을 쓴 이유는 이 서비스를 알리고 싶은 마음도 컸기 때문이다. UI/UX도 정말 깔끔하고, 웹이면 보통 파일 다루는 게 불편하기 마련인데 하나도 불편한 것을 못 느꼈다. 무료 사용자에겐 월 25GB의 트래픽, 5GB의 저장 공간을 제공하는데, 이 트래픽 제한이 조금 아쉽다. 다음 요금제가 월 $89인 점을 감안하면 더 아쉽다. 세세하게 등급을 나눠주면 좋으련만.
그래도 한 가지 다행인 점은 1MB의 이미지를 엑세스한다고 해서 무조건 트래픽이 1MB씩 늘어나지는 않는다는 점이다. url에 width, height를 지정하면 원본보다 이미지를 작게 불러올 수 있어서 썸네일로 쓸 때도 이미지를 따로 만들지 않고 실시간으로 줄여서 보여줄 수 있다. 이때는 썸네일 이미지만큼의 트래픽만 소모하기 때문에, 월 25GB가 아주 작게만 느껴지진 않는다. 이미지 위에 바로 텍스트를 쓸 수 있다든가, URL에 입력한 값만으로 crop을 할 수 있는 등 다양한 기능을 제공한다.
Vercel에서 DB도 지원하긴 하는데, 나는 MySQL DB를 쓰기 때문에 다른 서비스를 찾아야 했다. MySQL DB 플랫폼인 PlanetScale 이란 서비스를 접하고서, DB도 이런 식으로 운영되는 세상이구나.. 싶어서 감탄했었다. 가장 놀란 부분은 DB도 branch 개념이 있어서 dev 브런치, prod 브런치를 따로 관리하다가 합치는 것이 가능하다는 점이었다. 내가 처음 접했을 때는 무료 등급이 있었는데, 사이트를 오픈하기 전에 무료 등급이 없어져서 현재는 이 서비스를 쓰지 않는다.
DB는 따로 이용 중인 웹호스팅 서비스에서 쓰고 있는데, 그 웹호스팅 서비스를 아직 추천할 만한 수준은 아니라고 생각해서 이름은 언급하지 않았다. 그래서 DB는 카페24에서 월 500원 내고 DB만 쓰는 것을 추천한다. 트래픽, 저장 공간 등은 한참 부족하지만, DB는 무제한으로 제공하고 자동 백업도 지원되기 때문이다.
메일 발송 방식은 크게 2가지로 나뉜다고 본다. 뉴스레터 같이 대량의 메일을 한 번에 보내기에 적합한 서비스와 그때그때 필요한 메일을 해당 사용자에게 발송하는 서비스다. 전자에 적합한 서비스가 메일침프, 스티비, 메일리 등이고, 후자에는 AWS SES나 NHN Cloud가 해당된다. 이번에는 매일 아침 생일자에게 메일을 보내는 기능을 구현하고자 했으므로, 후자의 서비스가 필요했다. 그리고 평소에도 후자 케이스의 니즈가 종종 있었기 때문에 이번 기회에 적합한 서비스를 찾아봤다.
AWS SES는 프리티어로 무료 발송을 꽤 많이 제공하지만, 초기 설정이 까다로웠던 것으로 기억한다. AWS 측의 인증도 받아야 하고, 그게 며칠 걸리기도 했다. NHN Cloud의 경우 발송은 쉬웠는데 비용이 든다. 1건에 0.5원이니 저렴한 편이지만, 그래도 지금은 무료 서비스를 찾고 있었으니 이번엔 패스했다.
찾다 보니 Brevo라는 서비스가 있었다. 메일침프와 함께 많이 언급되는데, 국내 자료는 거의 찾아볼 수 없었다. 이 서비스가 좋았던 점은 위에서 언급한 2가지의 방식을 모두 지원하며, API 문서도 잘 정리되어 있어서 적용하는데 어렵지 않았다. 하루에 300건까지 무료로 발송할 수 있으니, 인심도 넉넉한 편이다.
메일링 서비스도 지원하기 때문인지 API 발송의 메일도 통계 데이터를 깔끔하게 제공한다. 이 부분까지는 기대를 안 했는데 상당히 마음에 든다.
주기적으로 실행되게 하려면 Cron 기능이 필요하다. Vercel에서도 지원하는데 하루 2회로 제한적이고, Vercel을 뭔가 편법(?)으로 PHP에 맞춰서 사용하다 보니 제대로 작동도 안 했다. (사용법을 잘 모르는 것일 뿐, 가능하긴 할 것임)
예전에 Easy Cron이란 서비스를 유료로 썼던 기억이 있어서, 이것도 무료 서비스를 찾아보니 아주 쉽게 찾았다. cron-job.org라는 서비스인데 도메인에서 느껴지듯이 완전 무료다. 그럼에도 서비스 UI도 깔끔해서 그동안 왜 안 썼나 싶을 정도. Github Action으로 돌리고 있는 것도 있었는데, 이번 기회에 이주하는 게 좋겠다는 생각이 들었다.
규모는 작지만 골고루 필요한 게 많았는데, 대부분 무료로 쓸 수 있어서 만족스럽다. 퀄리티도 좋아서 향후 유료로 전환할 일이 생기더라도 계속해서 사용하게 될 것 같다. 이제 월세, 관리비가 없는 매장이 생긴 셈이니 열심히 손님을 모아봐야겠다.