brunch

You can make anything
by writing

C.S.Lewis

by 안영회 습작 Aug 11. 2022

Repository 의미 더 찾아보기

도메인 모델링 세미나 8

<모델 저장소의 의미와 구현> 편에서 Repository 정의를 대강 넘어간 것이 다시 떠올라 이것저것 찾아보고 생각하고 기록한다.


보관 대상과 Metadata의 유기적 저장소

먼저 위키피디아 페이지 찾아보았다. 여러 의미 중에서 Software 분류 하위에 있는  개의 정의가 먼저 눈에 들어왔다.

 번째는 Git 같은 (여러 버전의 코드) 저장소이고,  번째는 Maven 같은 소프트웨어 패키지 저장소이다. 나는 인용한 첫 문장을 보면서 저장소의 본질적 기능을 추려준 듯한 인상을 받는다.

Repository (version control), a data structure which stores metadata for a set of files or directory structure

무슨 말이냐면, Metadata 보관 대상(files or derectory) 묶어서 저장하는 데이터 구조란 점이 Repository 핵심이란 생각이 들었다. <모델 저장소의 의미와 구현> 편에서  대로 Repository 하면 바로 도서관과 사서 이미지가 떠오르는 이유도 그와 연관이 있다. DDD 책을    비유가 정말 직관적이라 감탄했는데, 도서관은 듀이 십진분류법이라고 알고 있는 방식으로 책을 구분하고 빠른 열람을 위해 색인을 제공하고 더불어 빠른 검색을 돕는 사서가 서비스를 제공한다.

인간이 창조한 저장소(Repository 의미) 전형은 도서관 기저에 흐르는 발상과 크게 다르지 않을 것이라 생각한다.


코드 보관소 혹은 코드 저장소

2018년에 썼던 <소프트웨어를 모르는 대한민국 기업의 위기> 편에서는 Github을 설명할 때 코드 보관소라고 표현한 바 있다.

앞서 '보관 대상과 Metadata 유기적 저장소' 단락 제목으로  때도 '~ 유기적 보관소'라고 머릿속에서 말하고 있어서 저장소와 보관소 사이에서 단어 선택으로  초간 고민한  있다. 저장소가 아니라 보관소도 대체어 후보가   있으려나?


우리 회사에서 공개해서 유지하는 보관소(일단 이글에선 보관소로 쓴다)가 있다: https://github.com/bettercode-oss 

링크로 들어가면 Repository들이 나온다. 아무거나 클릭해보면 github을 쓰는 개발자들은 익숙한 Repository 구성이 펼쳐진다.

출처: https://github.com/bettercode-oss/better-ADMIN

여기서 내가 주목하고 싶은 부분은 앞서 언급한 저장소 혹은 보관소의 정의에 빗대어 github 형상을 보는 일이다.

Metadata와 보관 대상(files or derectory)을 묶어서 저장하는 데이터 구조


버전 관리용으로 만들어진 git에 협업 기능(social tools)을 부가해 만든 github은 협업 과정에서 만들어지는 산출물(artifact)은 일종의 메타데이터 성격을 띤다. github에 익숙한 개발자라면 아래 내용이 약간의 부연이 될 수 있다.

Issues 메뉴를 보면 이 코드가 왜 만들어졌는지 근거를 알 수 있다.

Pull requests 메뉴를 보면 누가 이들 작업 반영에 관여했는지 알 수 있다.

Discussions를 보면 코드 관련 논의 기록을 볼 수 있다.


코드 보관소를 영감으로 사용하기

사실 이 글은 '찜찜함' 해소를 위해 시작한 글이지만, 나를 여기로 이끈 욕망을 의식적으로 재해석할 수 있다. 무슨 말인고 하니 <모델 저장소의 의미와 구현>에서 다룬 모델링 저장소의 구현에 있어 대표적인 코드 저장소인 github이 상당한 참고가 될 수 있다는 점이다.


그런 점에서 위키피디아의 Archives and online databases 분류의 repository 개념 정의내에도 영감을 주는 문구들이 있다.

붉은색으로 칠한 내용들은 저장소(보관소)가 유용해지기 위해 갖춰야 하는 특성을 보여주는 듯하다.


지난 도메인 모델링 세미나 연재

1. 도메인 모델링? 비즈니스 모델링 어떻게 하나요?

2. 도메인 모델링 활용의 기본 아이디어

3. 데이터 제품 접근방식과 그 표현

4. 아키텍처는 의사소통에 관한 문제라서?

5. 아주 이상적인 아키텍처

6. 모델 저장소의 의미와 구현

7. 리팩토링을 내장할 수 있다면?

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari