DevOps 101: 소프트웨어 패키징

패키징 코드는 소프트웨어 개발 수명 주기의 핵심 단계입니다. 소스 코드를 가져와서 필요한 종속성을 설치하고 실행할 수 있는 코드로 변환하는 프로세스입니다.



소프트웨어를 개발하고 유지 관리하는 사람은 누구나 소스 코드나 해당 종속성이 변경될 때마다 코드의 새 버전을 패키징해야 합니다. 이 작업을 자주 수행하려면 프로세스를 자동화해야 합니다. 그렇다면 어떻게 해야 할까요?

쉘 스크립트로 패키징



먼저 코드 패키징부터 시작해야 합니다. 소프트웨어를 패키징하는 가장 일반적인 방법은 Linux에서 쉘 명령(BASH 또는 ZSH)을 사용하는 것입니다. 대부분의 서버 환경은 Linux를 실행하며 Mac에서 직접 실행하거나 Linux용 Windows 하위 시스템(WSL)을 사용하여 Windows에서 실행할 수 있습니다. 이 명령을 사용하여 코드를 빈 디렉토리에 복사하고 종속성을 설치하고 단위 테스트를 실행해야 합니다. Python 애플리케이션의 예제 패키지 스크립트는 다음과 같습니다.

#!/usr/bin/env bash

set -e

# Make sure our distribution directory exists
mkdir -p ./dist/

# Cleanup any old files from previous packaging
rm -rf ./dist/*

# Install any dependencies listed in requirements
python3 -m pip install -r ./requirements.txt -t ./dist/

# Copy our source code into our distribution
cp -rf ./src/* ./dist/

( cd ./dist/; python3 -m unit_test)


이와 같이 간단하고 읽을 수 있는 스크립트로 패키징 프로세스를 자동화함으로써 코드를 지속적으로 패키징하고 테스트할 수 있습니다. 또한 언어별 도구 또는 테스트 프레임워크를 사용하기 위해 프로세스 내에서 단계를 매우 쉽게 추가하고 수정할 수 있습니다.

스크립트를 실행할 위치



패키징 소프트웨어는 로컬 또는 원격 빌드 에이전트에서 수행할 수 있습니다. 개발자가 로컬에서 코드 작업을 하면서 투명성과 추적성을 위해 중앙 도구를 사용하여 변경 사항을 전달할 수 있도록 둘 중 하나를 수행할 수 있는 유연성을 갖는 것이 좋습니다.

코드를 로컬로 패키징하려면 호환되는 터미널에서 스크립트를 실행하기만 하면 됩니다. GitLab과 같은 중앙 도구에서 스크립트를 실행하기 위해 변경 사항을 커밋할 때마다 스크립트를 실행하는 CICD 구성 파일을 추가할 수 있습니다.

코드 테스트



소프트웨어가 작동한다는 확신을 유지하거나 그렇지 않은 경우 빠른 피드백을 받으려면 패키징 프로세스의 일부로 단위 테스트를 수행해야 합니다. 이 테스트는 코드가 실행되는지 확인하고 입력에 따라 예상되는 응답을 제공합니다. 다른 시스템과 통합하기 위한 구성이 필요하지 않으며 다른 서비스에 연결하지 않고 실행할 수 있어야 합니다.

코드가 다른 라이브러리와 얼마나 통합되는지에 따라 종속성을 설치하기 전이나 파일을 패키징한 후에 단위 테스트를 실행할 수 있습니다. Python 모듈 내에서 실행되는 단위 테스트 세트의 예는 다음과 같을 수 있습니다.

#!/usr/bin/env python3

from . import add

print("Unit Testing Mathematics")
assert add(1, 1) == 2, "Failed addition test A001"


패키지 보관



패키지를 테스트한 후에는 AWS S3, Google Cloud Storage, Azure Blob Storage 또는 FTP 서버와 같은 중앙 저장소 위치에 패키지를 업로드할 수 있습니다. 이렇게 하면 다시 패키징할 필요 없이 구성 및 배포 준비가 된 작업 소프트웨어에 액세스할 수 있습니다. 이는 업로드 위치에 따라 다르지만 서비스는 일반적으로 이 업로드를 처리할 수 있는 적절한 CLI 도구를 제공합니다.

요약



패키징 코드는 소프트웨어 제공 프로세스의 첫 번째 단계이며 자주 작동하는 소프트웨어를 고객에게 빠르고 효과적으로 제공할 수 있도록 자동화되어야 합니다. 유연한 도구를 선택하고 프로세스의 일부로 테스트를 포함함으로써 버튼을 클릭하는 것처럼 프로세스를 간단하게 유지하면서 소프트웨어 개발 속도를 높일 수 있습니다.



코드를 패키징한 후 배포 및 릴리스를 위해 구성해야 합니다. 다음 기사에서는 구성 자동화 프로세스와 복잡한 도구나 반복적인 수동 작업에 의존하지 않고 수행할 수 있는 방법에 대해 설명합니다.

더 많은 콘텐츠를 보려면 여기에서 저를 팔로우하거나 저에게 연락하세요:
  • 트위터:
  • 이메일: [email protected]
  • 웹사이트: torvo.com.au
  • 좋은 웹페이지 즐겨찾기