Search

Bazel 최적화 전략

최적화 전략 방법론

1.
빌드 성능 향상 Bazel을 사용하여 빌드 성능을 최적화하는 것은 중요합니다. 다음과 같은 전략을 사용하여 빌드 시간을 줄일 수 있습니다.
규칙(rule)을 잘 활용하여 작은 단위로 작업을 나눕니다. 이렇게 하면 변경 사항이 작은 부분에만 영향을 주므로, 전체 빌드 시간이 단축됩니다.
Bazel을 사용하여 병렬 빌드를 지원하도록 프로젝트를 구성합니다. 이를 통해 여러 CPU 코어를 활용하여 빌드 시간을 줄일 수 있습니다.
2.
점진적 빌드(증분 업데이트 참조) 점진적 빌드란 변경된 소스 코드나 종속성만 빌드하여 전체 빌드 시간을 줄이는 기법입니다. Bazel은 다음과 같은 방법으로 점진적 빌드를 지원합니다.
소스 코드 변경 사항이 있는 경우, 변경된 소스 코드와 관련된 종속성만 다시 빌드합니다. 이로 인해 전체 빌드 시간이 줄어듭니다.
의존성 그래프를 사용하여 변경된 부분과 관련된 규칙만 다시 빌드합니다.
3.
빌드 캐싱 빌드 캐싱은 이전에 빌드된 결과를 재사용하여 빌드 시간을 줄이는 기법입니다. Bazel은 다음과 같은 방법으로 빌드 캐싱을 지원합니다.
로컬 빌드 캐시를 사용하여 이전에 빌드된 결과를 저장합니다. 동일한 입력에 대한 결과가 이미 캐시에 있는 경우, 빌드를 건너뛰고 캐시된 결과를 사용합니다.
원격 캐시를 사용하여 여러 개발자가 결과를 공유할 수 있도록 합니다. 이를 통해 동일한 작업을 중복하여 수행하는 것을 방지할 수 있습니다.
4.
원격 실행 원격 실행은 빌드 및 테스트 작업을 로컬 머신이 아닌 원격 서버에서 수행하는 것입니다. Bazel은 다음과 같은 이유로 원격 실행을 지원합니다.
병렬성을 높여 빌드 시간을 줄일 수 있습니다. 원격 서버에서 빌드를 수행하면, 더 많은 자원을 활용하여 빌드 작업을 병렬로 수행할 수 있습니다.
로컬 머신의 자원 사용을 줄일 수 있습니다. 원격 서버에서 빌드를 처리함으로써, 개발자의 로컬 머신에 대한 부하를 줄일 수 있습니다.
일관된 빌드 환경을 제공합니다. 원격 서버에서 빌드를 수행하면, 모든 개발자가 동일한 환경에서 작업하게 되므로 빌드 결과의 일관성을 유지할 수 있습니다.
원격 실행을 사용하려면, Bazel 구성 파일에 원격 실행 관련 설정을 추가해야 합니다. 또한, 원격 실행을 지원하는 서버 또는 클라우드 서비스를 구성해야 합니다.

사용 방법과 예

1.
빌드 성능 향상
작은 단위의 규칙 활용: Bazel 빌드 시스템에서는 빌드 대상을 나타내기 위해 규칙(rule)을 사용합니다. 작은 단위의 규칙을 작성하여 프로젝트의 구조를 잘 정리하는 것이 중요합니다.
예: Java 라이브러리를 빌드하는 데 필요한 각각의 규칙을 사용합니다.
java_library( name = "foo", srcs = ["Foo.java"], deps = [ "//path/to/dependency:bar", ], ) java_library( name = "bar", srcs = ["Bar.java"], )
Plain Text
복사
병렬 빌드 지원: Bazel을 사용하여 프로젝트를 병렬로 빌드할 수 있도록 구성합니다. 이를 통해 여러 CPU 코어를 활용하여 빌드 시간을 줄일 수 있습니다. 병렬 빌드는 기본적으로 활성화되어 있으며, 병렬 수행할 작업의 수를 지정하여 조절할 수 있습니다.
예: Bazel 명령어에서 --jobs 옵션을 사용하여 병렬 작업의 수를 설정합니다.
bazel build //path/to/target --jobs=8
Plain Text
복사
2.
점진적 빌드
점진적 빌드를 사용하려면 특별한 설정이 필요하지 않습니다. Bazel은 기본적으로 의존성 그래프를 분석하여 변경된 소스 코드와 관련된 규칙만 다시 빌드합니다. 따라서 개발자는 소스 코드를 변경하고 빌드를 실행할 때 점진적 빌드의 이점을 누릴 수 있습니다.
3.
빌드 캐싱
로컬 캐시 사용: 로컬 캐시는 기본적으로 활성화되어 있습니다. Bazel은 이전에 빌드된 결과를 자동으로 캐시에 저장하고, 동일한 입력에 대한 결과가 캐시에 있는 경우 빌드를 건너뛰고 캐시된 결과를 사용합니다.
원격 캐시 사용: 원격 캐시를 사용하려면, 원격 캐시 서버를 설정하고 Bazel 구성 파일에 캐시 서버 정보를 추가해야 합니다.
예: Bazel 설정 파일에 원격 캐시 서버 정보 추가하기
build --remote_cache=http://remote-cache-server:8080
Plain Text
복사
4.
원격 실행
원격 실행 설정: 원격 실행을 사용하려면, 원격 실행 서버를 설정하고 Bazel 구성 파일에 해당 서버 정보를 추가해야 합니다. 원격 실행 서버는 직접 구축하거나 클라우드 서비스를 사용할 수 있습니다.
예: Bazel 설정 파일에 원격 실행 서버 정보 추가하기
build --remote_executor=grpc://remote-executor-server:8080
Plain Text
복사
원격 실행 사용: 원격 실행을 사용하여 빌드 및 테스트 작업을 원격 서버에서 수행할 수 있습니다. 원격 실행은 빌드 작업을 병렬로 수행하고, 로컬 머신의 자원 사용을 줄이며, 일관된 빌드 환경을 제공합니다.
예: 원격 실행을 사용하여 Bazel 빌드 수행하기
bazel build //path/to/target --remote_executor=grpc://remote-executor-server:8080
Plain Text
복사
이렇게 Bazel 최적화 전략을 사용하여 프로젝트의 빌드 성능을 향상시킬 수 있습니다. 빌드 성능 향상, 점진적 빌드, 빌드 캐싱, 원격 실행과 같은 기법을 적용하면 빌드 시간을 줄이고 개발 생산성을 높일 수 있습니다. 이러한 최적화 전략을 프로젝트에 적용하여 빠르고 효율적인 빌드 프로세스를 구축해 보세요.

알아두면 좋은 개념들

Bazel CI/CD 통합
Bazel CI/CD 통합