[Spark] Apache Spark란?
📌 Apache Spark란? Apache Spark 는 빅데이터를 효과적으로 처리하기 위한 분석 엔진이다. Hadoop 의 MapReduce 가 디스크 기반으로 처리하는 반면, Spark는 인메모리 기반 병렬 연산을 진행한다. 일반적으로 Spark가 Hadoop MapReduce보다 100배 정도 빠르다. 📌 특징 배치 프로세싱...
📌 Apache Spark란? Apache Spark 는 빅데이터를 효과적으로 처리하기 위한 분석 엔진이다. Hadoop 의 MapReduce 가 디스크 기반으로 처리하는 반면, Spark는 인메모리 기반 병렬 연산을 진행한다. 일반적으로 Spark가 Hadoop MapReduce보다 100배 정도 빠르다. 📌 특징 배치 프로세싱...
📌 Before public UserResponse getUser(Long userId) { return userRepository.findById(userId) .map(user -> UserResponse.of(user.getEmail(), user.getNickname())) .orElse...
📌 ResponseEntity란? ResponseEntity 는 HTTP 응답을 제어할 수 있도록 도와주는 클래스이다. 응답 body, 상태 코드, 헤더를 제어할 수 있다. HttpEntity 를 상속받아 구현되었다. @ResponseBody 는 응답의 body만 제어할 수 있다는 점에서 차이가 있다. 📌 구성 요소 public Response...
📌 정적 팩토리 메서드 패턴 Static Factory Method (정적 팩토리 메서드) 패턴은 객체 생성의 역할을 생성자 대신 정적 메서드에 위임하는 디자인 패턴이다. User user1 = new User("John", 30); User user2 = User.createWithNameAndAge("John", 30); 정적 팩토리 메서...
📌 @Column 어노테이션의 속성 엔티티의 속성을 정의할 때, @Column 어노테이션을 사용한다. name 속성을 통해 컬럼의 이름을 지정할 수 있고, nullable 속성을 통해 NOT NULL 제약 조건을 추가할 수 있다. unique 속성을 통해 UNIQUE 제약 조건을 추가할 수 있고, length 속성을 통해 컬럼의 길이를 지정할 수 있...
📌 개요 값에 대한 검증을 @Valid 어노테이션이나 @Column 어노테이션 등을 통해 구현할 수 있으나, 그 이상의 검증을 요구하는 경우 커스텀 어노테이션을 만들어 구현하는 것이 좋다. 요구사항은 다음과 같다. Player 엔티티는 name, role, information 필드를 가진다. Role 은 ADMIN, USER 가 존재한...
📌 Paging이란? Paging 은 전체 데이터를 한 번에 조회하는 것이 아닌, 일정 크기의 페이지 단위로 분할하여 조회하는 방법이다. 대량의 데이터를 한 번에 조회할 때 발생하는 메모리 사용량 문제를 해결할 수 있다. 📌 구성 요소 Pageable Pageable 는 페이징 정보를 추상화한 인터페이스이다. 페이지 번호, 하나의 페이지에 포함...
📌 개요 N+1 문제를 효과적으로 해결하는 방법은 크게 세 가지가 있는데, Fetch Join , @EntityGraph , Batch Size 이다. 일반적인 경우에서 이들 중 뭐가 더 좋냐고 하면 Fetch Join 과 @EntityGraph 가 더 좋다고 할 수 있다. 발생하는 쿼리의 개수 관점에서 보면 그렇다는 것이다. Fetch Join 과...
📌 개요 PR 리뷰를 진행할 때 해당 PR의 코드만 보고 개선할 점을 찾기에는 어려움이 있으므로, 직접 돌려보는 편이다. 여러 개발자들이 직접 프로젝트 레포지토리에서 개발한다면 해당 브랜치로 checkout하면 되지만, 로컬에 fork하여 개발을 진행하는 경우 상황은 조금 복잡해진다. 다른 개발자가 fork한 레포지토리에 remote하여 pull하는...
📌 개요 @Controller , @Service , @Repository 모두 @Component 어노테이션을 상속하고 있다. @Component 는 해당 클래스를 Bean으로 등록하는 역할을 한다. 사실 어노테이션 이름만 다르지, 내부적으로 수행하는 동작은 모두 같다. 그렇다고 @Controller 대신 @Component 를 사용하면 제대로 ...