1:1 과 그룹 채팅 모두 지원 하는 앱둘다 지원DAU 5천만최대 100명1:1 채팅, 그룹 채팅, 사용자 접속 상태 표시, 텍스트 메시지만 가능100,000자 이하현재는 필요없다. 나중에 시간이 남으면 논의 가능영원히클라이언트와 서버와의 통신 방법에 대한 기본적인 지
모바일 앱, 웹뉴스 피드 페이지에 새로운 스토리를 올릴 수 있어야 하고, 친구들이 올리는 스토리를 볼 수 있어야 함시간 흐름 역순 즉 최신 순 5000명10 million daily네POST /v1/me/feedbody에 포스팅 내용, Authorization헤더에 A
푸시, sms, email연성 실시간 시스템 (soft real-time)이라 가정합니다. 가능한 빨리 알림이 전달되어야 하지만 시스템에 높은 부하가 걸렸을때 약간의 지연은 무방하다.ios, android, laptop, desktopclient 애플리케이션 또는 서버
웹 크롤러 란? 로봇 또는 스파이더라고 불림 웹에 새로 올라오거나 갱신된 콘텐츠(이미지, 비디오, PDF, 웹 페이지 등)를 찾아내는 것이 주된 목적 몇 개 웹페이지에서 시작해여 그 링크를 따라 나가면서 새로운 컨텐츠를 수집한다. 사용처 검색 엔진 인덱싱: 웹 페이
문제 이해 및 설계 범위 확정 시스템 설계 면접 문제는 정해진 결말을 없다. 그래서 질문을 통해 모호함을 줄이고 요구사항을 알아내야 한다. 기본적 기능 긴 URL 단축 기능 URL redirection 높은 가용성과 규모 확장성 그리고 장애 감내 개략적 추정 쓰기
키-값 저장소란? 키-값 데이터베이스 라고도 불림 저장되는 모든 값은 고유 식별자를 키로 가져야 함 해당 키에 매달린 값은 키를 통해서만 접근 가능 키는 텍스트 or 해시 값일 수 있다 (성능상 짧을수록 좋다.) 일반 텍스트키 - "lastloggedin_at"
그냥 관계형 디비의 auto increment 쓰면 어떨까? 데이터베이스 서버 한대로는 요구를 감당할 수 없다. (분산 환경에서는 데이터 양이 많아서 한대로는 감당이 안된다는 뜻?) 여러 데이터베이스 서버를 쓰는 경우에는 지연 시간을 낮추기 무척 힘들다. (어떤 지연
데이터를 서버에 균등 배분하기 위해서 주로 사용되는 기술 수평적 규모 확작성을 달성하기 위해서는 매우 중요하다 서버의 부하를 균등하게 나누는 가장 보편적인 방법 hash(key) % N (서버의 갯수) 단점 해시 키 재배치 문제 서버 추가 또는 삭제로 갯수의 변경
처리율 제한 장치란? 클라이언트 또는 서비스가 보내는 트래픽 처리율을 제어하기 위한 장치이다. 예를 들면 특정 기간내에 전송되는 클라이언트의 요청 횟수를 제한한다. 추가로 도달한 모든 호출은 block 된다. 처리율 제한 장치의 장점 dos공격에 의한 자원 고갈을 방
효과적인 규모 추정을 위해서는 아래와 같은 기본 수치들을 잘 이해하고 있어야 한다.데이터 볼륨이 2의 제곱수로는 어떻게 표현되는지 (예 kb는 2의 10제곱)응답지연 값 (예 디스크 탐색은 10ms)가용성 관련 수치 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될
아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 메서드 올리기 상속 구조에 동일한 메서드가 존재한다면 부모에게 올려라. 메서드 올리기시 제거하려는 중복된 메서드가 만약 서브 클래스에만 있는 필드를 참조한다면 필드를 먼저 부모로 올려
아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 조건문 분해하기 조건문은 함수를 이해하기 더욱 힘들게 만든다. 왜냐하면 어떻게는 나열이 되어 있지만 무엇인지/왜 일어나는 지는 제대로 말해주지 않을때가 많기 때문이다. 거대한 코드 블럭
아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. API란? 모듈과 함수는 소프트웨어를 구성하는 빌딩 블록이며, API는 이 블록들을 끼워 맞추는 연결부다. 질의 함수와 변경 함수 분리하기 겉보기 부수효과가 있는 함수와 부수효과가 없
아래 내용은 김영한 님의 자바 ORM 표준 JPA 프로그래밍의 내용에 기반하여 정리한 글입니다. 고급매핑 상속 관계 매핑 객체지향 언어의 상속이라는 개념은 RDB 슈퍼타입 서브타입 관계랑 가장 유사하다. 방법 조인 전략 @Inheritance(strate
아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 여러 함수를 클래스로 묶기 목적은 같은 데이터를 사용하는 함수를 한 클래스로 묶는 방법 여러함수를 변환 함수로 묶기와 동일 방법은 연관된 데이터를 다루는 함수와 데이터를 가진 객체를 리
아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 여기부터는 구체적인 리팩토링 기법들 입니다. 함수 추출하기 코드를 보고 무슨 일을 하는지 파악하는데 시간이 걸린다면 함수로 추출후 무슨 일(목적) 하는지가 드러나는 이름을 지어라!(목적
아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 코드에서 악취가 풍길때 리팩토링이 필요한 시점이다. 어디까지 리팩터링 해야하는지 즉 악취를 어느정도까지 제거해야 하는지에 대한 기준은 숙련된 개발자의 직관을 따라야 한다. 결국엔 개개인
아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다. 리팩터링이란 소프트웨어의 겉보기 동작은 그대로 유지한채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 (겉보기 동작은 그대로 유지한채 이란 표현은 사용자 관점에서는 달라지는
아래 내용은 김영한 님의 자바 ORM 표준 JPA 프로그래밍의 내용에 기반하여 이해하여 정리한 글입니다. 엔티티 매핑 매핑 정보는 XML 또는 어노테이션 중에 선택 가능하다. 아래는 좀더 쉽고 직관적인 어노테이션 매핑기반으로 설명하겠다. @Entity 테이블과 매핑
아래 내용은 김영한 님의 자바 ORM 표준 JPA 프로그래밍의 내용에 기반하여 이해하여 정리한 글입니다. JPA가 나온 배경 현시점에서 객체를 영구 보관하는 방법중 가장 현실적인 대안은 관계형 데이터베이스이다. 하지만 관계형 데이터베이스와 객체지향간에는 패러다임 불