수요코딩회 Mini-Redis의 구현에 필요한 학습이나 기술적 선택을 정리한 문서입니다.
실제로 채택되진 않더라도 생각하는 과정에서 더 잘 이해할 수 있다고 생각합니다.
꼭 Redis 뿐만 아니라 In-Memory Database 전반에 해당되는 내용도 포함되어있어요.
거의 대부분의 기술은 트레이드 오프(Trade-off)입니다. 어떤 선택이 어떤 장/단점을 가지는지 생각하면서 찾아보세요.
AI를 활용하되, 최대한 공식문서나 공신력 있는 자료를 찾아 올바른 내용인지 검증하세요.
- 메모리 계층 구조에서 In-Memory DB는 어디에 위치하는가?
- Disk 기반 DB와 비교했을 때 장점 2가지, 단점 1가지 정리
- 어떤 상황에서 In-Memory DB를 사용하는 것이 적절한가?
- 트레이드오프 관계를 설명할 수 있어야 함.
- Redis는 왜 싱글 스레드 구조를 선택했는가?
- 어떤 기능을 제공하는가? (key-value 외 최소 2개)
- TTL은 어떻게 처리되는가? (관련 공식문서)
- Redis의 싱글 스레드 채택 이유, 구조와 동작 방식에 대해 간단하게 설명할 수 있어야 함.
- 여러 기술 블로그/유튜브 등 매체를 찾아보고 실제 서비스에서 어떤 용도로 쓰이는지 정리 (최대한 다른 요구사항을 처리하는 예시를 찾아보세요.)
- 키-값 저장
- 키로 값 조회
- 키 삭제
- TTL 설정 가능
- TTL이 지난 값은 조회 시 무효 처리
- 외부 프로그램이 API로 접근 가능
- 단위/통합 테스트를 통해서 검증
- 여러 엣지 케이스를 다루고 있는가?
- 사용 여부의 성능 차이를 비교
- 시연에서 핵심 구현/이유/결과를 잘 보여주기
- README에서 시연이나 테스트를 재현 가능한가?
- 모든 팀원이 핵심 로직의 구현/동작 방식/필요성을 이해하기
- 시간 내에 동작하는 프로젝트를 구현
- 협업을 통해서 높은 효율을 보여주기
다음 요구사항을 고려하여 선택하고 평가하기. 이 선택으로 인한 트레이드 오프(장/단점을 설명할 수 있어야 함.)
- 하루 안에 끝낼 수 있는가
- 구조가 간단한가
- 협업에 유리한가 (모듈화)
- 테스트/시현이 가능한가
- 핵심 로직을 설명 가능한가
- 어떤 API를 사용할 것인가? (TCP,UDP,HTTP 등)
- 어떤 프레임워크를 사용할 것인가? 또는 사용하지 않는다면 그 이유는? (언어는 파이썬 고정)
- 동시성 문제를 어떻게 해결할 것인가?
- key-value 기능은 어떻게 구현할 것인가? (해시, 데이터 저장 방식)
- 추가/삭제/조회 기능은 어떻게 구현할 것인가?
- TTL 기능은 어떻게 구현할 것인가?
- 시연 시 어떤 방식으로 사용 전/후 성능을 비교할 것인가?
- 어떤 방식으로 테스트하고 검증할 것인가? 그 검증이 올바른지는 어떻게 확인하는가?
- 업무 분담은 어떤 식으로 진행할 것인가?