클린 아키텍처를 읽는데, 잘 와닿지 않거나 이해가 가지 않는 내용이 상당히 많이 있었습니다. 하지만 이 책을 읽고 얻어가는 자그만한 부분이라도 정리를 해두고자 합니다. 책에서 다루는 핵심적인 내용들이 아닌, 개인적으로 기억하고 싶은 내용들만 정의하였습니다. 1. 단일 책임 원칙(SRP, Single Responsibility Principal)의 재정의 단일 책임의 원칙은 단일 모듈은 변경의 이유가 하나, 오직 하나뿐이어야 한다는 것이다. 이것은 하나의 일만 해야한다는 원칙과는 다르다. 여기서 말하는 변경의 이유는 사용자와 이해관계자를 가리키는데, 작성한 모듈들이 여러 대상들에 의해 변경되어서는 안된다는 것이다. 이러한 내용을 책에서는 하나의 모듈은 오직 하나의 액터에 대해서만 책임져야 한다고 SRP를 ..
이펙티브 자바를 읽으면서 제가 제대로 적용하지 못했던 부분 혹은 개념적으로 부족했던 부분을 정리하고, 앞으로의 개발에 적용해보고자 합니다. 1. 객체의 생성과 파괴 [ 1. 생성자 대신 정적 팩토리 메서드를 이용하라 ] 메소드 이름을 가질 수 있다. -> 명확한 이름으로 값을 생성할 수 있다. 호출 때 마다 인스턴스를 새로 생성하지 않을 수 있다. 하위 클래스를 반환하는 유연성을 얻을 수 있다. 매개 변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 정적 팩토리 메소드를 작성하는 시점에는 해당 객체의 클래스가 존재하지 않아도 된다. 정적 팩토리 메소드를 작성하는 시점에는 해당 객체의 클래스가 존재하지 않아도 된다. 하지만 정적 팩토리 메서드 역시 다음과 같은 단점이 있다. 하위 클래스로 상속하기 ..
두 번째로 클린코드를 읽으면서 처음 읽었을때와 느꼈던 점이 조금 달라진 것 같습니다. 이번에도 역시 제가 제대로 적용하지 못했던 부분 혹은 개념적으로 부족했던 부분을 정리하고, 앞으로의 개발에 적용해보고자 합니다. 1. 클린코드 핵심 요약 및 정리 [ 1. 객체의 생성에도 유의미한 이름을 사용하라 ] 객체의 생성자가 오버로딩 되는 경우 어떠한 값으로 어떻게 생성되는지 정보가 부족할 수 있다. 그러므로 이러한 경우에는 정적 팩토리 메소드를 사용하는 것이 보다 명확한 코드를 작성하게 해 줄 것이다. 하지만 구현을 드러내는 이름은 피하는 것이 좋다. (p32 참고) // 두 번째 인자가 무엇인지 파악이 어렵다. Product product = new Product("사과", 10000); // 이름을 부여하여..
1. Hadoop의 개념과 아키텍쳐 [ Hadoop이란? ] Hadoop은 Reliable, Scalable하게 분산 처리를 하기 위한 오픈 소스 소프트웨어이다. Hadoop은 Map-Reduce라는 단순한 데이터 처리 모델을 사용함으로써 여러 대의 컴퓨터를 통해 손쉽게 대규모 데이터를 처리하고자 한다. 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하여 처리한다. (이러한 방식은 Disk I/O에 의해 성능 저하를 유발하며, 추후에 In-Memory 방식으로 처리하는 Spark가 등장하게 되었다.) [ Multi-Layer 구조 ] Hadoop에서 수행하는 역할은 크게 HDFS에 파일을 저장하는 역할과 데이터를 처리하는 역할로 나누어진다. 그..
1. Apache Spark의 개념과 등장 배경 [ Apache Spark의 등장 배경 ] Spark는 MapReduce 형태의 클러스터 컴퓨팅 패러다임의 한계를 극복하고자 등장하게 되었다. MapReduce는 Disk로부터 데이터를 읽은 후, Map을 통해 흩어져 있는 데이터를 Key-Value 형태로 연관성 있는 데이터끼리 묶은 후에, Reduce를 하여 중복된 데이터를 제거하고, 원하는 데이터로 가공하여 다시 Disk에 저장한다. 하지만 이러한 파일 기반의 Disk I/O는 성능이 좋지 못했고, In-memory의 연산을 통해 처리 성능을 향상시키고자 Spark가 등장하게 되었다. [ Apache Spark란? ] Apache Spark는 오픈소스이며, 범용적인 목적을 지닌 분산 클러스터 컴퓨팅 프..