근접성 서비스는 음식점, 호텔, 극장 등 현재 위치에서 가까운 시설을 찾는데 이용되는 서비스임.
요구사항 및 설계 범위
기능 요구사항
- 사용자의 위치와 검색 반경 정보에 매치되는 사업장 목록을 반환
- 반경 0.5 km ~ 20 km 단위를 기준으로 반환
- 사업장 소유주가 사업장 정보를 추가, 삭제, 갱신할 수 있도록 해야하나, 그 정보가 검색 결과에 실시간으로 반영될 필요는 없음.
- 고객은 사업장의 상세 정보를 살필 수 있어야함.
[1단계] 시스템 사용량 추정
가입한 사용자 : 5,000만명 가정
한 사용자가 하루에 서비스를 이용하는 평균 횟수 10회 이용한다고 가정
DAU가 10%라고 가정
일 평균 총 사용량 = 5000만번 이용
- 평균 QPS : ****약 500 (대략 하루를 10만초 기준으로 잡고 계산)
- 시스템에서 예상되는 지연시간 :
- 읽기 요청 : 초당 500, 400ms 이내
- 상세 정보 검색 : 전체 읽기 대비 1/5 로 정도로 생각했을때, 초당 100 요청, 400ms
- 쓰기 요청 : 초당 0.5, 2000ms
- 읽기/쓰기 비율
- 1000 : 1 정도로 가정
- 트래픽 추정치
- 전체 트래픽의 60%가 피크 시간대(약 4시간, 11시30분 ~ 1시 30분, 5시~7시) 동안에 발생한다고 가정
- 읽기 기준 피크 시간대 총 요청 수 = 3000만, 4시간 = 14,400 초
- 피크 시간대 평균 ****QPS = 약 2,083
- 쓰기
- 쓰기는 읽기에 비해 1/1000 수준으로 평균 QPS 계산 했을 때 약 0.5 QPS 예상
- 스토리지 추정치
- 스토리지는 MYSQL 사용
- 사업장 데이터 하나에 약 2,500바이트
- 사업장 수는 가입한 사용자의 1/10인 500만건 = 약 12.5GB ~ 13GB
- https://eiec.kdi.re.kr/policy/materialView.do?num=248141&pg=&pp=&topic=L
필드명 |
데이터 타입 |
크기 (바이트) |
사업장 아이디 |
BIGINT |
8 |
주소 |
VARCHAR(255) |
1020 |
위도 |
DECIMAL(9,6) |
5 |
경도 |
DECIMAL(9,6) |
5 |
나라 |
VARCHAR(50) |
200 |
사업장 유형 정보 |
VARCHAR(100) |
400 |
사업장 이름 |
VARCHAR(100) |
400 |
사업장 설명 |
VARCHAR(100) |
400 |
영업 시작시간 |
TIME |
3 |
영업 종료시간 |
TIME |
3 |
합계 |
|
2,444 |
- 메모리 추정치
- 캐시되는 데이터 유형
- 위경도 및 사업장 아이디는 GeoSpatial 형태로 저장