12장 채팅 시스템 설계
가상면접으로 배우는 대규모 시스템 설계 기초 12장 채팅 시스템 설계 메시지 수신 시나리오 폴링 : 주기적으로 서버에 물어 보는 방법 단점 서버에 응답이 없어도 물어봐야 되어서 자원이 낭비됨 롱폴링 : 새메시지를 반환 하거나 타임아웃이 될때 까지 대기 단점 메시지를 보내는 클라이언트와 수신하는 클라이언트가 같은 채팅 서버
Writing
기술 자체보다 어떤 문제를 왜 그렇게 풀었는지에 초점을 둡니다.
가상면접으로 배우는 대규모 시스템 설계 기초 12장 채팅 시스템 설계 메시지 수신 시나리오 폴링 : 주기적으로 서버에 물어 보는 방법 단점 서버에 응답이 없어도 물어봐야 되어서 자원이 낭비됨 롱폴링 : 새메시지를 반환 하거나 타임아웃이 될때 까지 대기 단점 메시지를 보내는 클라이언트와 수신하는 클라이언트가 같은 채팅 서버
가상면접으로 배우는 대규모 시스템 설계 기초 11장 뉴스 피드 시스템 설계 피드 발행 : 피드를 생성하면 데이터 베이스에 저장하고 새 포스팅은 친구들의 뉴스피드에도 전송 된다 뉴스 피드 생성 : 모든 친구의 포스팅을 시간 흐름 역순으로 모아서 만든다 팬아웃 : 어떤 사용자의 새 포스팅을 그 사용자와 친구관계에 있는 모든
가상면접으로 배우는 대규모 시스템 설계 기초 10장 알림 시스템 설계 알림 시스템 모바일 푸시 알림 SMS 메시지 이메일 알림 유형별 지원 방안 IOS 푸시 알림 알림 제공자 : 애플 푸시 알림 서비스(APNS) 단말 토큰 페이로드 APNS : 애플이 제공하는 원격 서비스 IOS 단말 안드로이드 푸시 알림 FCM : fi
가상면접으로 배우는 대규모 시스템 설계 기초 9장 웹 크롤러 설계 웹 크롤러는 로봇 또는 스파이더라고도 부른다 검색엔진에 널리 쓰이는 기술로 웹에 새로 올라오거나 갱신된 컨텐츠를 찾는것이 주된 일이다. 크롤러의 용도 검색 엔진 인덱싱 웹 아카이빙 웹 마이닝 웹 모니터링 크롤러의 속성 규모 확장성 안정성 예절 확장성 시작
좋은코드 나쁜코드: 프로그래머의 코드 품질 개선법(PART I 이론) CHAPTER 4 오류 코드가 실행되는 환경은 불완전 하다. 사용자가 잘못된 입력을 제공하고, 외부 시스템이 다운되며, 자신이 작성한 코드와 다른 개발자가 작성한 코드가 종종 버그를 가질수 있다. 오류에 대해서 특히 어떻게 알리고 대처해야 하는지 논의해
좋은코드 나쁜코드: 프로그래머의 코드 품질 개선법(PART I 이론) CHAPTER 3 다른 개발자와 코드 계약 예측 가능한 코드를 작성하라, 코드를 오용하기 어렵게 만들라 두가지 원칙은 다른 사람이 작성한 코드와 상호작용할 때 일어날수 있는 일과 관련 있다 자신의 코드와 다른 개발자의 코드 1인 개발자 회사에서 일하지
가상면접으로 배우는 대규모 시스템 설계 기초 8장 URL 단축기 설계 API 엔드포인트 URL 단축용 엔드포인트 URL 리다이렉션 엔드포인트 URL 리다이렉션 301 Moved Permanently : Location 헤더가 가르키는 주소로 영구 이동됨 302 Found : Location 헤더가 가르키는 주소로 일시적으
가상면접으로 배우는 대규모 시스템 설계 기초 7장 분산 시스템을 위한 유일 ID 생성기 설계 분산 시스템에서 유일성이 보장되는 id를 만드는 방법 다중 마스터 복제(multi master replication) 데이터 베이스의 auto increment 기능을 활용함, 서버 마다 증가하는 값을 다르게 셋팅함 단점 여러 데
가상면접으로 배우는 대규모 시스템 설계 기초 6장 키 값 저장소 설계 키 값 저장소는 키 값 데이터베이스라고도 불리는 비관계형 데이터베이스다 키는 유일해야 되며 성능상의 이슈로 키는 짧을수록 좋다 값은 보통 무엇이 오던 상관하지 않는다 분산 키 값 저장소는 분산 해시 테이블이라고도 불린다. CAP 정리 데이터 일관성(co
가상면접으로 배우는 대규모 시스템 설계 기초 5장 안정 해시 설계 수평적 규모 확장성을 달성하기 위해서 요청 또는 데이터를 서버에 균등하게 나누는게 중요하다 해시키 재배치 문제 n개의 캐시서버의 부하를 균등하게 나누는 보편적인 방법은 serverindex = hash(key) % n(서버 갯수) 위에 방법은 서버 풀이 고