본문 바로가기

개발 경험 기록/기타4

Git Submodule 사용시 상위 레포에서 브랜치 체크아웃을 해도 서브모듈에 반영되지 않는 문제 해결 들어가며이번 프로젝트를 진행하면서 gRPC proto 명세를 여러 언어에서 공유해야 하는 상황이 생겼습니다.Kotlin(Spring Boot), Flutter, Rust 프로젝트에서 동일한 proto 파일을 사용해야 했고, 이를 위해 Git Submodule을 도입했습니다.하지만 처음 사용하는 Git Submodule에서 예상치 못한 문제가 발생했는데, 이번 포스트에서는 그 문제와 해결 과정을 공유하고자 합니다.임의의 프로젝트 구조 예시parent-project/ # 메인 Kotlin 프로젝트├── src/├── proto-specs/ # Git Submodule (proto 명세 저장소)│ ├── user.proto│ ├── order.prot.. 2025. 6. 11.
gRPC 사용시 IntelliJ IDEA에서 Google Common Protos 의존성 Unresolved 문제 해결하기 문제 배경Gradle을 빌드 툴로 사용하는 gRPC 프로젝트를 개발 중에 아주 짜증나는 문제를 만났던 경험을 기록하고자 합니다.(하지만 알고보니 별 것 아니었던..!!🤬)먼저 저희 프로젝트는 다음과 같은 구조로 되어 있습니다. (중요한 내용은 아닙니다.):shared:protos 모듈: .proto 파일만 정의:shared:stub 모듈: 정의된 .proto 파일을 기반으로 실제 코드 생성이 구조에서 google-common-protos 의존성을 사용하여 google/type/date.proto와 같은 Google에서 제공하는 공통 Protocol Buffer 정의를 사용하고 있었습니다.문제 상황위 이미지와 같이 proto 파일에서 Google 공통 proto를 import할 때 IntelliJ IDE.. 2025. 5. 14.
직접 만나 본 하이럼의 법칙: 자체 제작 라이브러리의 의도치 않은 사용례와 그 해결 까지 소프트웨어 개발자라면 누구나 API를 설계하거나 라이브러리를 만들 때 사용자들이 우리의 의도대로 코드를 사용해주길 바랍니다.하지만 현실은 그렇게 단순하지 않죠.사용자가 많아질수록 우리가 예상하지 못한 방식으로 우리의 코드가 사용됩니다.이것이 바로 '하이럼의 법칙(Hyrum's Law)'의 핵심입니다.최근 제가 개발한 BridgeApi 라이브러리를 통해 하이럼의 법칙을 직접 경험하게 되었고, 이를 어떻게 인식하고 해결했는지 공유하고자 합니다.하이럼의 법칙이란?충분히 많은 수의 API 사용자가 있다면, 당신이 계약서에서 무엇을 약속했는지는 중요하지 않다. 당신의 시스템에서 관찰 가능한 모든 동작은 누군가에 의해 의존될 것이다.— 하이럼 라이트(Hyrum Wright)간단히 말해, 하이럼의 법칙은 사용자들이 .. 2025. 4. 6.
꼬리가 몸통을 흔든다 - RESTful 한 API 설계의 숨겨진 이점에 관한 글 - 꼬리가 몸통을 흔들다(WAG THE DOG) - 서양 속담RESTful API를 이야기할 때 우리는 주로 클라이언트 측면의 이점을 이야기합니다.직관적인 URL 구조, HTTP 메서드의 의미론적 사용, 명확한 리소스 중심 설계 등이 API 사용자들에게 주는 이점을 강조하죠.하지만 오늘은 다른 관점에서 RESTful API를 바라보고자 합니다.API를 설계하고 개발하는 우리들에게 RESTful API가 어떤 가치를 주는지, 어떻게 우리의 도메인 이해를 돕는지 이야기해보려 합니다.이는 제가 최대한 RESTful한 API를 작성해보려고 하는 과정에서, RESTful API 설계가 단순히 클라이언트에게 좋은 인터페이스를 제공하는 것 뿐 만 아니라, API를 개발하는 개발자에게 비즈니스 도메인에 대한 이해, 구조화.. 2024. 12. 12.
728x90