Active Record의 Attributes API 재작성은 기존 타입 캐스팅 로직의 심각한 문제점을 해결하기 위해 추진되었습니다.
기존 문제점
- 분산된 ‘스파게티 코드’: 타입 캐스팅 로직이 여러 모듈에 복잡하게 얽혀 디버깅이 어려웠습니다.
- 불안정한 확장성: 외부 Gem이 Rails 내부 로직을 몽키 패치해야 했고, 이는 버전 업그레이드 시 호환성 문제를 야기했습니다.
Attributes API를 통한 개선
Sage는 Attribute
객체와 Type
객체를 도입하여 타입 캐스팅 로직을 객체 지향적으로 캡슐화했습니다. Attribute
객체가 상태를 관리하고, Type
객체가 실제 타입 변환을 위임받아 처리합니다. 이 재설계로 디버깅이 단순화되었고, 특정 유형의 버그 발생이 원천 차단되어 시스템 안정성이 크게 향상되었습니다.
성능과 유지보수성의 균형
초기에는 많은 Ruby 객체 할당으로 성능 저하가 있었으나, ‘지연 초기화(Lazy Instantiation)’ 기법을 적용하여 성능 저하 없이 유지보수성을 확보했습니다. Sage는 “버그가 많고 유지보수 불가능한 코드는 아무리 성능이 좋아도 무의미하다”며 코드의 명확성과 안정성이 우선임을 강조했습니다.
오픈 소스 기여자 조언
오픈 소스 기여 시 프로젝트 가이드라인 준수, 소통, 점진적 기여, 인간이 읽기 쉬운 코드 작성이 중요하다고 조언했습니다.