티스토리 뷰

올해 3월에 끝났던 독서 스터디

할 때마다 대강 기억에 남았던 것들 정리해서 저장만 해놨던 건데 드디어 정리한다

가상 면접 사례로 배우는 대규모 시스템 설계 기초 / w. 알렉스 쉬

 

 

1장 사용자 수에 따른 규모 확장성

- 로드밸런서 : 부하 분산 집합에 속한 웹 서버들에게 트래픽 부하를 고르게 분산하는 역할(6p)

- CDN(콘텐츠 전송 네트워크) : 이미지 비디오 CSS JavaScript 파일 등을 캐시. 정적 콘텐츠는 CDN을 통해 서비스

- 무상태(stateless) 웹 계층(17p)

- 메세지 큐 : 메시지의 무손실 즉, 메시지 큐에 보관된 메시지는 소비자가 꺼낼 때까지 안전히 보관된다는 특성을 보장하는 비동기 통신을 지원하는 컴포넌트

- 샤딩 : 대규모 데이터베이스를 샤드라고 부르는 작은 단위로 분할하는 기술을 일컫음

모든 샤드는 같은 스키마를 쓰지만 샤드에 보관되는 데이터 사이에는 중복이 없다

 

# 대략적으로만 알고 있던 개념들은 뭔가 더 확실히 짚고 넘어갈 수 있었고, 나는 아예 처음 보는 단어와 개념들도 있는데 다른 팀에서는 이미 그 기술을 사용하기도 한다는 걸 듣고 놀랬다.

 

 

 

2장 개략적인 규모 추정
# 메모리는 빠르지만 디스크는 아직도 느리다.

3장 시스템 설계 면접 공략법

# 면접 공략법 부분은 면접 보게 될 일이 있으면 진짜 도움 될 거 같다 팁 ㄳㄳ

 

 


4장 처리율 제한 장치의 설계
56p~
- 토큰 버킷
- 누출 버킷
- 고정 윈도 카운터
- 이동 윈도 로그
- 이동 윈도 카운터

 

 

 

5장 안정 해시 설계
# 안정 해시의 장점은 서버가 추가되거나 삭제될 때 재배치되는 키의 수가 최소화되고, 데이터가 보다 균등하게 분포하게 되므로 수평적 규모 확장성을 달성하기 쉽다

 

 


6장 키-값 저장소 설계

7장 분산 시스템을 위한 유일 ID 생성기 설계

# 어려우면서도 되게 재미있었던 파트.  백터 시계 같은 새로운 개념 념도 알게 되었고, 특히 서버 장애 처리하는 부분(105p~)에서 서버들끼리는 이런 식으로 통신을 해서 감지를 하는구나~ 를 겉햝기로라도 이해할 수 있었던 거 같다.

유일 ID생성기 같은 것도 회사에서는 오토인크리먼트만 사용해서 이것만 알았는데, 이외에도 다양한 방법을 알게 되는 계기가 된 거 같다.

 

 

8장 : URL 단축기 설계

9장 : 웹 크롤러 설계

- 규모 확장성 / 안정성(웹은 함정으로 가득!) / 예절 / 확장성

- 웹 크롤러 흐름(149p)

- 깊이 우선 탐색법 DFS(Depth first search) vs 너비 우선 탐색법 BFS(Breath First search)

          ㄴ웹 크롤러는 보통 BFS 사용 (150p)

10장 : 알림 시스템 설계

- 메세지 큐(message queue) : 시스템 컴포넌트 간 의존성을 제거하기 위해 사용.

-데이터 손실 방지(175p)

 

# 회사의 주된 기술이 크롤링 분야이기 때문에 재미있게 봤던 거 같다. 대략적인 내용을 봤으니 회사에서는 어떤 식으로 하고 있는지 궁금해지기도 했고.

알람 시스템 부분도 회사에서 메일이든 sms든 텔레그램이든 서비스를 하고 있는 부분이라서 흥미로웠다. 그리고 전부터 느낀거지만 책에서 소개해주는 기술들은 우리 쪽에서 많이 안 하고 있는 것 같아서 좀 아쉬운 느낌도 든다.

 

 


11장 뉴스 피드 시스템 설계

- 팬아웃 : 어떤 사용자의 새 포스팅을 그 사용자와 친구 관계에 있는 모든 사용자에게 전달하는 과정 (192p)

12장 채팅 시스템 설계
- 채팅 서비스와의 접속에는 keep-alive 헤더를 사용하면 효율적

         ㄴ클라이언트와 서버 사이의 연결을 끊지 않고 계속 유지할 수 있기 때문

         ㄴTCP 접속 좌정에서 발생하는 핸드셰이크 횟수도 줄일 수 있음
- 폴링 : 클라이언트가 주지적으로 서버에게 새 메시지가 잇느냐고 물어보는 방법
         ㄴ답해줄 메세지가 없는 경우에는 서버 자원이 불필요하게 낭비된다는 문제점이 있음

 

#학원에 다닐 때 소켓을 이용해 간단한 채팅 프로그램을 만들었던 적이 있었는데, 그때는 따라 하기에 바쁘고 아무 생각 없이 코드만 쳤던걸 이렇게 개념적인 내용이랑 사용 이유 같은 걸 풀어서 보니까 뭔가 이제야 이해 가는 느낌이 들었다
나중에 시간이 괜찮으면 다시 한번 만들어 보고 싶다
 

 


13장 검색어 자동완성 시스템
- 트라이 자료구조 

- 데이터 수집 서비스

- 질의 서비스
14장 유튜브 설계
-  넷플릭스나 페이스북 같은 큰 회사도 모든 것을 스스로 구축하지는 않는다

 

# 기대했던건 어떤 방식으로 추천 알고리즘이 뜨는지와 같은 내용이었는데, 영상 인코딩이나 스트리밍 절차 같은 내용이 주된 내용이라 흥미 뚝 떨어졌음


 

15장 구글 드라이브 설계
- 시장주도 기업들은 저장소로 아마존 S3을 사용

          ㄴS3(Simple Storage Service)은 업계 최고 수준의 규모 확장성, 가용성, 보안 성능을 제공하는 객체 저장소 서비스

- 블록 저장소 서버 : 클라우드 환경에서 데이터 파일을 저장하는 기술. 이 저장소는 파일을 여러 개의 블록으로 나눠 저장하며 각 블록에는 고유한 해시값이 할당됨다 이 해시값은 메타데이터 DB에 저장됨

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday