Spring Batch 병렬 처리 Spring Batch는 대용량 데이터를 처리하는 프레임워크 입니다. 병렬 처리는 한 번에 여러 작업을 동시에 실행하여 작업을 분산시키는 방법이며 성능 향상을 위한 중요한 기능 중 하나 입니다. 이번에는 TaskExecutor를 사용하여 step 내부를 Chunk 단위로 병렬 처리한 경험을 기록하려 합니다. 스레드 풀 설정 Spring Batch 병렬 처리를 위해 스레드 풀 설정을 진행합니다. @Bean public TaskExecutor taskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(4); // 코어 스레드 개수 ..
네트워크란 무엇인가요? 더보기 네트워크란 컴퓨터 시스템 또는 장치들이 연결되어 통신하거나 데이터를 교환하는 구조를 뜻 합니다. 네트워크에는 노드와 링크로 구성되어 있습니다. 노드는 서버, 라우터 스위치 등 네트워크 장치를 의마합니다. 링크는 유선, 무선 등을 의미합니다. TCP/IP 4계층과 각 계층에 대해 아는대로 설명해주세요 더보기 TCP/IP 4계층은 애플리케이션, 전송, 인터넷, 링크 계층들로 이루어져 있습니다. 애플리케이션 계층 응용 프로그램이 사용되는 프로토콜 계층입니다. 웹 서비스, 이메일 등 서비스를 사람들에게 제공하는 계층 입니다. 예시) FTP, HTTP 전송 계층 전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공합니다. 애플리케이션과 인터넷 계층 사이의 데이터 전달할 때 중계..
개요 이번 글에서 @RestControllerAdvice 어노테이션을 사용하여 전역적으로 예외 처리를 하는 GlobalExceptionHandler 클래스를 만들어 예외 처리를 해보겠습니다. @RestControllerAdvice 전역적으로 예외 처리를 관리하고 응답을 생성하는 어노테이션입니다. 여러 컨트롤러에서 발생하는 예외를 한 곳에서 처리할 수 있습니다. 표준화된 응답 형식을 유지할 수 있습니다. 사용 순서 커스텀 예외 클래스 작성 예외 상황 발생 GlobalExceptionHandler에서 예외 처리 제가 예외 처리한 상황은 회원 가입을 할 때 들어와야 할 데이터가 들어오지 않아 예외 처리를 해야 하는 상황 입니다. 1. 커스텀 예외 클래스 작성 ( FieldDataException ) impor..
순서 Spring Boot에서 Spring Batch는 다음의 작업을 통해 사용할 수 있습니다. 의존성 추가 DB에 Batch를 위한 테이블들 생성 Config 클래스 작성 JobLauncher로 Job 실행 하나씩 알아보겠습니다. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-batch' build.gradle에 의존성을 추가하고 코끼리 표시를 눌러 라이브러리들을 다운받습니다. DB에 Batch를 위한 테이블들 생성 Spring Batch를 실행시키기 위해 Spring Batch를 관리하기 위해 사용하는 테이블들이 Spring Boot에 연결된 DB에 있어야 합니다. 이 테이블들의 SQL은 다운받은 라이브러리 안에 있습니다. S..
순서 AOP를 Spring Boot에서 실행하기 위해 다음의 단계들을 거칩니다. 의존성 추가 Application에 Annotation 추가 Aspect 파일 생성 메소드 생성 실행 범위 지정 실행 코드 구현 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-aop' Application에 Annotation 추가 @EnableAspectJAutoProxy 이 어노테이션을 어플리케이션 클래스에 추가합니다. @SpringBootApplication @EnableAspectJAutoProxy // aop 사용 public class UserApplication { public static void main(String[] args) { ..
AOP란? AOP란 Aspect Oriented Programming의 약어로 '관점 지향 프로그래밍'이란 뜻 입니다. 비즈니스 로직은 실제 데이터를 처리하는 핵심 로직과 log, 성능 체크와 같은 비핵심 로직이 있습니다. 이 비핵심 로직의 여러 클래스, 메소드에 걸쳐 사용되는 공통적인 기능들입니다. 즉, 비슷한 내용의 코드들이 메소드, 클래스마다 반복되여 코드를 보기 어렵고 비효율적으로 만듭니다. 이에 개발자들은 비핵심 로직을 모듈화하여 필요할 때 마다 가져다 쓰는 것으로 바꾸어 효율성을 높였습니다. 모듈화 된 비핵심 로직을 Aspect(관점)라 하며 비핵심 로직을 모듈화하여 프로그래밍하는 것을 AOP라 합니다. Aspect의 대상으로는 log, 성능 체크, 에러 처리 등이 있습니다. AOP 장점 코드..
이번에는 window에 설치한 redis의 각종 설정들을 다뤄보려 합니다. 설정들을 사용하면 추가로 넣을 생각 입니다. 비밀번호 설정 redis의 비밀번호 설정을 아주 중요합니다. 프로젝트 때 redis의 비밀번호를 설정하지 않고 docker container로 ec2 ubuntu에 뛰운 적이 있습니다. 이 때, redis의 모든 데이터가 없어지는 문제가 빈번히 발생했습니다. 이유는 비밀번호가 없는 redis의 데이터를 자동으로 공격하는 프로그램이 있다고 합니다. 이 일 이후로 redis의 비밀번호를 꼭 설정했고 window에서도 redis에 비밀번호를 설정하려고 합니다. 설정 파일 변경 Redis 폴더 들어가기 C:\Program Files\Redis 경로로 들어가 줍니다. 여기에 2가지 설정 파일이 ..
window 환경에서 redis를 설치해보려 합니다. Redis 설치 사이트 결론적으로 Microsoft Redis Github에서 다운로드 받아 설치하면 됩니다. Microsoft Redis Github https://github.com/microsoftarchive/redis Microsoft Redis Github의 release 부분 (여기서 다운) https://github.com/microsoftarchive/redis/releases 사이트에 들어가면 버전 별로 윈도우에서 사용하기 위한 redis를 다운받을 수 있습니다. msi 파일과 zip 파일 둘 중 뭘 선택해도 별 차이는 없다고 합니다. 저는 msi 파일을 다운 받아 설치를 진행했습니다. 참고로 마이크로소프트에서는 redis를 윈도우 ..
Apache Kafka에 대해 정리 글을 써보려 합니다. Kafka 란? 카프카란 분산형 이벤트 스트리밍 플랫폼 입니다. 카프카는 여러 서버나 노드에 데이터와 처리를 분산시켜 가용성과 확장성이 높은 특징이 있습니다. 이러한 특성으로 카프카는 서버 간의 비동기 데이터 교환을 용이하게 해주는 메시징 시스템으로 활용될 수 있으며 하루에 수 조개의 이벤트 처리를 가능하게 합니다. 즉, 카프카는 플랫폼 내에 다양한 서비스 간의 데이터 흐름을 실시간으로 제어해 서비스들을 연계하는 중추 역할을 수행합니다. 이러한 카프카는 초기에는 대용량 로그 데이터 처리를 위해 개발되었으며 현재는 다양한 분야에서 실시간 데이터 파이프라인 구축에 널리 사용되고 있습니다. 분산형 이벤트 스트리밍 플랫폼 분산형 : 여러 서버나 노드에 데..
Redis란 무엇인가요? 더보기 Redis란 인메모리 데이터 저장소이며 key-value 기반의 비정형 데이터를 저장하고 관리하는 NoSQL DBMS 입니다. Redis의 특징으로는 빠른 성능과 다양한 데이터 타입을 지원이 있으며 DB, 캐싱, 메시지 브로커 등의 용도로 사용합니다. 캐싱이란 무엇인가요? 더보기 캐싱이란 데이터를 빠르게 가져오기 위한 중간 저장소를 뜻 합니다. 주로 메모리에 데이터를 저장하여 디스크 보다 빠른 접근 시간을 가집니다. 데이터를 계산하거나 서버에서 가져오는 작업은 시간과 리소스가 많이 듭니다. 캐시를 사용하면 연산을 최소화하고 시간을 단축할 수 있습니다. 처음에는 데이터를 일반적으로 가져오고 캐시에 저장합니다. 그 이후 같은 데이터를 필요한 요청이 들어오면 서버에서 가져오는 ..
링크 https://softeer.ai/practice/info.do?idx=1&eid=624&sw_prbl_sbms_sn=246435 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 풀이 전광판의 숫자가 변할 때 몇 개의 전등의 스위치를 눌러야 하는지를 구해야 합니다. 이 때 전광판의 한 글자의 전등은 7개로 구성되어 있습니다. 먼저, 이 7개의 전등의 임의의 순서를 부여하여 어떤 숫자가 몇 번 전광판을 눌러야 하는지를 2차원 배열로 저장했습니다. 그 후 숫자 2개를 String으로 입력받았습니다. String으로 받은 이유는 한 글자씩 비교하기 편했고 자릿수 차이로 인해 불이 꺼진 전광판을 N 으로 구분하기 위해서 였습니다. 숫자 2개의 길이를 비교해서 길이가..
MySQL을 사용하다보면 No connection established 에러를 심심치 않게 만날 수 있다. 이 에러를 해결하는 방법을 정리해보려 합니다. can't connect to server on localhost 등등의 에러에서도 해결할 수 있습니다. No connection established 연결이 되지 않는다는 에러 문구로 MySQL이 중지됨 상태일 때 발생한다. 해결 방법은 작업 관리자에 들어가 MySQL을 실행 중으로 변경하면 된다. 해결 방법 작업 관리자 실행 (Ctrl + Alt + ESC) 서비스 페이지로 이동 MySQL을 찾은 다음 시작을 눌러 실행 중으로 변경