pile·
백엔드·쏘카쏘카·

팀 레거시 개선 (1) 쏘카존 관리 시스템 | Gradle build script 개선

쏘카 자산개발팀이 Groovy DSL로 작성된 레거시 Gradle 빌드 스크립트를 Kotlin DSL로 마이그레이션하는 10단계 과정을 공유한다. Kotlin DSL은 Gradle 8.x 기본 언어로 컴파일 시점 오류 감지·IDE 자동완성이 장점이며, 비즈니스 개발에 영향 없이 작은 단위로 점진 개선한 경험담이다.

핵심 포인트
  • Kotlin DSL 이점: 컴파일 시점 오류 감지(Groovy DSL은 런타임), IDE 자동완성 지원, Gradle 8.x 기본 언어
  • 마이그레이션 10단계: 작은따옴표→큰따옴표, 괄호 추가, 할당 연산자 추가, 확장자 변경(.kts), ext→extra, 변수 선언, 전역 변수, apply 문법 변경, 타입 명시
  • BOM 교체: mavenBom(dependencyManagement 블록) → Gradle platform(dependencies 블록)으로 교체, 스크립트 간결화
  • buildscript 블록 제거: plugins 블록으로 전환, settings.gradle.kts에 pluginManagement 블록으로 외부 저장소 설정
  • 버전 관리 단순화: 각 생태계(Spring, Kotlin) 관리 버전 사용 → 직접 버전 명시 제거, 관리 포인트 감소
상세 정리
  • 문제 배경: 멀티모듈 프로젝트에서 Groovy DSL 빌드 스크립트가 복잡하게 방치, 프로젝트마다 관리 방식 상이
  • 점진 개선 원칙: 비즈니스 개발 속도에 영향 없도록 작은 단위로 분할 진행
  • build.gradle 구조: buildscript(ext 프로퍼티·의존성), allprojects(리포지터리), subprojects(의존성·BOM)
  • 10단계 핵심: 문자열 수정 → 괄호·할당 연산자 추가 → 확장자 변경 → extra/전역변수 → apply 수정 → 타입 명시
  • gradle.properties 활용: 다른 모듈에서도 쓰는 extra 프로퍼티를 gradle.properties로 이관, build.gradle.kts 길이 단축
  • Maven BOM vs Gradle BOM: dependencyManagement 블록 제거, dependencies.platform()으로 교체하면 스크립트 간결
  • plugins 블록 마커: 외부 저장소 아티팩트는 플러그인 마커 없으면 plugins 블록 사용 불가 → settings.gradle.kts pluginManagement로 해결
  • 코틀린 관리 아티팩트: org.gradle.kotlin.kotlin-dsl 버전 직접 명시 시 충돌 가능, 생태계 관리 버전 사용 권장
왜 읽나Gradle Groovy DSL → Kotlin DSL 마이그레이션을 10단계로 명확히 정리해 멀티모듈 레거시 프로젝트에 그대로 적용할 수 있는 실전 가이드다.
쏘카
쏘카 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 백엔드·github-engGitHub Engineering·

    조기 종료를 없애야 벡터화된다 — 메모리 속도 소스 코드 케이스 폴딩

    GitHub의 코드 검색 엔진 Blackbird는 480TB 이상의 소스 코드를 인덱싱하기 전 모든 바이트에 case folding을 적용한다. 이 글은 Rust로 구현한 case folding을 메모리 대역폭 한계(45+ GiB/s)까지 끌어올린 두 가지 반직관적 최적화를 상세히 다룬다. 핵심은 루프 조기 종료(break) 제거로 LLVM 벡터화를 유도하고, UTF-8을 디코딩하지 않고 바이트 공간 산술만으로 fold를 수행하는 것이다.

    #rust#unicode#simd+2