SEB_FE_45(코드스테이츠)/section 4.

[Deploy] CI/CD 과

YTReeee 2023. 8. 1. 23:55

렌더링은 됐는데... 제대로 진행을 한건가??


CI/CD

CI(Continuous Integration) : 지속적 통합

  • 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
  • Code(원격저장소에 코드를 push) - Build(원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드) - Test(코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인)

CD(Continuous Delivery) : 지속적 배포

  • 파이프라인의 추가 단계에 대한 자동화를 뜻한다.
  • Release(배포 가능한 소프트웨어 패키지를 작성) - Deploy(프로비저닝 실행, 서비스를 사용자에게 노출, 실질적 배포) - Operate(서비스 현황 파악 및 문제 감지)
  • 위 단계를 마치면 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 배포할 수 있기 때문에 보다 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포할 수 있게 된다.

배포자동화

  • 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다.
  • 필요성
    • 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약된다.
    • 휴먼에러(Human Error)를 방지한다. 휴먼 에러란 수동으로 배포를 진행하는 중에 생기는 실수를 의미한다.

CI/CD 파이프라인

출처 : 코드스테이츠 유어클래스

  • 배포 과정을 자동화 단계로 만드는 것을 파이프라인을 구축한다고 표현한다.

CI/CD 파이프라인 구성 기본 단계와 수행 작업

출처 : 코드스테이츠 유어클래스

CI/CD 파이프라인 구성 요소 및 장점

  • 빌드(소프트웨어 컴파일)
  • 테스트(호환성 및 오류검사)
  • 릴리스(버전 제어 저장소의 애플리케이션 업데이트)
  • 배포(개발에서 프로덕션 환경으로의 변환)
  • 규정 준수 및 유효성 검사

파이프라인의 구축으로 인해 최신 버전의 소프트웨어 애플리케이션 업데이트 및 제공을 위한 처리 단계에서 수동으로 하는 것에 비해 1) 빠르고 2) 안정적이며 3) CI/CD 인프라와의 호환성과 효율성을 높여준다는 장점이 있다.

Github Action

  • Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼이다.
  • Pull Request 나 push 같은 이벤트를 트리거로 작업 워크플로우(Workflow)를 구성할 수 있으며, 워크플로우는 하나 이상의 작업이 실행되는 자동화 프로세스이다.
  • 각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행된다.
  • 워크플로우는 .yml(혹은 .yaml) 파일에 의해 구성된다.
  • 테스트, 배포 등 기능에 따라 여러 개의 워크플로우로도 만들 수 있다.

Github Actions 공식문서 : https://docs.github.com/en/actions

 

GitHub Actions documentation - GitHub Docs

Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you'd like, including CI/CD, and combine actions in a completely customized wo

docs.github.com


회고

Github Action 실습 과제의 화면이 렌더되긴 했으나, 제대로 된 방법으로 과제를 수행한 건지 알 수 없어 답답했다.

내일 아침 실시간 세션을 통해 해당 궁금증이 해소되긴 하겠지만, 당일 학습이 마무리되는 시점에 레퍼런스가 게시되면 학습에 조금 더 도움이 되지 않을까 생각해본다.

부족한 부분은 내일 세션을 통해 채워야 하겠다.

 


실시간 세션을 통해 알게 된 내용! (2023. 08. 02)

github action을 이용하면 배포자동화가 이뤄진다.

github action을 이용하지 않을 때는 코드 폴더 내에 npm build를 진행하여 생성된 build 퐇더의 파일을 aws s3에 올려야 하는데, 이러한 작업을 자동으로 해준다.

이에 내 로컬 리포지토리 내에는 build 폴더가 생성되지 않는다. 나의 원격리포지토리 내에 action 탭에서 yml 파일에 작성한 코드를 바탕으로 자동으로 작업이 이뤄진다.

문제없이 동작이 되었으면 녹색 v 아이콘이 표시된다.
AWS S3 객체에도 새로고침 버튼을 누르면 깃헙 액션에서 빌드된 파일이 자동으로 업로드된다.

어제 과제를 진행하면서 답답했던 부분이 깃헙 액션에서는 build가 되었다고 표시되었는데, AWS S3 버킷 내에 객체에는 이전에 실습했던 파일들이 올라가 있었고, 새로운 파일이 업로드 되는 것이 확인되지 않았다.

오늘 실시간 세션을 들으면서 같이 해보니, 깃헙 액션에서 빌드가 완성되었고, AWS액세스 아이디와 시크릿 키를 깃헙 액션에 잘 등록했으면, 자동으로 S3 버킷에 빌드된 파일이 업로드 됨을 확인할 수 있었다!

출처 : 개비스콘 광고

'SEB_FE_45(코드스테이츠) > section 4.' 카테고리의 다른 글

기술면접 블로깅  (0) 2023.08.03
[Deploy] CI/CD - Proxy  (0) 2023.08.02
AWS FE 배포 실습 과제  (0) 2023.07.31
AWS BE 배포 실습 과제  (0) 2023.07.31