[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는 빌드 및 테스트를 자동화하므로 개발자들은 수동으로 작업하는 시간을 적ㄹ약하고 더 많은 시간을 실제 개발에 할애 가능
🔎 원칙
➡️ 새로운 코드가 작성되면 이전 코드와 함께 자동으로 빌드 및 테스트를 수행하고 문제가 없으면 코드를 릴리즈
- 버전 관리 시스템에서 새로운 코드가 등록되면 CI 서버에서 자동으로 빌드 및 테스트 진행
- 빌드 및 테스트가 완료되면 결과를 개발자에게 알려줌
- 문제가 발생한 경우 개발자들은 빠르게 수정 가능
- 문제가 없으면 코드 릴리즈
🔎 도구
- 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를 찾을 수 있으며 자신이 직접 만들어 공유 가능
- 공개 저장소는 무료로 사용할 수 있으며 비공개 저장소 같은 경우 매달 일정량의 무료 사용량 이후에 요금이 부과됨
'SEB_BE_45 > 공부 정리' 카테고리의 다른 글
[Section4] 지속적 배포 (0) | 2023.07.28 |
---|---|
[Section4] 운영 환경 구성 - 고가용성(HA: High Availability) (0) | 2023.07.26 |
[Section4] 운영환경(cloud) - AWS (0) | 2023.07.24 |
[Section4] 쿠버네티스(kubernetes) - 워크로드 (0) | 2023.07.21 |
[Section4] 쿠버네티스(Kubernetes) (0) | 2023.07.21 |