- 일반적으로 관계형 데이터베이스의 Primary Key는 atomic하고 순차적으로 증가하는 auto-increment 기능을 제공합니다. 이 과제에서는 해당 기능을 애플리케이션 레벨에서 직접 구현하는 것이 목표입니다.
- Thread-safe한 방식으로 순차적으로 증가하는 정수값을 생성하는
getNextId 함수를 구현하세요.
function getNextId() => long
- 2에서 작성한
getNextId를 이용하여 다음 요구사항을 만족하는 IdGenerator 클래스를 구현하세요:
- 여러 서버에서 동시에 실행되어도 충돌없이 유일한 ID를 생성할 수 있어야 합니다
- ID는 항상 양의 정수여야 합니다
- ID는 순차적으로 증가해야 합니다
- 시스템 재시작 시에도 마지막으로 생성된 ID 이후부터 생성되어야 합니다
- 3에서 작성한
IdGenerator에 대한 테스트 코드를 요구사항 및 기능의 스펙을 최대한 커버 가능하게 구현하고, 구현 및 테스트 내역에 대한 보고서를 자유 형식으로 제출하세요. 해당 보고서는 과제 합격 시 발표자료로써 사용됩니다..
- 프로그래밍 언어 및 테스트 프레임워크에 제약은 없습니다.
- 외부 라이브러리의 사용은 최소한으로 하는 것을 권장합니다.
- 제한 시간은 1주일입니다.
- 코드 및 보고서를 압축하여 제출합니다. (보고서는 pdf 확장자로 작성하여 제출하세요.)