본문 바로가기

학습 일지129

오브젝트 : 객체지향 프로그래밍 협력, 객체, 클래스객체 지향이란 객체를 지향하는 것이다.대부분의 사람들이 객체지향 프로그램을 작성할 때 가장 먼저 고려하는 것은 어떤 클래스가 필요한지, 클래스 내부에 어떤 클래스의 속성과 메서드가 필요한지 고민한다.하지만 진정한 객체지향 패러다임의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있으므로 다음과 같은 것에 집중해야한다.어떤 클래스가 필요한지 고민하기 전에 어떤 객체가 필요한지 고민해야한다. 어떤 객체들이 어떠한 상태와 행동을 가지는지 먼저 결정해야한다.객체들이 어떻게 협력할지에 대해서 고민해야한다. 객체들의 모양과 윤곽이 잡히면 공통된 특성과 상태를 가진 객체을 타입으로 분류하고 이 타입을 기반으로 클래스를 구현해야한다.도메인의 구조를 따르는 프로그램 구조소프트웨어는 사용자가.. 2024. 1. 6.
15장. 구글 드라이브 설계 1단계. 문제 이해 및 설계 범위 확정기능적 요구사항파일 추가. 가장 쉬운 방법은 구글 드라이브 안으로 떨구는(drag-and-drop) 것이다.파일 다운로드여러 단말에 파일 동기화. 한 단말에서 파일을 추가하면 다른 단말에도 자동으로 동기화 되어야 한다.파일 갱신 이력 조회파일 공유파일이 편집되거나 삭제되거나 새롭게 공유되었을 때 알림 표시비-기능적 요구사항안정성 : 저장소 시스템에서 안정성은 아주 중요하다. 데이터 손실은 발생하면 안된다.빠른 동기화 속도네트워크 대역폭 : 제품이 네트워크 대역폭을 불필요하게 많이 소요한다면 사용자는 불편할 것이다.규모 확장성 : 이 시스템은 아주 많은 양의 트래픽도 처리 가능해야 한다.높은 가용성 : 일부 서버에 장애가 발생하거나, 느려지거나, 네트워크 일부가 끊겨도.. 2023. 12. 30.
14장. 유튜브 설계 1단계. 문제 이해 및 설계 범위 확정아래와 같은 기능을 갖는 비디오 스트리밍 서비스 설계에 초점을 맞춘다.빠른 비디오 업로드원활한 비디오 재생재생 품질 선택 기능낮은 인프라 비용높은 가용성과 규모 확장성, 안정성지원 클라이언트 : 모바일 앱, 웹브라우저, 스마트 TV개략적 규모 추정일간 능동 사용자(DAU: Daily Active User)수는 5백만(5million)한 사용자는 하루에 평균 5개의 비디오를 시청10%의 사용자가 하루에 1비디오 업로드비디오 평균 크기는 300MB비디오 저장을 위해 매일 새로 요구되는 저장 용량 = 5백만 x 10% x 300MB = 150TBCDN비용클라우드 CDN을 통해 비 디오를 서비스할 경우 CDN에서 나가는 데이터의 양에 따라 과금한다.아마존의 클라우드프론트(C.. 2023. 12. 30.
13장. 검색어 자동 완성 시스템 가장 많이 이용된 검색어 k개를 자동완성하여 출력하는 시스템을 설계한다. 1단계. 문제 이해 및 설계 범위 확정 요구사항 빠른 응답 속도 : 사용자가 검색어를 입력함에 따라 자동완성 검색어도 빠르게 표시 되어야한다. 연관성 : 자동완성되어 출력되는 검색어는 사용자가 입력한 단어와 연관된 것이어야 한다. 정렬 : 시스템의 계산 결과는 인기도 등의 순서 모델에 의해 정렬되어 있어야 한다. 규모 확장성 : 시스템은 많은 트래픽을 감당할 수 있도록 확장 가능해야한다. 고가용성 : 시스템에 장애가 발생하거나 느려지거나 예상치 못한 네트워크 문제가 생겨도 시스템은 계속 사용 가능해야한다. 개략적 규모 추정 일간 능동 사용자(DAU)는 천만 명으로 가정한다. 평균적으로 한 사용자는 매일 10건의 검색을 수행한다고 가.. 2023. 12. 30.