본문 바로가기

server/system design

(17)
[25 Computer Papers] 4. Cassandra - A Decentralized Structured Storage System https://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf  1 introductionCassandra는 확장성과 가용성을 달성하기 위해 잘 알려진 기술을 종합적으로 사용합니다. Cassandra는 페이스북의 편지함 검색 기능의 스토리지 요구 사항을 충족하도록 설계되었습니다.-매우 높은 쓰기 처리량, 하루 수십억 건의 쓰기 작업-사용자 수에 따른 확장성  2 Related Work성능, 가용성, 내구성을 위한 데이터 분산은 파일 시스템과 데이터베이스 커뮤니티에서 널리 연구되어 왔습니다. Cassandra에 영향을 준 기존 시스템에 대해 이야기해 보겠습니다.-Ficus와 Coda는 일관성을 희생하는 대신 고가용성을 위해 파일을 복..
레디스 트러블 슈팅 메모리 문제레디스 명령어 중 메모리 사용량을 확인 할수 있는 memory 명령어가 있다. 기존에도 info 명령어로 확인할수 있지만, memroy 명령어를 통해 더 자세히 확인 할수 있다.https://redis.io/docs/latest/commands/memory-usage/https://redis.io/docs/latest/commands/memory-stats/  127.0.0.1:6379> meory help(error) ERR unknown command 'meory', with args beginning with: 'help'127.0.0.1:6379> memory help 1) MEMORY [ [value] [opt] ...]. Subcommands are: 2) DOCTOR 3) ..
[25 Computer Papers] 3. Bigtable: A Distributed Storage System for Structured Data https://storage.googleapis.com/gweb-research2023-media/pubtools/4443.pdf   IntroductionBigtable은 대규모(페타바이트 단위) 구조화된 데이터를 관리하기 위한 분산형 스토리지 시스템입니다.웹 인덱싱, Google 어스, Google 파이낸스 등 Google의 많은 프로젝트에서 Bigtable에 데이터를 저장하고 있습니다. Bigtable은 광범위한 적용성, 확장성, 고성능, 고가용성 등 여러 가지 목표를 달성했습니다.여러 면에서 Bigtable은 데이터베이스와 유사하지만 완전한 관계형 데이터 모델을 지원하지는 않습니다. 클라이언트에 데이터 레이아웃과 형식에 대한 동적 제어를 지원하는 간단한 데이터 모델을 제공합니다.빅테이블 스키마 매..
[25 Computer Papers] 2. Dynamo: Amazon’s Highly Available key-value Store https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf  요약key-value 스토어가 필요해서 그냥 구현함 (조인 같은 기능이 필요없었음)시스템은 분산되어야 하며 하드웨어에 제약을 받지 않으면서 영속성은 필요했음해시링에 구현 전략 설명서동시 업데이트시 데이터 충돌을 피하기 위해 낙관적락으로 구현  ABSTRACTAmazon의 핵심 서비스 중 일부가 '상시 가동'을 제공하기 위해 사용하는 고가용성 키-값 스토리지 시스템인 Dynamo의 설계와 구현에 대해 설명한다. 이러한 수준의 가용성을 달성하기 위해 Dynamo는 특정 장애 시나리오에서 일관성을 희생한다.  1 introuductionAmazon은 전 세계 여러 데이터 센터에 위치한..
[25 Computer Papers] 1. The Google File System https://static.googleusercontent.com/media/research.google.com/ko//archive/gfs-sosp2003.pdf요약GFS는 엄청나게 많은 데이터를 보유해야 하는 구글의 핵심 데이터 스토리지와 구글 검색 엔진을 위해 최적화.파일들은 64MB로 고정된 청크로 데이터가 추가되거나 읽기 위주의 작업이며, 데이터 유실에 대한 설계를 중심으로 레이턴시가 길더라도 높은 스루풋에 중점을 두었다.  1. Introduction첫째, 파일 시스템은 저렴한 비용으로 구축된 수백, 수천 대의 스토리지 머신으로 구성되며 비슷한 수의 클라이언트 머신에서 액세스 된다. 일부 구성 요소는 언제든 작동하지 않을 수 있고, 일부는 현재 장애가 발생해도 복구되지 않을 수 있어 지속적인 ..
쿠폰발급 서비스 구축하기 (실험용) 문제!! 쿠폰 발급 시스템을 만들어 볼 예정입니다. 쿠폰은 100개이며 선착순으로 발급됩니다. 대용량의 요청을 견디기 위해선 어떤 점을 고려해서 해야 하는가? 1. 10000개의 요청을 견디는 서비스 구조를 만들자!! 우선 하나의 ec2를 올려서 LB에 물려서 통신을 확인하자!! (Hello, world!) LB 로그에서 통신 10개 성공 확인 성공 확인 (200) 이번엔 10000개를 테스트해보자!! 에러율 83%!!!! 하나의 서버로는 일반 요청(DB 요청 커넥션 없음)부터 에러가 발생한다. gunicorn 로그를 봤더니 별다른 에러가 없다. 그냥 통신 자체가 서버까지 도달하지 못했다. 그러면 ec2를 LB(로드 밸런스)에 더 추가해보자. (target group에 추가하는 게 건강상 좋습니다.) e..
9. netflix 1. 기능 요구 사항 원활하게 함께 작동하여 끝없이 고객에게 만족스러운 비디오를 제공해야 합니다. 모든 디바이스에서 동영상 재생 세계 여러 나라에서 같은 동영상 재생 다양한 사용자에게 개인화된 비디오를 추천 2. 추정 및 제약 사항 애플리케이션에 등록된 활성 사용자 수 = 1억 1분마다 업로드되는 비디오 콘텐츠의 평균 크기 = 2500MB 지원해야 하는 해상도 및 코덱 형식의 총 조합 = 10 사용자가 매일 시청하는 평균 동영상 수 = 3 초당 시청한 동영상 수 = (활성 사용자 * 매일 시청한 평균 동영상)/86400 = (100M * 3/86400) = 3472 매일 저장되는 콘텐츠의 크기 = 분당 업로드되는 비디오의 평균 크기 * 해상도와 코덱의 조합 * 24* 60 = (2500MB * 10 * ..
8. 메신져 (slack // facebook messenger // whatapp // kakaotalk) 1. 기능 요구 사항 사용자 간의 일대일 채팅 및 그룹 채팅. 사용자가 텍스트, 사진, 비디오 및 기타 파일 전송 채팅 기록 사용자의 온라인/오프라인 상태 표시 알림 2. 추정 및 제약 사항 매일 약 100억 개의 메시지가 전송되는 20억 명의 사용자를 처리 최소 대기 시간으로 실시간 채팅. 메시징 서비스는 고가용성이어야 하지만 이 경우 일관성이 우선순위가 높다. 시스템은 매우 일관성이 있어야 한다. 즉, 모든 사용자는 로그인하는 모든 장치를 통해 동일한 순서로 메시지를 볼 수 있어야 한다. 예상 용량 메시지 저장용량 추정 각 메시지에 대해 평균 크기가 140바이트이고 매일 전송되는 약 100억 개의 메시지를 추정하면 일일 메시지에 대해 약 1.4TB의 저장 용량이 필요 100억 메시지 * 140바이트 ..