가상면접사례로 배우는 대규모 시스템 설계 기초(5)
오늘 한 것
- 카카오 지원
- 월요일꺼 지원
- CJ역량검사
질문
- 시스템 설계 면접에서 설계안의 확실한 답이 존재한다. OX
X, 기업의 상황이나 트래픽 상황 등 따질게 많다.
- 데이터 전송 시 압축을 거치면 그만큼 오버헤드가 발생하므로 가급적 원본 그대로 보내는게 좋다
X, 압축하는게 더 빠르다. 데이터 비용이 더 크다.
- 샤딩과 다중화의 차이, 둘 다 DB를 부분으로 나눠서 쓴다는 점이 보이는데, 어떤 차이가 있나
주부 다중화 는 읽기성능의 확장, read의 고가용성, 쓰기는 여전함.
- 모든 다중화 DB가 동일한 데이터를 저장하는 것을 목표로 함. - 동기화 이슈 존재
샤딩은 쓰기 성능 및 저장공간 자체를 수직적 확장
- 시스템 트래픽에서 쓰기가 아닌 읽기 위주일 때, 성능을 최적화 할 수 있는 전략이 어떤 게 있을까요?
웹계층 : 로드밸런서를 가지고 웹서버 늘려서 요청 자체를 분산 주부 다중화 : 읽기 분산 slave DB에서의 인덱스 설계 최적화
- 캐시를 왜 사용하고, 캐시를 도임할 때 고려해야 될 점이 뭐가 있을까
캐시는 데이터베이스보다 접근속도가 더 빠르고, 서버 부하를 줄일 수 있기 때문에 사용한다.
만료 시간(TTL) : 데이터가 최신으로 유지되기 위해 캐시할 대상 선별 : 자주 조회되지만 변경이 드문 데이터 일관성 유지: 데이터 저장소의 원본이 변경되었을 때 캐시의 사본도 함께 갱신되어야 데이터 불일치 문제가 해결 가능
CDN의 개념과 하는 역할? 정적 콘텐츠란 뭘까
NoSQL이 바람직한 선택일 경우는 ? 사용예시
관계형DB는 자료를 테이블, 열, 칼럼으로 구분한다. 여러 테이블에 있는 관계를 가지고 join하여 사용한다.
NoSQL은 비정형이라 관계형이 아닌 경우, RDB는 스키마 변경이 비쌈 Join보다 데이터 직렬화, 역직렬화 요구되는 경우 키-값 저장소의 경우 캐시 메모리 저장소라 응답시간이 짧음(Disk 안씀)