카테고리 없음

[모리딥]Vercel

Ahyeon, Jung 2024. 3. 3. 14:26

기업 규모에 따라 자체적인 IT 인프라를 사용하거나, 아마존 웹 서비스(Amazon Web Service), 구글 클라우드 플랫폼(Google Cloud Platform), 마이크로소프트 에저(Microsoft Azure) 등 클라우드 서비스를 활용하기도 한다. 같은 서비스를 개발하더라도 내부 설계에 따라 배포하는 방법은 다양하다.

 그리고 일반적으로 개인 및 소규모 프로젝트는 별도의 서버없이 손쉽게 배포할 수 있는 Netflify, Vercel, DigitalOcean 등 SaaS 서비스를 사용한다. 깃허브와 연동만 해두면 알아서 배포를 해주기 때문에 서버가 종료된 프로젝트의 경우 vercel을 이용했었는데 인프라의 어려움을 옆에서 보다보니 vercel이 무엇인가 궁금해졌다. 문제는 내가 인프라는 한번도 관심을 갖지 않아서 용어를 모른다는 점이었다.


On-premises

기업에서 자체적인 서버 렉을 설치해 제어하는 것

높은 보안과 성능에 대한 선호가 높아 최근에는 클라우드에서 실행하는 서비스형 인프라를 활용

클라우드 컴퓨팅의 종류

IaaS(Infrastructure as a service)

서버와 저장소 등 인프라를 제공

가상머신 위에서 애플리케이션각 컴포넌트가 구동되며 특정 클라우드에 종속되지 않아 이식성이 좋음

AWS의 EC2, S3, NCP 등

가상 머신, 스토리지, 네트워킹 등과 같은 기본적인 컴퓨팅 리소스에 대한 에섹스를 제공

IaaS를 통해 자체 애플리케이션, 운영체제, 데이터베이스 등을 관리

 

PaaS(Platform as a service)

모니터링, CI/CD 제공되며 IaaS보다 유연하지 않고 플랫폼에 종속되게 되어있음

Heroku, AWS Lamda

개발자에게 애플리케이션을 개발, 테스트, 배포하기 위한 플랫폼을 제공

IaaS의 경우 Node.js, MongoDB 등을 VM에 설치하는 반면 PaaS는 플랫폼에서 제공하는 해당 서비스를 활용

VM은 각 설치한 프로그램을 따로 관리해야하므로 인적자원 등 운영비가 더 큼

 

SaaS(Software as a service)

웹 기반 소프트웨어를 구독하여 사용하는 방식

구글 드라이브, N 드라이브, 구글 Docs 등

사용자가 클라우드 기반으로 소프트웨어에 접근하고 사용(웹 브라우저를 통해 접근)

사용자가 앱을 설치하지 않고 서비스 제공 업체가 소프트웨어 관리를 담당

사용자에게 제공되는 소프트웨어를 가상화하여 제공하는 것

사용자가 네트워크만 연결되면 바로 접근할 수 있도록 응용 프로그램을 클라우드 애플리케이션 형태로 제공하며, SaaS 소프트웨어는 웹페이지에 접속해 회원가입만 하면 바로 사용가능


 

Vercel 

Vercel is a cloud platform(computing provider) for static frontends and serverless functions.

Verel's Frontend Cloud gives developers the frameworks, workflows, and infrastructure to build a faster, more personalized Web.

 

PaaS

  • 다양한 프레임워크와 언어 지원
  • vercel이 서버 인프라 관리
  • 자동 배포, 서버 관리, CDN, 빌드 최적화 등의 기능을 제공

SaaS

  • 구독 및 웹 기반
  • 플랫폼 업데이트 및 기능 추가를 자동으로 수행

배포 외 추가기능

  • 타깃 브랜치에 commit 및 pr 발생시 프리뷰 배포 및 성공 실패 여부 알림
  • 별도 구매한 도메인 연결
  • Serverless Function 서버 없이 함수를 클라우드에 구축해 실행 가능 /pages/api의 접근 로그나 오류 확인 가능
  • 템플릿 제공


CI/CD(Continuous Integration/ Continuous Delivery·Deployment)

  • 코드 변경사항을 주기적으로 빈번하게 머지해야 한다
  • 통합을 위한 단계(빌드, 테스트, 머지)의 자동화

개발 생산성 향상, 문제점을 빠르게 발견, 버그 수정 용이, 코드의 퀄리티 향상 => 일종의 유닛테스트 후 머지

CI로 release 준비 후 CD(Delivery는 최종 수동 배포, Deployment는 자동 배포)


프론트는 거의 혼자서만 해봐서 CI의 필요성을 전혀 몰랐었다. 로컬에서 완성된 상태에서 최종 배포하고 끝냈던 경험뿐이라 vercel 알림이 자동으로 온다는 것도 모르고 다른 팀 알림오는 거 보고 신기해했다. 도메인 변경할 수 있던 것도 몰랐다. PaaS는 좋은 거군 싶다. vercel이 PaaS인건지 SaaS인건지 좀 헷갈렸는데, 결국 개발자가 사용자인 점에서 SaaS인거고 사용자인 개발자가 편리한 기능이 있는 점에서 PaaS인가보다.