728x90 ksp4 [신입 개발자의 세 번째 라이브러리]실제 프로젝트 적용과 회고 : persistence-code-generator 개발기(fin) 들어가며이번 글은 어느덧 persistence-code-generator 개발기의 마지막 편입니다.지금까지 라이브러리의 설계와 구현을 살펴보았는데요.이번 편에서는 실제 프로젝트 적용을 통해 달성한 정량적인 생산성 향상과 그 과정에서 느낀 것들을 공유하고자 합니다.생산성 향상 효과보일러 플레이트 코드 감소(feat. 정량적 분석)persistence-code-generator의 가장 큰 성과는 영속성 계층의 보일러플레이트 코드를 94% 감소시킨 것입니다.실제 수치로 살펴보겠습니다:도메인 엔티티 1개당 (칼럼 다섯개의 가벼운 엔티티 예시):어노테이션 포함 개발자가 작성하는 코드: 20줄 (전체의 6.25%)자동 생성되는 코드: 300줄 (전체의 93.75%)전체 필요한 코드: 320줄예시를 통해 살펴보겠습니.. 2024. 12. 14. [신입 개발자의 세 번째 라이브러리] 컴파일 타임에 클래스의 FQCN 알아내기 - persistence-code-generator 개발기(4) 들어가며이전 편에서는 ValuedEnum 처리와 타입 안전성 확보에 대해 다뤘습니다.이번 편에서는 @WithConverter 구현 과정에서 마주친 문제와 그 해결 방법을 공유하고자 합니다.@WithConverter(converter: Kclass)를 통해 받은 클래스 리터럴을 통해 메타데이터에 접근할 수 없는 문제@WithConverter는 다음과 같이 구현된 간단한 어노테이션입니다:@Target(AnnotationTarget.PROPERTY)@Retention(AnnotationRetention.RUNTIME)annotation class WithConverter( val converter: KClass>)하지만 이 간단한 어노테이션의 구현 과정에서 한 가지 어려운 점에 직면했습니다.컴파일 타임 .. 2024. 12. 7. [신입 개발자의 세 번째 라이브러리] 타입 안전한 Enum 변환과 확장성 - persistence-code-generator 개발기(3) 들어가며이번 편에서는 persistence-code-generator를 작성하며, 기본 기능 외에도 디테일한 표현이 가능하도록 신경을 쓴 부분인 ValuedEnum 처리와 컨버터 등록 어노테이션인 @WithConverter에 대해 다루어 보겠습니다.ValuedEnum: 값을 가진 열거형먼저 ValuedEnum의 개념과 그 필요성부터 이해해보겠습니다.ValuedEnum은 실제 데이터베이스에 저장될 값을 가지는 형태의 enum입니다.저는 키오스크나 포스와 같은 클라이언트 솔루션을 개발하는 개발자로서, 결제 데이터를 취합하고, 통계 데이터를 보여주는 서버(이하 '집계 서버')와의 API 통신 코드를 짤 때가 많았는데요.이 때 ValuedEnum의 유용함을 느꼈습니다.왜냐하면, 집계 서버는 단일 문자열 값으로 .. 2024. 12. 6. [신입 개발자의 세 번째 라이브러리]KSP로 보일러플레이트와 싸우기 : persistence-code-generator 개발기(1) 들어가며소프트웨어 개발에서 보일러플레이트 코드는 필연적으로 발생합니다.특히 영속성 계층을 다룰 때는 더욱 그렇습니다.DDL 문의 작성을 더 쉽게 하기 위해 DDL-DSL 이라는 플루언트 DSL 라이브러리를 만들었지만, 여전히 많은 보일러 플레이트 코드가 발생하였습니다.(DDL - DSL은 제가 만든 두 번째 라이브러리로, 아래 링크에서 제작기를 확인하실 수 있습니다.) 2024.12.01 - [작디 작은 나만의 라이브러리/DDL-DSL] - [신입 개발자의 두 번째 라이브러리 개발기] 도메인 특화 언어(DSL)을 만들어 보자! DDL-DSL 개발기 -0. 개발 목적과 구상- [신입 개발자의 두 번째 라이브러리 개발기] 도메인 특화 언어(DSL)을 만들어 보자! DDL-DSL 개발기 -개발 배경이번에 저희.. 2024. 12. 3. 이전 1 다음 728x90