정말 멋진 웹 어플리케이션을 만들었다. 하지만, 완성된 웹 어플리케이션 인터넷 상에 배포하지 않는다면, 누가 알아주겠는가? 오늘은 웹 개발의 최종단계 배포, 그중에서도 CI/CD에 대해 블로깅해보려 한다.
배포 자동화란 한번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다.
배포 자동화를 통해 전체 배포 과정을 매번 일관되게 진행하는 구조를 설계하여 휴먼 에러 발생 가능성을 낮출 수 있다.
배포에서 파이프라인(Pipeline)이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻란다. 파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리한다. 각 단계는 파이프라인 안에서 순차적으로 실행되며, 각 단계마다 주어진 작업(Actions)들을 수행한다.
파이프라인을 여러 단계로 분리할 때, 대표적으로 쓰이는 세 가지 단계가 존재한다.
CI는 Continuous Integration의 약자로, 팀 구성원이 각자의 작업을 자주 통합하는 소프트웨어 개발 방식이다. 아래와 같이 크게 세 단계로 나뉜다.
지속적 통합은 모든 코드 변화를 하나의 리포지토리에서 관리하는 것 부터 시작한다. 모든 개발팀이 코드의 변화를 확인할 수 있기 때문에, 투명하게 문제점을 파악할 수 있다. 또한, 보안 이슈, 에러 등을 쉽게 파악할 수 있어 해당 이슈를 빠르게 개선할 수 있다. 지속적 통합이 적용된 개발팀은 코드를 머지하기 전, 이미 빌드 오류나 테스트 오류를 확인하여 훨씬 더 효율적인 개발을 할 수 있게 된다.
지속적 배포는 지속적 통합 과정이 원활하게 끝나면 바로 고객에게 배포하는 것을 말한다. 지속적 배포는 크게 3가지 과정으로 나눌 수 있다.
최근에는 클라우드 기술 발전과 맞물려 지속적 통합과 지속적 배포가 빠른 속도로 진행되면서 CI/CD를 하나로 묶어서 다루는 경우가 점차 증가하고 있다.
예를 들어, 이전에는 배포 자체가 상당히 오래 걸리고 힘든 일이어서 릴리즈 단계에서 많은 고민을 하곤 했다. 서버를 전부 재시작해야 한다거나, 일부 기능을 제공하지 못하는 경우도 많았다. 요즘은 고객의 피드백을 빨리 받고, 서비스를 중단하지 않기 위해서 버전 릴리즈만 잘 기록해두고 바로바로 배포하는 사례가 증가하고 있다.
Vercel는 프론트엔드 배포를 자동화화고, 그 외 여러 추가기능을 제공하는 배포 프레임워크다. 깃허브 아이디를 통해 쉽게 가입할 수 있다.
깃허브 아이디로 로그인했다면, 자신의 레포지토리를 빌드할 수 있도록 선택한다.
추가된 레포지토리 우측에 import 버튼을 누르면 위와 같은 페이지를 볼 수 있다. 항목은 다음과 같다.
자신의 프로젝트에 맞게 수정해야 하는 부분이 어디인지 파악하고, Deploy를 누른다.
이후에는 Deploy가 시작된다. Vercel이 빌드 및 배포를 자동으로 진행한다.
배포가 완료되면 배포된 페이지를 확인할 수 있다.
이번 블로깅을 통해 CI/CD의 개념에 대해 알아볼 수 있었다. 또한 Vercel를 이용해서 테스트로 작성한 웹을 배포해보니 오묘한 기분이 들었다.
하루 빨리 남부럽지 않은 웹을 만들어서 배포해보고 싶다!! 그 날까지 화이팅이다!