수년 전까지 대규모 애플리케이션은 수십 대의 서버, 기가바이트의 데이터, 수초의 응답 시간, 당연히 여겨졌던 몇 시간의 유지보수 시간 등의 특징을 가졌지만 오늘날에는 다음과 같은 세 가지 이유로 상황이 변하고 있다. 빅데이터 : 엄청난 양의 빅 데이터를 처리할 일이 많아졌다. 다양한 환경 : 모바일 디바이스부터 수천 개의 멀티 코어 프로세서로 실행되는 클라우드 환경까지 다양하게 분포되어있다. 사용 패턴 : 언제 어디서나 접근 가능한 밀리초 단위의 응답 시간을 기대하는 서비스가 많아졌다. 위와 같은 이유로 패러다임에 맞게 설계된 애플리케이션은 발생한 데이터 항목을 바로 처리함으로 사용자에게 높은 응답성을 제공한다. 리액티브 애플리케이션과 시스템 개발의 핵심 원칙 반응성 (responsive) : 리액티브 ..
객체 지향의 사실과 오해를 읽으면서 객체 지향이 무엇인가에 대해서 다시 생각해보는 좋은 계기가 됬던것 같다.객체 지향이 단순히 모든것을 객체로 풀어냈고 객체간의 상호작용을 하는 과정이라고 생각 했다면 단순히 그 것을 뛰어넘어 객체지향적 프로그래밍에 대한 생각을 심도있게 다룬 책이었다.Chapter 03객체생성에 관한 내부적인 상황을 먼저 파악해야 한다.객체의 행위 자체에 집중하고 행동자체에 집중하여 관계를 파악하고 객체를 정의 해야 한다.객체생성의 중심은 “행위” , “동작” 을 중심으로 생성해야 한다.Chapter 04A객체와 B 객체의 협력위주 input, output을 생가가여 서로의 책임위주의 설계를 진행해야 한다.OOP의 가장중요한 핵심은 충분히 자율적인 동시에 충분히 협력적인 객체를 창조하는 ..
Chapter 9 유연한 설계01 개방-폐쇄 원칙 개방-폐쇄에 대한 원칙 : 확장 가능하고 변화에 유연하게 대처할 수 있는 설계를 만드는 원칙 중 하나로 소프트웨어 개체는 확장에 대해 열려있어야 하고 수정에 대해서는 닫혀 있어야 한다. 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경해야 한다.유연하고 재사용 가능한 설계에서 런타임 의존성과 컴파일타임 의존성은 서로 다른 구조를 가진다.기존 클래스를 전혀 수정하지 않은 채 어플리케이션의 동작을 확장할 수 있는 방법으로 확장에 대해서는 열려있는 설계를 진행해야 한다. 개방-폐쇄 원칙을 수용하는 코드는 컴파일타임 의존성을 수정하지 않고도 런타임 의존성을 쉽게 변경 할 수 있다. 추상화가 핵심이다.추상화 부분은 수정에 대해 닫혀 있다. 추상화를 통해 생략된 ..
Chapter 15 CompletableFuture와 리액티브 프로그래밍 컨셉의 기초멀티코어 프로세서가 발전함과 동시에 애플리케이션의 속도는 멀티코어 프로세서를 얼마나 잘 활용할 수 있도록 소프트웨어를 개발하는가에 따라 달라질 수 있다는 것이 확인 되었고 마이크로서비스 와 같은 아키텍처의 선택이 지난 몇 년간 증가하면 멀티태스크 프로그래밍에 대한 중요성이 증가되었다. 동시성 VS 병렬성동시성은 하나의 코어에서 여러개의 작업을 진행 병렬성은 여러개의 코어에서 여러개의 작업을 진행.동시성을 잘 활용할 수 있도록 Future 인터페이스를 이용하여 CompletableFuture 를 구현하여 사용 할 수 있도록 한다. 15.1 동시성을 구현하는 자바 지원의 진화 스레드를 이용하여 동시에 또는 협력적으로 프로그램..