본문 바로가기

전체 글81

Spring batch에서의 Job Job이란 배치 계층 구조에서 가장 상위에 있는 개념으로, 하나의 배치 작업 그 자체를 의미한다. Job Configuration을 통해 생성되는 객체 단위 반드시 한 개 이상의 Step으로 구성된다. 배치는 큰 틀에서 Job 설정 → Step 설정 → 설정한 Job을 JobLauncher가 실행 → Job 구동 → Job이 각각의 Step을 실행 → Step이 Step 안에 정의한 Tasklet을 실행의 순서로 실행된다. Job의 종류 1) SimpleJob 순차적으로 Step을 실행시키는 Job을 말한다. 보편적인 Job을 만들 때 사용된다. 2) FlowJob 특정한 조건과 흐름에 따라 Step을 구성하여 실행시키는 Job을 말한다. Flow 객체를 실행시켜 작업을 진행한다. JobInstance .. 2023. 3. 21.
Spring batch의 기본 구성 스프링 배치란? 배치 프로세싱은 일괄처리라는 뜻을 가지고 있으며, 일괄처리의 의미는 일련의 작업을 정해진 로직으로 수행하는 것입니다. 스프링 배치는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공합니다. 스프링 배치가 필요한 상황 대용량의 비지니스 데이터를 복잡한 작업으로 처리해야하는 경우 특정한 시점에 스케줄러를 통해 자동화된 작업이 필요한 경우 의존 관계에 있는 step 여러 개를 순차적으로 처리해야하는 경우 스프링 배치의 핵심 패턴 Read (DB, 파일, 큐에서 다량의 데이터 조회) Process (데이터 가공) Write (데이터를 수정 된 양식으로 다시 저장) 스프링 배치의 아키텍처 1. Application S.. 2023. 3. 21.
프로세스/스레드 동기화 동시다발적으로 실행되는 프로세스/스레드들은 서로 협력하며 영향을 주고받는다. 이 과정에서 공유 자원 또는 데이터가 있을 때 여러 프로세스가 동시에 해당 자원에 접근하게 되면, 자원의 일관성이 깨질 수 있고 이에 따른 문제가 발생할 수 있다. 이렇게 여러 프로세스나 스레드가 동기화 메커니즘 없이 자원에 접근하려는 상황을 Race Condition(경쟁 상태)라고 한다. 따라서 Race Condition 상태에서, 프로세스들의 순서를 정하여 데이터의 일관성을 유지시키는 작업을 프로세스 동기화라고 한다. 임계구역 문제 멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유자원의 코드 영역을 임계구역이라고 한다. 임계구역에서 발생하는 문제를 해결하기 위해서는 다음의 3가지 조건을 모두 충족시.. 2023. 3. 19.
쓰레드 세이프(Tread Safe) 멀티 스레드 환경에서의 스레드 세이프 (Thread Safe) 쓰레드 세이프(Thread Safe)란 멀티 스레드 프로그래밍 과정에서 어떤 공유 자원(함수, 변수, 객체 등)에 여러 스레드가 동시에 접근해도 프로그램 실행에 문제가 없는 상태를 말한다. Thread Safe를 지키기 위한 조건 Re-entrancy 어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바르게 주어져야한다. Thread-local Storage 공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막는다. Mutual exclusion 공유 자원을 꼭 사용해야 할 경우 해당 자원의 접근을 락으로 통제한다. Atomic .. 2023. 3. 19.
Sync vs Async & Block vs Non-Block 동기(Synchronous) vs 비동기(Asynchronous) 동기와 비동기는 프로세스의 수행 순서 보장에 대한 매커니즘이다. 즉 처리해야 하는 작업들을 어떠한 흐름으로 처리할 것이냐에 대한 관점이다. 동기는 요청과 그 결과가 동시에 일어나는 것을 말한다. 즉 요청을 하면 시간이 얼마나 걸리던지 요청한 결과가 주어질 때 까지 계속해서 기다리게 된다. 그래서 I/O 작업 요청 상황에서도 하나의 System call이 끝날때까지 기다려서 그 결과물을 가져온다. 반대로 비동기는 요청과 결과가 동시에 일어나지 않는 것을 말한다. 하나의 요청에 대한 응답을 즉시 처리하지 않아도, 그 대기시간 동안 다른 요청에 대한 처리가 가능한 방식이다. system call이 완료되지 않아도 기다리지 않고, 작업이 완료가 .. 2023. 3. 19.
캐시 메모리 캐시 메모리(Cache Memory) 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 하는 메모리 주기억장치와 CPU사이에 위치 속도가 빠른 장치와 느린 장치간의 속도 차에 따른 병목현상을 줄이기 위한 범용 메모리 캐시메모리를 사용하면 주 기억장치를 접근하는 횟수가 줄어들어 컴퓨터의 처리속도가 향상 CPU는 데이터를 가져오기 위해 캐시메모리 -> 메모리(RAM) -> 보조기억장치(HDD) 순으로 접근한다. Cache hit ✅ : 캐시 메모리의 데이터를 CPU 레지스터에 복사한다. Cache Miss ❎, Memory hit ✅ : 메모리에서 데이터를 캐시 메모리에 복사하고 캐시 메모리의 복제된 내용을 CPU 레지스터에 복사한다. Cache Miss ❎, Memory Miss ❎.. 2023. 3. 18.