NW-study / system-design-interview

8 stars 0 forks source link

[Chapter 01] Q&A #3

Open janeljs opened 2 years ago

janeljs commented 2 years ago

[Chapter 01] 사용자 수에 따른 규모 확장성

janeljs commented 2 years ago

지선

KKambi commented 2 years ago

한비

느낌


비관계형 데이터베이스의 종류

aws - NoSQL이란?

  1. key-value store
  2. graph store (위키백과)
    • node + edge + property
    • NoSQL이지만 엔티티(노드) 간의 관계를 중시해서 엣지로 표현
    • 데이터 간의 관계를 신속하게 쿼리해야 할 때 (ex. SNS, 추천 엔진, 이상 탐지 등의 사용 사례에 유용)
    • index-free adjacency = enforces the nodes to have direct physical RAM addresses and physically point to other adjacent nodes
    • 462px-GraphDatabase_PropertyGraph
  3. column store (wide-column store, column family oriented) (위키백과) (블로그)
    • column-oriented랑 다르다!
    • key:value:mutliple columns (two-dimensional key–value store)
    • column-family-oriented
  4. document store (document-oriented)
    • value에 JSON과 유사한 형식의 문서가 저장될 때
    • 어플리케이션에서 사용하는 것과 동일한 문서 모델 형식 사용 가능
    • 관계보다 데이터 자체, 관계를 내장 객체로 표현 가능, 유연한 스키마


데이터(JSON, YAML, XML 등) 직렬화의 정확한 의미

자료구조나 객체를 저장할 수 있거나, 재구성 & 전송할 수 있는 형식으로 변환하는 과정

JSON으로 직렬화한다 = 네트워크를 통해 데이터를 전송하기 위해 범용적인 데이터 포맷으로 변환한다.

Java에서의 직렬화 = 다른 외부 자바 시스템에서 사용하기 위함


왜 NoSQL에서 낮은 latency를 자랑할 수 있는지?

정확히 설명한 글은 찾지 못했지만, RDB에 비해 조회가 간단하다보니 레이턴시가 짧다고 하는 것 같다. NoSQL의 장점으로 낮은 지연시간을 꼽은 글들은 많았다.

zziri commented 2 years ago

지훈

kihyun-yang commented 2 years ago

기현

meloncha commented 2 years ago

민석

로드밸런서의 동작 방식

1. L4 로드 밸런싱 : L4 계층에서 동작하는 로드밸런서

네트워크 계층이나 트랜스포트 계층의 정보를 바탕으로 로드를 분산. IP주소, 포트번호, MAC주소, 전송 프로토콜 등에 따라 트래픽을 나누고 분산처리할 수 있다. CLB(Connection Load Balancer) or SLB(Session Load Balancer) 라고 부르기도 한다. 라운드 로빈(Round Robin) : 세션을 각 서버에 순차적으로 맺어주는 방식. 단순히 순서에 따라 세션을 할당하므로 경우에 따라 경로별로 같은 처리량이 보장되지 않는다. 가중치 및 비율 할당 방식 : 서버마다 비율을 설정해두고 해당 비율만큼 세션을 맺어주는 방식 최소 연결(Least Connection)기반 : 가장 적은 세션을 가진 서버로 트래픽을 보내는 방식 (가장 선호) 응답 시간(Response Time)기반 : 가장 빠른 응답 시간을 보내는 서버로 트래픽을 우선 보내주는 방식. 각 서버들이 가용한 리소스와 성능, 그리고 처리 중인 데이터 양등이 다를 경우 적합한 방식 해시(Hash)기반 : 특정 클라이언트는 특정 서버로만 할당시키는 방식. 경로가 보장되며 접속자 수가 많을수록 분산 및 효율이 뛰어남 대역폭(Bandwidth) 기반 : 서버들과의 대역폭을 고려하여 트래픽을 분산하는 방식

2. L7 로드밸런싱 : L4 로드밸런서의 기능을 포함하며 OSI 7계층의 프로토콜 (HTTP, SMTP, FTP등)을 바탕으로도 분산 처리가 가능

ALB(Application Load Balancer) 라고 부른다. L7 위에서 동작하기 때문에 IP, Port 이외에도 URI, Payload, Http Header, Cookie 등으로 부하를 분산한다. 콘텐츠 기반 스위칭이라고도 한다.

L4 로드밸런서는 단지 부하를 분산시키는 것이라면, L7 로드 밸런서는 요청의 세부적인 사항을 두고 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해서 가볍고 작은 단위로 여러 개의 서비스를 운영하고 요청을 각각의 서버에 분산할 수 있다. L7 로드 밸런서는 데이터를 분석해서 처리가 가능하기 때문에 악의적이거나 비정상적인 컨텐츠를 감지해 보안 지점을 구축할 수 있다.

L7가 L4를 포함하는데 두 개가 나뉘어 있는 이유?

L4 부터는 IP주소와 Port 번호를 활용하여 라우팅이 가능하여 자주 사용한다.

L7 은 소프트웨어를 사용해야 하므로 비용이 더 많이 들어 L7 수준에서의 로드 밸런싱이 필요한경우 사용하고 그게 아니면 비용이 저렴한 L4를 사용한다.

데이터베이스 다중화

→ 주 데이터베이스가 다중화되는 것 : Multi-Master

MMM (Multi-Master Replication Manager)

multi master replication manager

캐시 계층

캐시의 종류

메시지 큐

메시지 큐를 사용하는 경우

travelbeeee commented 2 years ago

현석

Question

easyfordev commented 2 years ago

이지

Comment + 약간의 설명

Question

meloncha commented 2 years ago

replication