728x90

목차

     

    "Maven이 아닌 다른 빌드 도구를 찾다!"

    그 동안 개발을 하면서 빌드 도구에 중요성을 인지하지 못했다. 하지만 담당하게 된 빅데이터 모니터링 웹 프로젝트의 빌드 속도가 5분 이상이 걸려 Java, xml(mybatis)를 수정하고 적용시키고 확인하는 데 너무 오래 걸려 작업 속도가 나오지 않았다. 레거시로 입력된 라이브러리들을 Maven에서 제거를 하면서 최적화를 진행하였고 속도는 3분으로 줄어들었다. 하지만 추가 기능을 개발하면서 다시 거의 5분에 빌드속도로 늘어나게 되었고, 배고픈 하이에나 처럼 방법을 찾아보게 되었다.

     

    "캐싱은 언제나 옳다."

    Maven은 이미 빌드된 파일들을 다시 빌드를 한다. 그렇기 때문에 느린 것이다. 반면엔 Gradle은 이미 빌드된 파일들은 다시 빌드하지 않는다. 캐싱을 하기 때문이다. 이것만으로도  속도에 엄청난 차이를 보인다.

    Gradle 공식 사이트에서 이미 Maven과의 성능 비교를 테스트한 자료를 올렸다. 일반적인 라이브러리 프로젝트 기준으로 테스트한 경우 테스트 실행 속도가 1.7배 더 빠르고, 빌드 캐시를 사용할 때 빌드 속도가 최대 30배 더 빠르다고 한다.

    출처: https://gradle.org/gradle-vs-maven-performance/

     

    "Maven과 Gradle을 비교해보자!"

    1. 소개

    Maven: XML 기반의 빌드 도구.

    Gradle: Groovy 또는 Kotlin DSL을 사용하는 그루비 기반의 빌드 도구.

    2. 문법

    Maven: XML 기반으로 간단하고 명시적. <groupId>, <artifactId>, <version> 등의 태그 사용.

    Gradle: Groovy 또는 Kotlin을 사용하여 간결하고 가독성이 좋은 DSL. group, name, version 등의 속성 사용.

    3. 유연성

    Maven: 컨벤션을 따라야 하며, 일부 설정을 오버라이드하기 어려움. 표준 빌드 라이프사이클 제공.

    Gradle: 설정이 자유롭고 유연하여 프로젝트에 특화된 빌드 가능. 필요한 만큼의 라이프사이클 정의 가능.

    4. 성능

    Maven: 빌드간 의존성 캐싱이 미비하여 성능이 안좋다.

    Gradle: 빌드 스크립트를 통한 병렬 빌드와 증분 빌드를 지원하여 성능 향상되었고 빌드간 의존성 캐싱으로 성능이 좋다.

     

    "마무리"

    5년의 커리어 동안 전ㆍ현 직장에서 Gradle이 아닌 Maven을 사용하고 있었다. 왜 2008년에 최 출시한 Gradle보다 2004년에 출시한 Maven을 더 많이 사용하고 있는 걸까? 고민하고 내린 결론은 Maven이 익숙하기 때문이고 Gradle을 사용하려면 학습을 해야하며 큰 프로젝트인 경우 마이그레이션하는 데 적지 않은 비용이 들기 때문인 것 같다. 하지만 최대 100배까지 빠르다는데 변경하지 않는 것은 '기술 부채'라고 생각하며 이것을 해결하는 것이 개발자의 숙명이 아닐까?

     

    참고자료

    https://gradle.org/gradle-vs-maven-performance/

     

    Gradle | Gradle vs Maven: Performance Comparison

    Gradle is up to 100 times faster than Maven. Take a look at case studies and find out more about the performance advantages of Gradle over Maven.

    gradle.org

    728x90
    TOP