본문 바로가기

server/system design

(12)
3. twitter 1. 기능 요구 사항 글 쓰기 타임라인 확인 트렌드 및 해시태그 리스트 검색 2. 추정 및 제약 사항 쓰기에 비해 읽기가 많다 최종 일관성을 유지해야 한다. 사용자가 팔로워의 트윗을 약간 늦추어도 괜찮다 트윗은 140 자로 제한 3. 데이터베이스 설계 Redis && DB 기능 요구 사항에 따른 필요 테이블들 user tweet follwer DB 테이블 관계도 필요 쿼리들 get follwers get latest tweets Twitter 서비스의 기본 아키텍처는 User , Tweet , Followers로 구성된다. 사용자 정보는 사용자 테이블에 저장된다 사용자가 트윗하면 사용자 ID와 함께 tweet 테이블에 저장된다 사용자 테이블은 tweet 테이블과 일대 다 관계를 갖는다. 사용자가 다른 사..
2. pastebin ( text storage site ) 페이스트빈? 텍스트 쉐어링 웹사이트 사용자가 플레인 텍스트를 저장할 수 있는 웹 애플리케이션을 의미한다. 깃허브는 버전 관리 기능을 가진 페이스트빈 서비스를 제공한다. 한마디로 텍스트 공유 플랫폼 예제 사이트 : https://pastebin.com/ 1. 기능 요구 사항 사용자는 텍스트를 입력하거나 텍스트 파일을 업로드하고 고유한 short URL을 얻을 수 있다. 만료 시간이 제공되면 URL은 일정 기간이 지나면 만료된다. short URL이 주어지면 사용자는 원본 콘텐츠에 액세스 할 수 있어야 한다. 서비스는 REST API로 통신할 수 있어야 한다. 텍스트 최대 사이즈는 1MB로 제한한다. 읽기 요청이 쓰기 요청보다 100배 더 많다!! (읽기:쓰기 == 100:1) 2. 추정 및 제약사항 한달에..
1. TinyURL // bitly (URL shortening service) 1. 기능 요구 사항 사용자가 입력한 url(원본 도메인)을 특정 도메인을 포함한 형태로 단축 URL로 반환한다. 반환된 단축 url 클릭시 원본 URL로 리다이렉트 된다. 단축 URL은 일정시간이 지나면 만료되어 삭제된다. 만료 시간은 지정할 수 있어야 한다. ex) 예시로 tinyurl.com에서 실행한 결과 기존 url https://www.youtube.com/watch?app=desktop&v=xFPJmk5NQao&ab_channel=siterubix 단축 url https://tinyurl.com/4fyzbta6 2. 추정 및 제약 사항 2-1 트래픽 해당 시스템은 read가 압도적으로 많을 것이다. 읽기와 쓰기 사이의 비율이 100:1로 가정한다. 예상 트래픽 매월 5억 개의 새로운 단축 U..
how to system desgin? system desgin 질문에서의 파악해야할 4가지 1. 사용자 : 시스템을 누가 어떻게 사용하는가? 2. 스케일 : 시스템 증가에 따른 데이터 처리 방법 3. 성능 : 시스템이 얼마나 빨라야 하는가? 4. 비용 : 어떤 구조가 더 빠르고 효율적인가? System desgin 시 생각해야할 사항들 요구 사항에 맞는 제약사항 도출 사용자 수 트래픽, 1년, 5년 파일 저장 용량 - 1년 5년 디비 저장 용량 - 1년 5년 웹 서버 메모리 + 캐시 메모리 사용 API 도출 및 설계 API에 따른 디비 설계 서비스에 필요한 기본 알고리즘 도출 수정 및 최적화 DB 최적화 ( 용도, 사이즈에 맞는 DB 선택 및 파티셔닝 여부 ) 데이터의 성향에 맞는 디비 선택 테이블간의 조인이 많이 필요하면 RDB 확장과 테..