Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1_rimrim990 #94

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions part2/Ch01. 근접성 서비스/rimrim990.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Ch01. 근접성 서비스

### 위도와 경로 정보로 주변 사업장 정보를 검색해야 한다. 특정 반경으로 그린 원 안에 놓인 사업장을 전부 검색하는 방법을 사용한다면 어떤 단점이 존재하는가?

* 앞서 언급한 방식을 개선하기 위해 지리 정보 인덱스를 생성해야 한다. 어떤 방법이 존재하는지 간단히 설명하시오.
* 앞서 언급한 방식으로 인덱스를 생성한다면 어떤 형태로 저장소에 저장할 수 있을지 설명하시오.

<details>
<summary><h4>해설</h4></summary>

> 위도와 경로 정보를 주변 사업장 정보를 검색해야 한다. 특정 반경으로 그린 원 안에 놓인 사업장을 전부 검색하는 방법을 사용한다면 어떤 단점이 존재하는가?
* 2차원 데이터를 저장하고 가져온다면, 데이터의 양이 상당할 것이다. 또한 캐시를 적용한다면 좋은 효율을 얻을 수 없을 것이다.

> 앞서 언급한 방식을 개선하기 위해 지리 정보 인덱스를 생성해야 한다. 어떤 방법이 존재하는지 간단히 설명하시오.
* 지도를 작은 영역으로 분할하여 인덱스를 생성할 수 있다. 이때 영역의 크기를 균등하게 나눈다면, 영역에 속하는 사업장의 분포가 균등하지 않을 것이다.
따라서 특정 영역에 속한 사업장의 수가 일정 수 이하가 될때까지 영역을 분할해야 한다.

> 앞서 언급한 방식으로 인덱스를 생성한다면 어떤 형태로 저장소에 저장할 수 있을지 설명하시오.
* 각 영역을 노드에 대응시켜 트리를 생성해 메모리에 저장할 수 있다. 루트 노드가 전체 세계지도에 대응되며, 모든 노드는 4개의 자식 노드를 갖게 된다.
인덱스 트리는 서버가 시작될 때 구축된다.
</details>

### 블루/그린 배포 전략에 대해 설명하시오.

* 메모리 상에 쿼드트리를 저장하는 서버를 블루/그린 방식으로 배포한다면, 어떤 문제가 발생할 수 있는가?
* 운영 중 사업장 정보가 추가/삭제된다면 여러 서버에 생성된 쿼드 트리를 갱신해야 한다. 어떻게 갱신할 수 있는가?

<details>
<summary><h4>해설</h4></summary>

> 블루/그린 배포 전략에 대해 설명하시오.
* 블루 그린 배포 전략은 무중단 배포 전략 중 하나이다. 구버전의 서버가 전부 실행 중인 상태에서, 새버전의 서버를 생성한다. 새버전의 생성이 모두 완료되면 구버전으로 향하던 트래픽을 새버전으로 전환한다.

> 메모리 상에 쿼드트리를 저장하는 서버를 블루/그린 방식으로 배포한다면, 어떤 문제가 발생할 수 있는가?
* 메모리 상에 쿼드트리를 저장할 경우, 서버가 시작될 때 쿼드트리가 생성되어야 하며 이를 위해 데이터베이스에서 많은 양의 데이터를 읽어와야 한다. 만약 블루 그린 배포 방식을 적용한다면, 그린 서버가 생성됨과 동시에 데이터베이스에 접근해 시스템에 부하가 생길 수 있다.

> 운영 중 사업장 정보가 추가/삭제된다면 여러 서버에 생성된 쿼드 트리를 갱신해야 한다. 어떻게 갱신할 수 있는가?
* 다중 스레드 환경에서 쿼드 트리를 실시간으로 갱신한다면 락 매커니즘을 사용해야 한다.
그러나 일반적으로 사업자 정보는 실시간으로 갱신될 필요가 없다. 따라서 사용자 접근이 가장 적은 시간에 점진적으로 각 서버의 쿼드 트리를 갱신할 수 있다.
</details>