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