이번 배포 실습 이후로 CI/CD에 대하여 학습하였다.
CI/CD
CI: 개발자를 위한 자동화 프로세스의 지속적인 통합(Continuous Integration)
CD: 지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 의미 한다고 한다.
나아가 더 자세히 알아보도록 하자.
개발자를 위한 자동화 프로세스라고 볼 수 있다.
일반적인 앱의 개발 및 유지보수 단계는 Code, Build, Test, Release, Deploy, Operate, Plan 이 되는데 지금 배우는 CI는 Code, Build, Test 단계에서 볼 수 있다.
Code : 개발자가 코드를 원격 코드 저장소 (Ex. github repository)에 push하는 단계입니다.
Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계입니다.
Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인하는 과정입니다.
이 과정에서 개발자는 코드를 잦게 원격 코드 저장소에 push하고, 테스트 및 빌드를 하며 빌드 결과를 통해 빌드가 성공했는지 실패했는지 확인을 하고, 통합 테스트 결과를 통해 개선 방안을 찾는다.
이 지속적인 통합 과정을 통해 개발자는 버그를 일찍 발견할 수 있고, 테스트가 완료된 코드에 대해 빠른 전달이 가능해지며 지속적인 배포가 가능해진다.
지속적 통합이 적용된 개발팀은 코드를 머지하기 전, 이미 빌드 오류나 테스트 오류를 확인하여 훨씬 더 효율적인 개발을 할 수 있게 된다.
지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 의미하며 이 부분은 Release - Deploy - Operate 단계에서 볼 수 있다.
Release : 배포 가능한 소프트웨어 패키지를 작성합니다.
Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출합니다. 실질적인 배포 부분입니다.
Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지합니다.
지속적 배포의 경우, 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계로, 테스트 자동화와 코드 배포 자동화가 포함된다.
이 프로세스를 완료하면 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 배포할 수 있기 때문에 운영팀이 보다 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포할 수 있게 된다.
이번에는 Github Action 실습을 위해서 Github Action에 대하여 알아보자.
Github Actions이 무엇일까..?
GitHub Actions는 Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼이다.
먼저 아침에 들은대로 Github의 Setting > Secrets and variables > Action 에 들어와서 New repository secret을 클릭하고 name과 secret을 입력한 후 추가를 눌러주었다.
client.yml에서 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 라고 적혀있어서 우선 이렇게 secrets를 추가했다.
그리고 나만의 아고라 스테이츠 서버 레퍼런스의 클라이언트 부분을 배포하기 위해서
.github/workflows/에 client.yml 파일을 추가하고
.github/workflows/client.yml 에서 이렇게 작성했다.
이렇게 작성하고 푸쉬를 했더니
s3 버킷에 파일이 추가된 것을 확인할 수 있었다.
이렇게 깔끔하게 동작이 되었다
오늘은 github action을 사용해서 s3에 자동으로 파일을 올려보았다.
일일히 수동으로 파일을 올리는 번거로움이 없어 상당히 편하다고 생각이 들었다 😉