Map Reducer 대용량 데이터 처리를 위한 분산 프로그래밍 모델이다. 예를 들어 데이터를 분산하여 저장한다면, 검색을 어떻게 할 수 있을까? 여러개의 Data Node들에 저장되어있는 데이터를 한 곳으로 가져와 분석/처리를 한다고 가정해볼때, 이 경우 작업(분석/처리)는 한곳에서 이루어지기 때문에 처리속도가 매우 느릴 것이다. 나누어 저장하는 것뿐 아니라 일을 나누어 처리해야 하기 때문에 의미가 없다. 100TB 데이터를 (초당 100mb를 처리하는) 컴퓨터 1대에서 처리한다면 약 12일이 걸린다. 그런데 1000대 컴퓨터에서 분산 처리한다면 17분 내 처리가 가능하다. Map Reducer는 데이터를 나누어 저장할 뿐만아니라 작업도 분산처리가 가능하도록 한다. 개념 Map과 Reduce를 합친 의..
Rating Limiting 개념 혼잡 제어(flow control)기법으로 traffic rate를 제한한다. 배경 server에서 처리할 수 있는 throughput이 정해져 있다. 하지만 과도한 트래픽이 들언다면 시스템 전체의 성능을 떨어뜨리게 되고 심한 경우 시스템이 다운될 수 있다. Rating Limiting은 이러한 현상에 대한 방어를 할 수 있다. Dos, DDos공격을 막기 위한 방법이 될 수 있다. DOS, Denial-Of-Service : 특정 네트워크 또는 리소스에 합법적인 유저가 접근하지 못하도록 방해하는 공격, 막대한 양의 트래픽을 집중하여 서버의 다운을 유도나 악의적인 요청을 통한 리소스 오작동 유도 DDOS, Distributed Denial-Of-Service : 분산 서..
Leader Election Leader Election 사용처 Subscription(구독) 시스템 ex)Netflix, Youtube premium, Notion, Watcha, etc... 유저별 구독 날짜는 payment system에 중요한 데이터지만, payment system 자체가 새로운 비즈니스이므로 직접 구축하지 않는다. ex) Shopify, paypal, Kakao pay, etc... 유저들의 구독을 처리하는 방법 Leader server는 주기적으로 DB에 payment가 필요한 user list를 요청 DB에서는 요청에 대한 응답을 Leader server에 반환 Leader server는 응답받은 user list를 Third Party에서 payment를 진행하도록 User..
Relational DB ACID ACID란 원자성, 일관성, 고립성, 지속성의 약자로 DB 트랜잭션이 안전하게 수행됨을 보장한다. 트랜잭션(Transaction) : DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 일련의 연산 1. Actomicity (원자성) 각 트랜잭션이 완전히 성공하거나 완전히 실패함을 보장한다. 이는 DB의 부분 업데이트를 방지한다. 입금 프로세스를 예로들자면 A가 B에게 입금을 하는데 A에서 돈이 빠져나오는 action, B에 돈을 입금하는 action이 모두 이루어 져야 원자성을 지킬 수 있으며, A에서 돈을 빼고 B에 입금이 되지 않는다면 그대로 돈이 유실되어버린다. 2. Consistency (일관성) 트랜잭션의 수행 전/후의 DB는 항상 ..
Leader Election main server(leader server)와 그 server의 replica들로 다중 server 환경을 구성했을 때 main server가 다운되면 main server는 자신을 대체할 서버(Leader server)를 찾을 신호를 보낸다. 이 신호를 받은 Copy server들은 main server를 대신할 leader server를 선정한다. 그 중 가장 latency와 throughput이 적은 server가 Leader server가 되어 일시적으로 main server의 Leadership을 가진다. 모든 request는 우선적으로 Leader로 선정된 서버로 간다. 어떤 server가 leader가 될지를 결정하는 알고리즘 매우 복잡하고, leader el..
Capacity Estimation 기획 단계에서 어떤 서비스를 만들고 어떠한 feature가 들어갈 지 생각해 보면, Capacity Estimation이 되어야 어느 정도 사이즈로 DB table을 만들고 Server의 크기, 분포도를 어느정도로 설정할 지 결정하는데 도움이 된다. 이는 scalable한 서비스를 만드는데 중요하다. Cache Repeat : 반복 호출이 필요한 Data Immutability : static Data Computation heavy : cost가 많은 결과물 길찾기 알고리즘을 실행한다고 가정 어떤 목적지에서 다른 목적지로 이동하는 최단거리 알고리즘의 시간 복잡도가 O(n²)라고 가정 해당 연산을 요청을 보낼때 마다 반복한다면 Server의 부담이 커진다. (같은 응답..
System Design시 고려 사항 Server - Client 통신 시 다음과 같은 예외사항이 발생할 수 있다. - Client가 Server를 찾지 못하는 경우 - Server가 다운되어 Client의 Request를 받지 못할 경우 - Client가 다운되어 Server의 Response가 소실된 경우 - Client가 crash된 경우 이러한 예외사항을 방어하기 위해 다음을 고려할 수 있다. Reliability : 신뢰성 Availability : 유용성 Low latency : 짧은 지연시간 Performance : 성능 Const effective : 지속성 상황별로 네트워크 프로토콜을 TCP또는 UDP를 사용할 수 있다. - TCP는 3way-handshake와 세그먼트를 통한 높은 신뢰..
CDN(Content Delivery Network) - 서버와 사용자 간 물리적인 거리를 줄여 콘텐츠의 지연을 최소화 하는 시스템이다. - main server가 한국의 서울에 위치하고 있고, 영국의 한 사용자가 이 서버를 사용하려고 할 경우를 생각해보자. - 이럴 경우 물리적으로 지구 반대편의 서버에 까지 request를 보내고, 다시 지구 반대편을 돌아 response를 받는데 이는 물리적인 거리가 먼 만큼 지연 시간도 길어진다. - 또한 main server에 모든 사용자가 접근하려고 할 경우 막대한 트래픽이 발생하여 서버에 부하를 줄 리스크도 있다. - 이러한 단점을 CDN으로 보완할 수 있다. - CDN을 사용할 경우 아래의 그림과 같이 동작하게 된다. - 글로벌 서비스는 이러한 CDN방식을 ..