[Section4] 지속적 통합

2023. 7. 27. 11:36

🧑🏻‍💻 TIL(Today I Learned)


✔️ 빌드, 지속적 통합

 

💡 빌드(Build)

➡️ 소프트웨어 개발에서 소스 코드 파일들을 컴퓨터가 이해할 수 있는 실행 가능한 소프트웨어 산출물로 변환하는 과정

➡️ 산출물은 "아티팩트(Artifact)" 라고 부름, 바이너리 파일, 라이브러리, 패키지 등의 형태로 제공됨 

 

🔎  빌드 도구가 필요한 이유

➡️ 빌드 과정을 자동화하면 더 효율적이고 안정적인 소프트웨어 릴리즈를 위한 과정을 간소화할 수 있음 

 

🔎 빌드 도구 종류

  • Java : Maven, Gradle
  • Python : (의존성 관리 및 빌드 스크립트 실행 도구) pip, setuptools
  • JavaScript : (의존성 관리 및 빌드 스크립트 실행 도구) npm, yarn
  • C++ : CMake, Makefile
빌드 도구는 각 언어의 특성에 맞게 설계되었으며 각각의 장단점이 있으므로 사용 시 고려해야 할 사항들이 있음 

- 라이브러리 관리 : 자동으로 의존성을 해결할 수 있는 기능 제공
- 빌드 스크립트 작성의 용이성 : 빌드 도구의 문법과 구성이 개발자에게 친숙한지의 여부
- 확장성 : 대규모 프로젝트에서도 충분히 확장 가능한 구조를 가지고 있는지 여부

 

💡 지속적 통합(CI, Continuous Integration)

➡️ 빌드와 테스트의 불편함과 어려움에서 시작한 중요한 개발 방법론 중 하나
➡️ 개발자들이 새로운 코드를 작성하고 이전 코드와 함께 자동으로 빌드하고 테스트를 수행하는 프로세스

➡️ 아래와 같은 장점들이 존재함 

  • 코드 품질 향상
    : CI는 코드를 자동으로 빌드하고 테스트하기 때문에 개발자들은 실수를 줄일 수 있음
  • 더 빠른 피드백
    : CI는 새로운 코드를 작성하고 이전 코드와 함께 자동으로 빌드하고 테스트하므로 문제가 발생하면 빠르게 발견 가능
  • 더 높은 효율성 
    : Ci는 빌드 및 테스트를 자동화하므로 개발자들은 수동으로 작업하는 시간을 적ㄹ약하고 더 많은 시간을 실제 개발에 할애 가능

 

🔎 원칙 

➡️ 새로운 코드가 작성되면 이전 코드와 함께 자동으로 빌드 및 테스트를 수행하고 문제가 없으면 코드를 릴리즈 

  1. 버전 관리 시스템에서 새로운 코드가 등록되면 CI 서버에서 자동으로 빌드 및 테스트 진행
  2. 빌드 및 테스트가 완료되면 결과를 개발자에게 알려줌
  3. 문제가 발생한 경우 개발자들은 빠르게 수정 가능
  4. 문제가 없으면 코드 릴리즈 

 

🔎 도구

  • Jenkins
    ➡️ 소프트웨어 구축, 테스트, 제공 또는 배포와 관련된 모든 종류의 작업을 자동화하는 데 사용할 수 있는 독립형 오픈 소스 자동화 서버➡️ 기본 시스템 패키지, Docker를 통해 설치하거나 JRE가 설치된 시스템에서 독립 실행형으로 실행할 수 있음 
    • 설치형 : 별도의 서버 필요
    • 다양한 플러그인 활용 가능
    • 쿠버네티스, Docker와 호환됨
    • 다양한 운영체제에서 사용 가능
  • Travis CI
    ➡️ 호스트형 배포 자동화 서비스, GitHub 및 Bitbucket 등에서 호스팅되는 소프트웨어 프로젝트를 빌드하고 테스트하는 데 사용 
    • 클라우드 서비스(SaaS) 형태로 사용 가능
    • Travis 자체에서 호스팅을 해주기 때문에 관리적인 측면에서 편리함
    • Clojure, Erlang, Groovy Haskell, Java, JavaScript, Node.js, Perl PHP, Rython, Ruby 등의 다양한 언어 지원
  • GitHub Actions
    ➡️ 빌드, 테스트 및 배포 파이프라인을 자동화할 수 잇는 지속적 통합 및 지속적 배포 플랫폼 
    ➡️ 리포지토리에 대한 모든 풀 요청을 빌드 및 테스트하는 워크플로를 생성하거나 병합된 풀 요청을 프로덕션에 배포 가능 
    ➡️ Dev Ops를 넘어 리포지토리에서 다른 이벤트가 발생할 때 워크플로 실행 가능
    ➡️ Linux, Windows, macOS 가상 머신을 제공하여 워크플로를 실행하거나 자체 데이터 센터 또는 클라우드 인프라에서 자체 호스팅 러너를 호스팅할 수 있음 
    • GitHub 저장소를 기반으로 소프트웨어 개발 Workflow를 자동화할 수 있는 툴
    •  GitHub 마켓 플레이스를 통해 여러 사람이 공유한 Workflow를 찾을 수 있으며 자신이 직접 만들어 공유 가능
    • 공개 저장소는 무료로 사용할 수 있으며 비공개 저장소 같은 경우 매달 일정량의 무료 사용량 이후에 요금이 부과됨

BELATED ARTICLES

more