토이프로젝트에 시용하기 좋은 무료 웹호스팅 및 서비스
들어가며
간단하게 도메인 1개, API 서버, Database, Github action CI/CD 구성, SSL, DNS, 통계만 하면 되는 작은 토이 프로젝트를 만들일이 생겼다.
일단 웹페이지는 추후에 SEO도 붙일까 해서 nextjs로 만들었고, API는 adonisjs, DB는 mariadb를 마지막으로 Github action으로 Docker로 배포까지 완성!!
hosting.kr에서 도메인 구입 후 SSL, DNS, Cache 이용을 위해 Cloudflare를 붙였다.
잘 돌아가는 구만!
(며칠 후)
... 음?? 왜 접속이 안되지?
DNS 구성은 잘 되어 있는데, Docker와 NAS 접속이 안된다.
고정 IP가 아니다 보니 ddns를 이용 하고 있었는데, IP가 바뀌었나 해서 공유기 접속을 해보니 공유기 접속도 안된다.
... 혹시..?? 랜선이 뽑혔나? 💦
나스가 설치 된 곳에 가보니 전원 플러그가 뽑혀 있었다. 💢
플러그는 다시 잘 꼽아놨지만, 안정적인 외부 서버를 찾아야 했다.
인프라에 잘 알지는 못하지만, 그나마 많이 사용해본 aws route53, s3, cloudfront, ecs, postgesql로 구축해볼까 했지만... 수익이 나는 프로젝트도 아닌데, 가성비 대비 너무 오버스펙이다.
시간을 돈으로 사는 세상이지만,
돈 없는 개발자다 보니 시간은 포기해도 오버스펙을 포기할 순 없었다.❗
내가 필요한 서비스를 무료로 이용하기 위해 며칠에 거쳐 여러서비스들을 검색 및 테스트하게 되었고,
결국. 조금 느리지만 안정적인 서비스를 모두 무료로 구성 했다.
DNS
Cloud flare
작은 규모의 웹사이트에서 필요한 기능은 서브 도메인별 cname, ssl, cdn 정도만 하면 되고,
조금 더 욕심 내본다면, http로 접속 시 https로 바꿔주는 page rule 만 있으면 충분하다.
무료 플랜에서는 계정당 3개의 page rule과 10만 건 이하의 요청만 허용하니 Resource bundling을 빡세개 하면 충분히 쓸만하다.
가격 정책: https://www.cloudflare.com/ko-kr/plans/
Web
Netlify
간단하게 github 연결만 하면 쉽게 배포된다.
다른 서비스와는 다르게 Project build time으로 과금을 하는데, 무료 플랜에서는 Build 300분/월 이 제공되어진다.
1개의 프로젝트를 한 달 동안 사용해보니 70분 정도 사용했었다. (몇 개 더 돌려도 될 듯.. )
가격 정책: https://www.netlify.com/pricing/
API
Heroku
Netlify와 마찬가지로 git을 통해 쉽게 배포할 수 있고, Node.js, Ruby, Java, PHP, Python, Go, Scala, Clojure를 지원한다.
Dyno라는 가상 컨테이너 실행 시간으로 과금하게 되는데, 무료 플랜에서는 월 550시간과 카드 정보 입력 시 450시간을 추가로 주어 총 1000시간을 사용할 수 있다.
한 달은 최대 744(24*31) 시간이니 한 개의 Dyno를 돌리기에는 충분하다.
제약사항으로는 1시간 동안 아무런 접속이 없으면 수면 모드로 진입하게 되고, 다음 초기 접속이 느려진다.
가격 정책: https://www.heroku.com/pricing
Database
OCI(Oracle Cloud Infrastructure)
Heroku에도 Database를 무료로 사용할 수는 있으나, Backup이나 별도의 정적 Resource 등을 사용할까 싶어 OCI에 Docker로 Nginx, Mariadb를 띄워 사용했다.
무료 플랜에서는 계정당 2개 45GB 용량의 가상 머신을 제공해주고, Seoul Region도 가능해서 국내 서비스를 하기에 좋다.
한번 설정한 Region을 변경할 수 없다.
참고로 GCP와 다르게 리눅스 방화벽 설정이 빡세개 되어 있어서, Docker로 서비스한다면 문제없지만, 가상 서버 내부에서 nginx나 apache 서버를 이용한다면 리눅스 방화벽 Port를 일일이 허용해줘야 하는 번거로움이 있다.
프리티어: https://www.oracle.com/kr/cloud/free/
Resource
Cloudnary
이미지 첨부 시 가장 고민되는 부분이 Upload Api와 리소스 관리, 화면에 따른 Resizing 기능 구현인데,
Cloudnary 만 사용하면 고민 해결!!
무료 플랜에서는 계정당 25GB의 용량과 트래픽이 제공되는데, 작은 규모의 서비스에서도 25GB는 조금 간당간당하다. 아직까지는 문제없음.
가격 정책: https://cloudinary.com/pricing
마무리
위에 나열된 서비스 이외에 Vercel, GCP, img bb 등이 있지만, 너무 느리거나 과금 정책이 맞지 않아 사용하지 않았다.
서비스별 분리, CI/CD 구성만 아니라면, Freehosting 서비스도 있는데, 반드시 1개의 도메인이 있어야 하고, 무료로 워드프레스 설치도 지원해 준다. 무료 플랜에서는 계정당 10GB 용량이 주어지는데, 작업 후에 빌드 결과물만 FTP로 올리면 되니, 정말 정말 간단한 서비스는 이걸로 해도 괜찮지 않을까 싶다.