들어가기

정말 멋진 웹 어플리케이션을 만들었다. 하지만, 완성된 웹 어플리케이션 인터넷 상에 배포하지 않는다면, 누가 알아주겠는가? 오늘은 웹 개발의 최종단계 배포, 그중에서도 CI/CD에 대해 블로깅해보려 한다.

배포 자동화

배포 자동화란 한번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다.

  • 먼저 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됩니다.
  • 휴먼 에러(Human Error)를 방지할 수 있습니다.

배포 자동화를 통해 전체 배포 과정을 매번 일관되게 진행하는 구조를 설계하여 휴먼 에러 발생 가능성을 낮출 수 있다.

배포 자동화 파이프라인

배포에서 파이프라인(Pipeline)이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻란다. 파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리한다. 각 단계는 파이프라인 안에서 순차적으로 실행되며, 각 단계마다 주어진 작업(Actions)들을 수행한다.

파이프라인을 여러 단계로 분리할 때, 대표적으로 쓰이는 세 가지 단계가 존재한다.

  • Source 단계: 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행.
  • Build 단계: Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공한다. 또한 가공한 결과물을 다음 단계로 전달하는 작업을 수행.
  • Deploy 단계: Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행.

지속적 통합 (Continuous Integration)

CI는 Continuous Integration의 약자로, 팀 구성원이 각자의 작업을 자주 통합하는 소프트웨어 개발 방식이다. 아래와 같이 크게 세 단계로 나뉜다.

  • Code: 개발자가 코드를 코드 저장소에 Push한다.
  • Build: 코드 저장소로부터 코드를 가져와서 (유닛 테스트 후) 빌드한다.
  • (Test): 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인한다.

지속적 통합은 모든 코드 변화를 하나의 리포지토리에서 관리하는 것 부터 시작한다. 모든 개발팀이 코드의 변화를 확인할 수 있기 때문에, 투명하게 문제점을 파악할 수 있다. 또한, 보안 이슈, 에러 등을 쉽게 파악할 수 있어 해당 이슈를 빠르게 개선할 수 있다. 지속적 통합이 적용된 개발팀은 코드를 머지하기 전, 이미 빌드 오류나 테스트 오류를 확인하여 훨씬 더 효율적인 개발을 할 수 있게 된다.

지속적 배포 (Continuous Deployment)

지속적 배포는 지속적 통합 과정이 원활하게 끝나면 바로 고객에게 배포하는 것을 말한다. 지속적 배포는 크게 3가지 과정으로 나눌 수 있다.

  • Release: 릴리즈 단계에서는 빌드까지 모두 준비가 되었고, 어떤 기능이 개발되었는지 비즈니스 관계자들과 이야기를 나누는 단계다. 어떤 기능을 넣을지, 해당 릴리즈는 배포를 할지 말지 결정하는 단계로 여러 의사결정이 이뤄진다.
  • Deploy: 실제 배포한다.
  • Operation: 배포된 소프트웨어를 실제 운용하는 과정이다. 해당 과정에서 고객의 피드백을 충분히 받아 기획에 반영한다.

최근에는 클라우드 기술 발전과 맞물려 지속적 통합과 지속적 배포가 빠른 속도로 진행되면서 CI/CD를 하나로 묶어서 다루는 경우가 점차 증가하고 있다.

예를 들어, 이전에는 배포 자체가 상당히 오래 걸리고 힘든 일이어서 릴리즈 단계에서 많은 고민을 하곤 했다. 서버를 전부 재시작해야 한다거나, 일부 기능을 제공하지 못하는 경우도 많았다. 요즘은 고객의 피드백을 빨리 받고, 서비스를 중단하지 않기 위해서 버전 릴리즈만 잘 기록해두고 바로바로 배포하는 사례가 증가하고 있다.

Vercel

Vercel는 프론트엔드 배포를 자동화화고, 그 외 여러 추가기능을 제공하는 배포 프레임워크다. 깃허브 아이디를 통해 쉽게 가입할 수 있다.

깃허브 아이디로 로그인했다면, 자신의 레포지토리를 빌드할 수 있도록 선택한다.

추가된 레포지토리 우측에 import 버튼을 누르면 위와 같은 페이지를 볼 수 있다. 항목은 다음과 같다.

  • Project name: 프로젝트의 이름
  • Framework preset: 사용을 원하는 프론트엔드 프레임워크
  • Root directory: 루트 디렉터리 위치
  • Build command: 빌드 스크립트
  • Output directory: 빌드 결과 디렉터리 위치
  • Install command: 설치 스크립트

자신의 프로젝트에 맞게 수정해야 하는 부분이 어디인지 파악하고, Deploy를 누른다.

이후에는 Deploy가 시작된다. Vercel이 빌드 및 배포를 자동으로 진행한다.

배포가 완료되면 배포된 페이지를 확인할 수 있다.

마치며.

이번 블로깅을 통해 CI/CD의 개념에 대해 알아볼 수 있었다. 또한 Vercel를 이용해서 테스트로 작성한 웹을 배포해보니 오묘한 기분이 들었다.

하루 빨리 남부럽지 않은 웹을 만들어서 배포해보고 싶다!! 그 날까지 화이팅이다!

profile
아기코린이

0개의 댓글