발표자는 2003년 에릭 에반스가 소개한 DDD의 기본 개념을 설명합니다. DDD는 기술적 개념보다 비즈니스 도메인의 핵심 논리와 의미를 깊이 반영하는 시스템 구축에 중점을 두며, 명확한 경계와 개발자 및 비즈니스 전문가 간의 공유된 ‘유비쿼터스 언어(Ubiquitous Language)’ 사용을 강조합니다. ‘Astronoby’ Gem을 통해 DDD의 실제 적용 사례를 상세히 설명하는데, 주요 구성 요소는 리포지토리(Repositories)(데이터 저장), 도메인 서비스(Domain Services)(연산 수행), 값 객체(Value Objects)(수학적/물리적 값 캡슐화, 불변성, 값 동등성), 엔티티(Entities)(물리적 천체 표현)입니다. DDD는 테스트 가능한 코드 작성과 Ruby의 강한 테스트 문화에 기여하며, 특히 과학 분야에서는 실제 과학 데이터와의 비교를 통한 ‘과학적 검증’이 중요합니다. 다른 프로젝트에 DDD를 적용할 때는 핵심 도메인 식별, 경계 매핑, 값 객체부터 시작, 책임 분리(‘Fat Controller’/‘Monolithic God Model’ 회피), ‘Tell, Don’t Ask’ 원칙 준수 등을 고려해야 하며, 아키텍처의 순수성보다 공유된 이해를 목표로 해야 한다고 조언합니다.
Ruby와 DDD(Domain-Driven Design)를 활용한 천문학 소프트웨어 개발
Rémy Hannequin - Modelling the Cosmos in Ruby: Applying OOP and DDD to Astronomical Concepts
작성자
Helvetic Ruby
발행일
2025년 06월 27일
핵심 요약
- 1 본 발표는 복잡한 도메인 모델링과 코드 디자인 기법, 특히 DDD(Domain-Driven Design)를 Ruby 프로그래밍 언어에 적용하는 방법을 다룹니다.
- 2 발표자는 자신이 개발한 Ruby Gem 'Astronoby'를 사례로 들어, DDD의 핵심 개념인 유비쿼터스 언어, 리포지토리, 도메인 서비스, 값 객체, 엔티티를 설명합니다.
- 3 Ruby의 객체 지향적 특성과 표현력이 DDD에 적합하며, 이를 통해 과학 컴퓨팅 분야에서 Ruby의 활용 가능성을 높일 수 있음을 강조합니다.
도입
본 발표는 소프트웨어 개발자가 천문학에 대한 열정을 프로그래밍에 접목한 사례를 소개합니다. 일상적인 시간과 공간 개념의 복잡성을 지적하며, 이러한 복잡성을 다루는 소프트웨어 개발의 어려움을 언급합니다. 순수 Ruby로 천문학 데이터와 이벤트를 제공하는 오픈소스 Gem 'Astronoby'를 통해, 도메인 모델링과 코드 디자인 기법, 특히 DDD(Domain-Driven Design)의 적용을 다룹니다. 이는 Ruby가 과학 컴퓨팅 분야에서 파이썬과 같이 더 널리 활용되기를 바라는 목표를 담고 있습니다.
결론
DDD는 복잡한 도메인 관리에 효과적이며, Ruby의 표현력과 객체 지향적 특성이 DDD 구현에 매우 적합합니다. 'Astronoby' Gem을 통해 기능적이면서도 교육적인 코드를 작성하려 노력했음을 밝히며, Ruby가 과학 커뮤니티에서 더 중요한 위치를 차지하기를 바라는 개인적인 염원을 표명하며 발표를 마무리합니다.