핵심요약
이 글은 '꿀템 피드'라는 신규 서비스(G-world)를 기획하고 데이터베이스를 설계하는 과정을 다룹니다. 개발 초기 단계의 네이밍, 확장성을 고려한 테이블 설계, 그리고 사내 시스템과의 연동 고민 등 지속 가능한 개발을 위한 구체적인 설계 과정을 설명합니다.
꿀템 피드 서비스 개발 여정: 지속 가능한 설계를 위한 데이터베이스 구축
신규 서비스 G-world의 탄생 배경
- '꿀템 피드' 서비스는 임직원 추천 상품인 **챗GBT(Gmarket Best iTem)**를 고객에게 확장하고, 고객 참여형 커뮤니티 기능을 도입하려는 니즈에서 시작되었습니다.
- 개발자는 신규 서비스 론칭 경험 부족에도 불구하고, 사이트에 새로운 활기를 불어넣을 기회로 인식하며 개발 여정을 시작했습니다.
- 이 글은 신규 서비스 개발 시 마주하는 막막함을 줄이고 시행착오를 감소시키는 데 중점을 둡니다.
확장성을 고려한 G-world 데이터베이스 설계 및 네이밍
- 핵심 개념 네이밍: 직관적 이해와 기존 개념과의 혼동 방지를 위해
Attraction(공유 게시판),Ride(게시글/컨텐츠),Passenger(작성 회원) 개념을 정의하고, 프로젝트명을G-world로 명명했습니다. - 테이블 및 컬럼명 규칙:
Attraction은 사내 메타 데이터 검색 후**ATRC**로,Ride는 그대로,Passenger는 항공업계 약어**PAX**로 축약하여 컬럼명을 설계했습니다. - DBMS 및 정규화: 데이터 정합성, 성능, 확장성을 고려하여 Oracle을 DBMS로 선정하고, 데이터 중복 최소화 및 구조 확장 용이성을 위해 테이블을 정규화했습니다.
Passenger테이블 설계: G마켓, 옥션, 관리자 계정의 중복 문제 해결을 위해user_id,member_identifier,site_type속성을 활용하여 논리적 관계를 맺고,Passenger테이블의 PK만으로 유일한 탑승객을 식별하며 개인정보는 저장하지 않도록 설계했습니다.- 공통 컬럼 관리:
Insert Operator,Update Operator는 시스템 정보를 저장하도록 별도 공통 컬럼을 정의하고, 고객 개인정보를 포함하지 않도록 모든 테이블에 적용했습니다.
초기 기획 검토 및 POC 확정
- 팀원들과 함께 Attraction의 노출 및 속성, Ride의 다양한 업로드 형태(구매 내역 기반 등), Linkrew 연동 등 서비스 세부 기능을 구상했습니다.
Content Quality관리 방안으로 이용약관 동의, 동일 상품Ride묶음, 선 게시 후 모니터링 및 신고 기능 등을 논의하고 개발 필요성을 인지했습니다.- 논리적/물리적 ERD를 구성하고, 사내 Meta 데이터 관리 시스템을 통해
Attraction이라는 새로운 주제영역을 신청하여 테이블을 생성했습니다. - 현업에서는 성능과 유지보수를 위해 물리적인 외래키(FK)를 정의하지 않고, Meta 시스템을 통해 데이터 정합성을 보장하는 방식을 채택했습니다.
- 초기 기획 검토 후 빅스마일데이(BSD) POC 적용이 확정되었고, 짧은 개발 기간에도 불구하고 팀원들의 협업으로 데이터베이스 구축이 성공적으로 완료되었습니다.