[배경 지식] 컴파일, 빌드, 배포 개념 및 CI/CD 개념 정리

최정우·2022년 5월 16일
1

배경 지식

목록 보기
3/3

빌드, 컴파일, 배포(Build, Compile, Deploy)란?

  • 컴파일

    컴퓨터가 이해할 수 있는 언어로 바꿔주는 과정
    보통 Java, C#, Swift와 같은 고급 언어로 작성된 코드를 기계어로 변환하는 과정을 말한다.
    자바스크립트에서의 컴파일러는 Babel과 Typescript 등이 있다. Babel을 통해 최신 자바스크립트 스펙을 모든 브라우저에서 사용 가능한 스크립트로 컴파일
    Typescript를 통해 TS -> JS 컴파일
    자바스크립트? 인터프리터 언어임 .. 하지만 컴파일과정 거친다. (컴파일이 필요한 경우엔 컴파일)
  • 빌드

    컴파일 된 코드를 실행할 수 있는 상태로 만드는 일
    실제로 JavaScript로 된 프로젝트의 빌드 파일을 보면 아래와 같이 하나의 파일이 직렬화 되어 알아 볼 수 없는 형태로 되어있는 것을 볼 수 있다.
    빌드 툴로는 빌드 툴로는 Ant, Maven, Gradle 등이 있습니다.

  • 배포

    빌드가 완성된 실행 가능한 파일ㅇ르 사용자가 접근할 수 있는 환경에 배치시키는 일

CI CD란?

  • CI란?

    빌드/테스트 자동화 과정을 의미하는 용어로 개발자를 위한 자동화 프로세스이며, 지속적인 통합(Continuous Integration)을 의미한다.
    쉽게 GitHub에 특정 브랜치(master)에 새로운 커밋이 될 때 마다, 해당 코드를 바탕으로 빌드하고 사용자가 미리 만들어둔 테스트 코드를 실행하여 문제가 있는지 없는지를 체크하는 과정을 자동화 한것을 의미한다.

  • CD란?

    배포 자동화 과정을 의미하는 용어로 지속적 서비스 제공(Continuous Delivery) 또는 지속적 배포(Continuous Deployment)를 의미한다. 기존에는 빌드 후 문제가 없다고 판단되면 실제 서버든, 클라우드 환경의 서버 환경에 합쳐진 코드(빌드 된 상태의)를 올리는 과정을 하며 이를 배포한다 라고 한다. 그런데 위에서 설명한 CI의 과정이 되어 있다면, 우리는 배포 마저도 CI가 완료되는 시점에 자동으로 실행하면 된다. 이를 CD라고 한다.

CI/CD 를 도와주는 각종 오픈 소스 및 플랫폼이 궁금하다면 CI/CD 개념 및 각종 플랫폼 정리글을 통해 확인하자.

  • CI/CD 적용 전 후 시나리오 비교

  • CI/CD 적용 전

    1) 코드를 수정/추가 등을 하며 개발을 진행한다.
    2) 각자의 코딩 컨벤션에 따라 브랜치에 push 한다.(여기서 에러가 발생했는지 아닌지 판단할 수 없음)
    3) 해당 브랜치 코드에 문제가 없다고 판단되면 main branch에 병합한다.
    4) 에러가 발생했다면 1)~3) 과정으로 에러를 고치고, 에러가 발생하지 않았다면 직접 배포를 진행한다.

  • CI/CD 적용 후

    1) CI/CD 적용 전과 동일
    2) push된 코드를 CI가 알아서 Build, Test, Lint(포맷팅)을 실행하고 결과를 알려준다.
    3) 개발자들은 결과를 보고 에러가 난 부분을 수정한 후 main branch에 병합한다.
    4) main branch를 감지하고 있던 CD 과정이 알아서 배포를 수행한다.

참고 자료

https://seosh817.tistory.com/104

https://velog.io/@skyni/CICD-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EA%B0%81%EC%A2%85-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%A0%95%EB%A6%AC

profile
누구나 할 수 있지만 아무나 못하는 일을 하자

0개의 댓글