21세기에 웹 서비스 개발하고 배포하는 방법
일로도 취미로도 여러 서비스를 개발하다보니 특히 백엔드의 경우 비슷한 기능이 많다보니 지긋지긋하게 느껴질 정도다. DB 설계, Authentication & Authorization, CRUD API 등이 대표적이다. 개발이 끝나고 배포할 때는 docker, k8s, build script 등을 셋업 해야 하는게 재미도 없고 개발할 때 없던 문제도 심심찮게 터지기 때문에 매우 짜증이 나는 부분이다. 당연히 뭘 만들때는 대박이 났으면 하는 마음으로 하기 때문에, (내 경우) 보통 GCP 를 주로 사용했다. 얼마 유저도 없는데 짤봇은 매월 400 달러씩 내 계좌를 탈탈 털고 있으니 접자니 아쉽고, 계속하자니 돈만 나가는 계륵 같은 존재가 되고 말았다. 이번에 페이스북 뉴스피드에 약간 긴 글을 올리다가 아카이빙이 안되는 것에 짜증나서 블로그보단 짧지만 트위터보다 긴 숏폼 블로그를 찾다가 없어서 만들어 봐야겠다 생각했는데, 저 위의 삽질들을 또다시 반복하고 싶지 않았다. 휴일에만 할 개발이니, 가볍게 시작해서 배포까지 할 수 있고, 반복되는 일을 피하며, 저렴한 방식으로 호스팅 하는 것을 목표로 리서치를 했다. 1. Keystone - https://keystonejs.com/ - API 는 도저히 직접 만들 생각이 들지 않아서 Headless CMS 를 쓰기로 했다. 특히 Admin 을 대신 만들어주는 부분이 매력적이라고 생각했다. Hygraph, Contentful, Sanity, Strapi 등 클라우드에서 직접 호스팅하는 것까지 GraphQL 을 지원하는 온갓 것들을 다 써보았으나 Keystone 만한 것이 없었다. - 여전히 코딩이 필요하고, 문서화가 좀 아쉽지만, 그래도 나머지 CMS 들에 비해 왠만한 것들을 전부 구현할 수 있다는 장점이 있다. 게다가 뭘 좀 하려면 300불씩 내야하는 다른 옵션에 비해 호스팅만 하면 되니 훨씬 메리트가 있었다. 2. Next.js - https://nextjs.org/ - 프론트는 Svelte 를 써볼까 하다가 영 귀찮아질 것 같아 그냥 늘 마시던 Next로 결정. Good old next.js! 3. Planetscale - https://planetscale.com/ - Planetscale 은 Serverless MySQL 플랫폼으로 역시 프리티어가 빵빵해서 채용했다. - 단점은 아시아 지역 리전이 Singapore 밖에 없어서, 서버 인프라도 Singapore 리전에 놓아야 한다. - 같은 VPC 가 아니기 때문에 라운드 트립을 고려해야 한다. 4. Redislab - https://redis.com/ - 사람들이 은근히 잘 모르는데 (나만 몰랐나?) redis 도 30MB 짜리 프리티어가 있다. 짤봇은 일단 모든 짤 데이터를 캐시에 때려 박는데, 적당히 아껴쓰면 큰 문제없이 공짜로 쓸 수 있다. - AWS, GCP 등 Cloud Provider 도 지정할 수 있고, 리전은 Provider 를 먼저 정하고 선택하는 방식이다. 5. Render - https://render.com/ - 렌더는 Vercel 이랑 비슷한 느낌인데, 프리티어는 인스턴스 당 512MB 메모리, 0.1 CPU 를 제공해준다. 이걸로 써봤는데 매우 느리고 512MB / 0.5 CPU 인 월 7달러 옵션과, 2GB / 1CPU 인 월 25달러 옵션이 적당한듯 싶다. - Bytes 는 7달러 옵션을 사용하다가 올릴 생각이다. (살짝 느린감이 있다.) - 배포도 편한데 로컬에서 build 스크립트만 잘 하면, 서버는 무난하게 올라간다. - 내부적으로 k8s 을 사용하는 듯 하여, 같은 팀 내에서는 internal address 로 서비스에 접근할 수 있다. k8s 에서는 당연하게 쓰는 기능이지만, 이런 호스팅 서비스에서는 기대하지 않았던 부분이다. 6. Cloudflare R2 - https://www.cloudflare.com/ko-kr/products/r2/ - S3 + Cloudfront 를 합쳐논 것이라 생각하면 쉬울듯. - 스토리지 비용이 없고 트래픽만 받는다. 특히 Read 가 많은 이미지나 기타 파일의 경우 경쟁사 대비 매우 저렴하다. 짤봇도 싹 다 옮겨버렸다. - 다만, 업데이트가 많은 경우는 S3 를 쓰는게 더 나을수도 있다고 한다. 이렇게 해서 DB, Redis 전부 무료고 렌더 Starter 인스턴스 2개 해서 14달러 + R2 트래픽 비용 정도가 나올 것 같다. 뭐 끽해야 20달러 정도가 아닐까 싶다. 회사 인프라 비용도 이런식으로 줄여볼까 생각하고 있다. 안그래도 Edge 로 배포하고 싶은 니즈가 있는데, 요즘 CF worker 에 있는 Cron 도 상당히 괜찮다고 하니, 점차 넘어갈 생각이다. 개발자가 귀해지고, Cloud 가격이 올라가는 추세이다 보니 앞으로 이런 서비스가 좀 더 세상의 주목을 받게 되지 않을까 싶다. Hobbyst 입장에서는 더더욱 메리트가 있는 것 같다. 개발할때도 최대한 시간을 줄이기 위해 ChatGPT 를 적극 활용했는데, API 바인딩 같이 귀찮은 일들을 할때 최고의 파트너가 아닐까 싶다. 말 잘듣는 쥬니어 한명 데리고 일하는 느낌. 미래는 단지 널리 퍼져있지 않을 뿐이라더니 정말이구나!
KeystoneJS: The superpowered Node.js Headless CMS for developers - Keystone 6
KeystoneJS: The superpowered Node.js Headless CMS for developers - Keystone 6
- 0
- 1
- 1Quote