2004년 codebase 조직 관행 재검토
Source: Dev.to
개요
2003–2004년에 릴리스된 여러 웹 기반 자유 소프트웨어 프로젝트의 파일 및 디렉터리 구조를 검토했습니다: Koha 1.2.0 도서관 관리 시스템, MRBS 1.2.1 회의실 예약 시스템, 그리고 DSpace 1.2 콘텐츠 저장소 시스템. 각각 Perl, PHP, Java로 작성되었습니다.
엔드포인트 명명 규칙
엔드포인트 파일은 동작을 나타내는 이름 뒤에 선택적으로 엔터티가 붙는 형태로 명명됩니다. 일반적인 패턴은 다음과 같습니다:
# Perl
search.pl
updatebibitem.pl
opac_reserve.pl
// PHP
search.php
edit_entry.php
// Java (Servlets)
SimpleSearchServlet.java
EditProfileServlet.java
동사 또는 동사구가 사용자 워크플로와 일치하지 않을 수도 있습니다. 예를 들어, Koha에는 opac_reserve.pl이 포함되어 있어 온라인 공개 접근 카탈로그(OPAC) API를 통한 예약 워크플로를 처리함을 나타내지만, 별도의 “borrow”(대출) 엔드포인트 파일은 존재하지 않습니다.
프로젝트의 모듈식 구조
각 시스템은 모듈식 스타일로 설계되었습니다:
- Koha –
Borrower.pm모듈에reserveslist함수가 제공됩니다. - MRBS –
functions.inc를 사용하며, 여기에는make_room_select_html와 같은 함수가 포함됩니다. - DSpace –
Item.java에findAll과 같은 메서드가 포함됩니다.
하지만 이들은 엄격한 다계층 아키텍처를 따르지는 않습니다; 예를 들어 데이터베이스 쿼리가 전용 데이터 접근 계층으로 분리되어 있지 않습니다. DSpace는 서블릿과 JSP를 사용해 별도의 프레젠테이션 계층을 구축합니다.
아키텍처 관찰
동사 기반 명명 규칙 때문에 파일은 무엇을 하는지에 초점을 맞추고 어떤 아키텍처 계층에 속하는지는 덜 강조됩니다. 이는 파일의 목적을 한눈에 파악하기 쉽게 하지만, 논리, 데이터 접근, 프레젠테이션 코드가 동일 파일 혹은 동일 함수 내에 섞여 있는 경우가 많다는 의미이기도 합니다.
조직 및 테스트에 미치는 영향
이 접근 방식은 조직화와 테스트를 더 어렵게 만들 수 있습니다:
- 로직, 데이터베이스 쿼리, 프레젠테이션 코드가 자주 뒤섞여 있습니다.
- 명확한 분리가 없으면 단위 테스트와 코드 재사용이 방해받습니다.
- 일관된 아키텍처 경계를 유지하려면 개발자의 추가적인 규율이 필요합니다.