시스템 용량이나 성능 요구사항을 개략적으로 추정해보기 구글의 시니어 펠로 제프 딘에 따르면 "개략적인 규모 추정(back-of-the-envelope estimation)은 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiements)을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구 사항에 부합할 것인지 보기 위한 것" 개략적 규모 추정을 효과적으로 해 내려면, 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야함 특히, 2의 제곱수, 응답지연(latency) 값, 가용성에 관계된 수치들 잘 이해해야함 2의 제곱수 분산 시스템에서 다루는 데이터 양은 엄청나게 커질 수 있으나 그 계산법은 기본을 크게 벗어나지 않음 제대로된 계산 결과를 얻으려면 데이터 볼륨의 단위를 2의 제곱..
캡! 상추다 객체 지향 특성 => 도구 SOLID 설계 원칙 => 도구를 올바르게 사용하는 방법 디자인 패턴 => 요리법, 레시피 이전의 많은 개발자들이 고민하고 정제한 사실 상의 표준 설계 패턴 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 정리하면서 만들어진 다양한 해결책 중에서 많은 사람들이 인정한 best practice = 디자인 패턴 스프링을 이해하는데 도움이 될 디자인 패턴! 스프링 프레임 워크 = "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크" = "OOP 프레임워크" 나는 지금 객체 지향에서 시작해 스프링으로 향하는 Bottom-Up 학습 중! 디자인 패턴은 객체 지향의 특성 중 상속(extends), 인퍼테이스(interface/implemen..
배울 내용: 한 명의 사용자를 지원하는 시스템 -> 몇백만 사용자를 지원하는 시스템 설계 Keyword: 규모 확장성 단일 서버 모든 컴포넌트가 단 한 대의 서버에서 실행되는 간단한 시스템부터 설계해보자 웹, 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행된다 사용자 요청 처리 흐름 1. 사용자는 도메인 이름(api.mysite.com)을 이용해 웹사이트에 접속 이 접속을 위해서 도메인 이름을 도메인 이름 서비스(Domain Name Service, DNS)에 질의하여 IP 주소로 변환하는 과정 필요 DNS는 보통 제3 사업자(third party)가 제공하는 유료 서비스를 이용하게 되므로, 우리 시스템의 일부는 아님 DNS 조회 결과로 IP 주소가 반환됨(그림의 웹 서버의 주소) 해당 IP 주..
앞의 3개 장을 통해 객체 지향의 개념과 4대 특성 학습이제 객체 지향 프로그램을 작성할 수 있는 도구 획득! 용도에 맞게 사용하자좋은 도구가 있어도 올바르게 사용하지 않으면 요리를 만드는 작업은 고됨 즉, 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 방법이나 원칙을 배워보자! 객체 지향 언어의 시초: Simula67이 1960년 발표되고 50년 이상 세월이 흐름수많은 시행 착오와 best practice 속에서 객체 지향 설계(OOD; Object Oriented Design)의 정수라고 할 수 있는 5원칙 집대성 SOLIDSRP(Single Responsiblity Principle): 단일 책임 원칙OCP(Open Closed Principle): 개방 폐쇄 원칙LSP(Li..