2024. 7. 4.leey00nsu

내가 더 이상 Vercel 호스팅을 사용하지 않는 이유


내가 더 이상 Vercel 호스팅을 사용하지 않는 이유

지금까지는 토이프로젝트들을 오라클 클라우드에 배포하고 있었습니다.

current-structure

Nginx를 이용하여 도커 위에 실행되는 프로젝트들을 리버시 프록시를 통해 SSL 인증서를 적용시키고, 접속을 분배해주고 있었습니다.

하지만 지금의 형태에서 새로운 프로젝트를 추가하기 위해서는 프로젝트를 도커라이징 하는 Github Actions를 추가하고, 해당 프로젝트를 Nginx 설정에 추가하고 SSL을 적용하는 등 번거로운 절차를 걸쳐야 합니다.

Vercel

따라서 정적 페이지나, Next.js의 경우에는 Vercel을 통해 배포를 하기도 하였습니다.

Vercel의 호스팅 서비스를 이용하면 Github 레포지토리를 자동으로 연결하여 CI/CD를 편하게 설정하고 쉽게 배포할 수 있습니다.

하지만 Vercel의 기본적으로 무료 플랜을 제공하지만, 고급 기능을 사용하거나 높은 트래픽을 처리해야 하는 경우 비용을 고려해야할 수도 있었습니다.

또한, Nest.js 와 다른 컨테이너 기반의 프로젝트들을 편하게 호스팅하기 위하여 Vercel을 떠나 기존의 오라클 클라우드를 사용하는 셀프 호스팅 방식을 고려하게 되었습니다.

Coolify

Self-hosting with superpowers. An open-source & self-hostable Heroku / Netlify / Vercel alternative.

Coolify는 개발자가 애플리케이션을 쉽게 배포하고 관리할 수 있도록 돕는 오픈소스 셀프 호스팅 플랫폼으로 인프라를 간편하게 관리하고, 다양한 애플리케이션을 배포할 수 있는 기능을 제공하며, Vercel, Heroku, Netlify와 같은 관리형 서비스의 대안으로 사용할 수 있습니다.

Why Coolify?

그렇다면 왜 다양한 셀프 호스팅 플랫폼 중 Coolify를 선택했을까요?

  1. 셀프 호스팅 플랫폼
  • Coolify는 사용자가 자신의 서버에 직접 설치하여 운영할 수 있는 셀프 호스팅 플랫폼입니다. 이를 통해 비용을 절감하고 데이터와 애플리케이션을 완전히 제어할 수 있습니다.
  1. 다양한 애플리케이션 지원
  • Node.js, Python, Ruby, PHP 등 다양한 프로그래밍 언어로 작성된 애플리케이션을 지원합니다. Docker 이미지를 통해 어떤 언어로 작성된 애플리케이션이든 쉽게 배포할 수 있습니다.
  1. 자동화된 CI/CD 파이프라인
  • Git 저장소와 통합되어 코드 변경 사항이 발생할 때마다 자동으로 빌드하고 배포할 수 있는 CI/CD 파이프라인을 제공합니다.
  1. 간편한 설정과 관리
  • 직관적인 웹 인터페이스를 통해 애플리케이션과 서버를 쉽게 설정하고 관리할 수 있습니다. 복잡한 설정 없이 간편하게 애플리케이션을 배포할 수 있습니다.
  1. SSL/TLS 지원
  • Let's Encrypt와 통합되어 SSL/TLS 인증서를 자동으로 발급하고 갱신합니다. 이를 통해 보안 설정을 간편하게 유지할 수 있습니다.
  1. 리버스 프록시 및 로드 밸런싱
  • Traefik과 같은 리버스 프록시와 로드 밸런서를 사용하여 트래픽을 효율적으로 관리하고, 고가용성을 유지할 수 있습니다.
  1. 롤링 업데이트 지원
  • 롤링 업데이트 기능을 통해 애플리케이션을 가동 중단 없이 점진적으로 업데이트할 수 있습니다. 이를 통해 서비스의 연속성을 유지하고, 안정성을 확보할 수 있습니다.
  1. 모니터링 및 로깅
  • 애플리케이션의 성능과 상태를 모니터링하고, 로그를 수집하여 문제를 신속하게 해결할 수 있습니다.

Coolify 시작하기

Coolify를 시작하기 위해서는 간단한 bash 명령어를 실행시키면 됩니다. 자세한 설명은 공식문서에 있습니다.

coolify 설치
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

설치가 모두 끝나면, http://localhost:8000 를 통해 Coolify 대시보드 에 접근할 수 있습니다.

dashboard

도메인 설정

Coolify 프로젝트의 도메인을 설정하기 위해서는, 가비아와 같은 도메인 제공 서비스를 통해 도메인을 발급받아야 합니다.

이때, 와일드 카드 도메인을 설정하게 된다면, 프로젝트가 계속해서 추가되더라도 project1.domain, proejct2.domain, ... 과 같이 서브 도메인을 동적으로 설정할 수 있습니다.

배포

deploy

UI를 통해 프로젝트를 추가하여 새롭게 배포를 시작할 수 있습니다.

기본적으로 Coolify는 Nixpacks라는 빌드 팩을 사용하여 배포하려는 애플리케이션의 종류를 감지하고 그에 따라 빌드합니다.

또한, 도커 이미지도커 컴포즈 파일을 통해서 프로젝트를 배포할 수도 있으며, 기존에 Coolify에 미리 설정된 어플리케이션들을 사용할 수도 있습니다.

그리고 한번 배포된 프로젝트는 새로운 커밋이 발생할 경우 자동적으로 재배포가 이루어집니다.

무중단 배포

rolling-updates

또한 Coolify는 롤링 업데이트 기능을 제공하여, 애플리케이션 배포 시 무중단 서비스를 가능하게 합니다.

  1. 컨테이너 기반 배포
  • Coolify는 주로 컨테이너화된 애플리케이션을 배포합니다. Docker와 같은 컨테이너 기술을 사용하여 애플리케이션을 격리된 환경에서 실행합니다.
  1. 점진적 인스턴스 업데이트
  • 애플리케이션 인스턴스를 한 번에 하나씩 업데이트합니다. 예를 들어, 10개의 인스턴스가 실행 중이라면, 먼저 1개를 업데이트한 후, 업데이트가 성공하면 다음 인스턴스를 업데이트하는 방식입니다.
  1. 로드 밸런싱
  • 업데이트 중인 인스턴스를 제외한 나머지 인스턴스가 계속해서 트래픽을 처리합니다. 이를 통해 서비스의 연속성을 유지할 수 있습니다. Coolify는 Traefik과 같은 로드 밸런서를 사용하여 트래픽을 관리합니다.
  1. 헬스 체크
  • 각 인스턴스가 업데이트된 후, Coolify는 해당 인스턴스의 상태를 확인합니다. 헬스 체크를 통과한 인스턴스만 트래픽을 처리하도록 허용합니다.
  1. 자동 롤백
  • 만약 업데이트된 인스턴스에서 문제가 발견되면, Coolify는 해당 인스턴스를 이전 버전으로 롤백합니다. 이를 통해 안정성을 확보할 수 있습니다.

결론

Coolify를 이용하기 위해서는 인스턴스의 사양이 어느정도 보장되어야 한다는 제한 사항을 감수한다면 현재까지는 Vercel에서 Coolify로 옮긴 것에 대해 만족하고 있습니다.

Coolify를 찾아보던 중 한 유튜버가 Coolify를 아기들을 위한 쿠버네티스 라고 부른 것을 봤습니다.

쿠버네티스는 어렵다는 이미지가 있어서 다가가기 힘들었는데 Coolify를 통해 컨테이너화된 애플리케이션을 배포, 확장, 관리하기 위한 도구를 쉽게 체험해볼 수 있는 것 같습니다.

2025. leey00nsu All Rights Reserved.

GitHub