기능 개발을 위한 데이터 보존 가이드라인
GitLab v19.1데이터 보존은 GitLab의 기능 개발에서 중요한 측면입니다. 시스템 성능: 시간 기반 데이터 구성을 통해 더 나은 쿼리 최적화와 효율적인 데이터 접근 패턴이 가능해지며, 응답 시간 단축 및 시스템 확장성 향상으로 이어집니다.
개요#
데이터 보존은 GitLab의 기능 개발에서 중요한 측면입니다. 기능을 구축하고 유지 관리할 때, 수집하고 저장하는 데이터의 생명주기를 고려해야 합니다. 이 문서는 기능 개발 초기부터 데이터 보존 고려사항을 통합하기 위한 가이드라인을 설명합니다.
데이터 보존이 중요한 이유#
-
시스템 성능: 시간 기반 데이터 구성을 통해 더 나은 쿼리 최적화와 효율적인 데이터 접근 패턴이 가능해지며, 응답 시간 단축 및 시스템 확장성 향상으로 이어집니다.
-
인프라 비용: 데이터 생명주기 정책을 통한 전략적 스토리지 관리는 기본 스토리지, 백업, 재해 복구 시스템에 대한 인프라 비용을 절감합니다.
-
엔지니어링 효율성: 처음부터 데이터 보존을 고려하여 기능을 설계하면 명확한 데이터 생명주기를 확립하고, 기술적 부채를 줄이며, 데이터 마이그레이션을 빠르게 처리함으로써 개발이 더욱 빠르고 안정적으로 이루어집니다.
기능 개발 가이드라인#
1. 초기 계획#
새로운 기능을 설계할 때, 초기 계획 단계에서 데이터 보존 요구사항을 고려하세요:
-
저장되는 데이터의 유형을 문서화하세요. 이것이 사용자 대면 데이터인가요? 내부적으로 처리 효율성을 높이기 위해 생성된 데이터인가요? 파생/캐시 데이터인가요?
-
각 데이터 유형에 대한 비즈니스 목적과 필요한 보존 기간을 식별하세요.
-
오래된 데이터에 대한 제품 정당성과 고객 사용 패턴을 정의하세요. 사람들이 새로운 데이터와 비교하여 오래된 데이터와 어떻게 상호작용하나요? 시간이 지남에 따라 데이터의 가치는 어떻게 변화하나요?
-
데이터 보존에 영향을 줄 수 있는 규정 요구사항(예: 개인 식별 정보)을 고려하세요.
-
데이터 삭제 또는 보관 메커니즘을 계획하세요.
2. 데이터 생명주기를 고려한 설계#
데이터가 영구적이지 않다는 이해를 바탕으로 기능을 설계해야 합니다:
-
데이터의 무한 가용성에 대한 가정을 피하세요.
-
누락되거나 보관된 데이터에 대한 점진적인 처리를 구현하세요.
-
데이터 가용 기간을 명확히 전달하도록 사용자 인터페이스를 설계하세요.
-
장기 컨텍스트에서 조회하도록 최적화된 장기 보관용 데이터 구조를 설계하세요.
-
특히 온디맨드로 재생성할 수 있는 파생/캐시 데이터에는 적절한 경우 "유효 기간(time to live, TTL)" 메커니즘 구현을 고려하세요.
3. 문서화 권장 사항#
각 기능 구현에는 다음 내용이 포함되어야 합니다:
-
데이터 보존 기간(GitLab.com 기준 및 기본값이 있는 경우)과 비즈니스 논리/정당성에 대한 명확한 문서
-
데이터 삭제/보관 메커니즘에 대한 설명.
-
데이터 삭제가 종속 기능에 미치는 영향 분석.
구현 체크리스트#
새로운 기능에 대한 머지 리퀘스트를 제출하기 전에:
-
데이터 보존 요구사항을 문서화하세요.
-
데이터 삭제를 고려하여 데이터 모델을 설계하세요.
-
데이터 삭제/보관 메커니즘을 구현하세요.
-
누락/보관 데이터에 대한 기능 동작을 테스트하세요.
-
사용자 문서에 보존 기간을 포함하세요.
-
종속 기능에 대한 영향을 고려하세요.
-
백업/복원 및 내보내기/가져오기에 대한 영향을 고려하세요.
-
복제(예: Geo)에 대한 영향을 고려하세요.