# scheduler

71개의 포스트
post-thumbnail

SPRING | Quartz Scheduler

Quartz JAVA 스케줄링 오픈소스 라이브러리로, Spring과 함께 사용할 수 있다. 배치 작업이나 변경된 정보를 주기적으로 반영하고자할 때 사용한다. 기본 구성 job : 스케줄링할 실제 작업을 가지는 객체 jobDetail : job의 정보를 구성하는 객체 -> "어떤 작업을 할것인가" <

2023년 9월 13일
·
0개의 댓글
·
post-thumbnail

프로세스 2

💡 프로세스 2 > 지난 시간에 이어 프로세스에 대해 알아보자. 이번엔 프로세스 스케줄링을 위한 큐, 스케줄러, 스레드에 대한 내용을 다뤄보도록 하겠다. > 📌 순서 >> 프로세스 스케줄링을 위한 큐 스케줄러 스레드(Thread) 🌟프로세스 스케줄링을 위한 큐 > 여러 프로세스는 각 상황에 맞게 queue에 줄을 서게 된다. 프로세스들은 각 큐들을 오가며 수행된다. > Job queue✔️ >> 현재 시스템 내에 있는 모든 프로세스의 집합이다. > Ready queue✔️ >> 현재 메모리 내에 있으면서 CPU를 잡아 실행되기를 기다리는 프로세스의 집합이다. > Device queue✔️ >> I/O device의 처리를 기다리는 프로세스의 집합이다. > Resource queue✔️ >> 👉🏻 공유데이터에 대한 접근 대기 큐이다. 🌟 스케줄러(Sched

2023년 8월 31일
·
0개의 댓글
·
post-thumbnail

[Java] Quartz 사용법

참고사항 > 이번 프로젝트에서 Quartz 를 사용하게 되어서 테스트 환경을 구축하고 테스트 코드를 작성해봤습니다. 이 글은 해당 코드에 대한 정보 공유가 목적입니다. > > 아주 간단한 테스트를 위한 것이므로 Junit 은 사용하지 않았습니다. > > 작성된 코드들은 제 github에서도 확인 가능합니다. Maven - pom.xml 설정 Maven 프로젝트 생성하고, 아래와 같이 의존성을 추가했습니다. Quartz 버전은 회사에서 사용하는 버전 2.3.2 로 맞췄습니다. logback 은 logback.xml 파일을 통해서 custom 하게 세팅할 수 있습니다. 그 방법은 맨 아래 참고 - 1. logback 설정 목차를 참고하시기 바랍니다. 참고로 jdk 는 17 버전을 사용했습니다

2023년 8월 29일
·
0개의 댓글
·
post-thumbnail

Hugging face의 Diffuser를 통한 이미지 생성

이번 포스팅에서는 Hugging Face의 stable-diffusion-v1-5 모델을 통해 이미지를 생성하는 여러 방법에 대해서 알아보도록 하겠다. Diffusers의 스케줄러란? Diffusers 라이브러리의 핵심 기능 중 하나는 스케줄러를 활용한 이미지 생성 파이프라인의 유연성과 커스터마이징 가능성을 제공하는 것이다. 스케줄러는 이미지 생성 과정에서 노이즈를 추가하는 방식과 타이밍을 제어하는데 사용되며, Diffusers 라이브러리는 다양한 스케줄러를 제공하여 사용자가 원하는 이미지 생성 결과를 얻을 수 있도록 한다. 사용한 스케줄러 본 포스팅에서는 총 일곱가지 스케줄러를 사용해서 생성한 이미지를 살펴보도록 하겠다. 사용할 스케줄러는 다음과 같다. LMSDiscreteScheduler DDIMScheduler, DPMSolverMultistepScheduler, EulerDiscreteScheduler, PNDMScheduler, DDPMScheduler,

2023년 8월 28일
·
1개의 댓글
·
post-thumbnail

[Pytorch]learning rate scheduler

learning rate scheduler중에 대표적으로 사용하는 것 중 하나인 cosine-annealing-with-warmup 방법이 있다. 또 스튜핏한 짓을 해버렸는데, epoch이 10짜리인 훈련에서 scheduler step을 epoch으로 가져가 버렸다. 그러면 당연히 epoch마다 lr이 고정돼있으니, 이게 하나 마나이지 않은가 ?? 그러니 꼭 사용하기 전에, iteration단위로 decay를 줄지, 아니면 epoch단위로 줄지 정하고 하자.. 아래 링크의 cosine annealing을 사용했다. > https:/

2023년 8월 26일
·
0개의 댓글
·

스프링 스케쥴러란 녀석을 만났다.

Spring Scheduler 오늘은 바로 코드부터 공개한다. 위 코드와 같이 scheduler를 사용한다. Spring Scheduler란 Spring에서 제공하는 기능이다. 이 기능은 개발자가 작성 해놓은 시각 혹은 시간마다 자동으로 함수가 실행되는 기능이다. Spring Scheduler를 사용하려면 우선 프로젝트 main 함수에 @EnableSechduling 어노테이션을 등록해야한다. * @Component* 이 어노테이션은 bean을 따로 등록하지 않아도 Bean Configuration 파일에 자동 등록된다.(Spring componet scan 기능) @Scheduled(cron= "0 5 0 * * *") 이 어노테이션은 스케줄이 실행되는 시각 혹은 시간을 설정하는 어노테이션으로 cron 정규식으로 설정한다. (cron 정규식은 구글에 너무나 많은 정보가 나와있다.) 본인이 설정한 시각은

2023년 8월 23일
·
0개의 댓글
·
post-thumbnail

트랜잭션 커밋이 제대로 이루어지지 않는 문제 in 스케줄링 작업

ᑒ 오류 ✐ 문제 원인 및 해결 방안 SqlExceptionHelper 데이터베이스에서 트랜잭션을 수행하는 동안, 다른 트랜잭션으로부터 요청된 락이 해제되지 않아 발생한 문제 ⇒ 락 충돌 발생 ! IllegalTransactionStateException 트랜잭션 상태가 부적절할 때 발생 in 스프링 트랜잭션의 예외 클래스 트랜잭션이 이미 완료된 상태에서 2번 이상의 커밋 또는 롤백이 시도된 경우 → 하나의 트랜잭션 내에서는 한 번의 커밋 또는 롤백만이 호출되어야 한다. ミ⛧ 결론 ⇒ [분석 결과] 트랜잭션 처리가 중복 호출되고 있다. 수동으로 관리해줘야 하는 부분과 자동으로 관리되는 부분의 경계를 찾아 제대로 트랜잭션 처리가 이루어지도록 해야 하고, 이를 위해서 로직과 경계를 수정해주자! 💡 적절한 트랜잭션 범위는?

2023년 8월 17일
·
0개의 댓글
·

AWS에서 스케줄링 작업을 예약하려면?!

서버에서 주기적으로 특정 로직을 수행하거나, 특정 시간에 푸시 예약을 발송하는 기능 등을 구현할 때 Scheduler를 사용한다. 이러한 기능들은 API 호출 또는 사용자의 이벤트 시에 처리하는 것들이 아니므로 모두 비동기적으로 작업이 이루어지는데, 이들 간에 작업이 쌓이거나 앞단에서 이루어지는 API 호출 등의 작업과 동시적으로 이루어져 병렬 수행할 수 있는 크기의 최대치를 넘어가게 되면 서버가 급격히 느려지거나 장애가 발생하게 되는 것이다. 현재는 스프링부트 내에 있는 Spring Scheduler 라이브러리를 사용해 cron으로 예약을 일괄적으로 걸도록 구현된 상태이지만, 이러한 작업을 효율적으로 최적화하기 위해 메시지 큐를 사용할 수도 있다. Spring Scheduler를 이용할 때는 cron 표현식을 각각의 부모자식 마다 지정해둔 뒤, Trigger로 예약한 작업을 수행하는 방식으로 구현을 했다. 이때 부모와 자식 모두 답변을 완료했다는 특정 조건을 충족했

2023년 8월 17일
·
0개의 댓글
·
post-thumbnail

AWS EventBridge에 대해 알아보자

EventBridge란? > 다양한 소스의 데이터와 애플리케이션을 연결하는 데 사용할 수 있는 서버리스 이벤트 버스 서비스 (⇒ AWS의 Scheduler ) > 이벤트 수신, 필터링, 변환, 라우팅 및 전송에 대한 규칙을 적용하는데, 이 규칙은 이벤트 패턴이라고 하는 이벤트 구조 or 일정에 따라 이벤트를 대상에 일치시킨다. 예를 들어, EC2 인스턴스 생성 및 삭제에 대한 이벤트가 감지되면 이에 따른 특정 이벤트를 수행하게 할 수 있다. EventBridge의 흐름 EventBridge는 이벤트를 수신하고, 이벤트를 대상으로 라우팅하는 규칙을 적용한다 이때 수신한 모든 이벤트는 이벤트 버스와 연결된다. 이벤트 버

2023년 8월 17일
·
0개의 댓글
·
post-thumbnail

AWS Lambda에 대해 알아보자

AWS Lambda 소개 > AWS의 ServerLess 컴퓨팅 FaaS 상품 > Lambda 함수가 호출되면 Lambda는 함수의 인스턴스를 할당하여 이벤트를 처리하고, 실행이 마치면, 다른요청을 처리할 수 있다. ServerLess란? “서버가 없다”는 의미로, 개발자가 서버를 관리할 필용 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리 등을 대신 처리해줌으로써, 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있다. 개발자들은 비즈니스 로직 작성에만 더욱 집중할 수 있게 한다. 파일 처리 ![](https://velog.velcdn

2023년 8월 17일
·
0개의 댓글
·
post-thumbnail

Chapter10. Scheduler

Scheduler > Reactor Sequence에서 사용되는 Thread를 관리해주는 관리자 > Scheduler를 위한 전용 Operator subscribeOn() 구독이 발생한 직후 실행될 스레드를 지정하는 Operator 원본 Publisher의 동작을 수행하기 위한 스레드 publishOn() Downstream으로 Signal을 전송할 때 실행되는 스레드를 제어하는 역할을 하는 Operator publishOn()을 기준으로 Downstream의 실행 스레드를 변경한다. parallel() Round Robin 방식으로 CPU 코어 개수만큼의 스레드를 병렬로 실행한다. parallel() runOn() publishOn()과 subscribeOn()의 동작 이해 publishOn() Operator는 한 개 이상 사용할 수 있다.

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

[Spring] Scheduler

Scheduler 스프링 스케쥴러는 일정 주기마다 특정 작업을 수행하기 위해서 사용된다. 개발자가 하나하나 신경쓰지 않더라도 Scheduler의 기능을 이용하면 원하는 기능을 수행할 수 있게된다. 실행주기를 설정하는 방법 fixedDelay : 이전 수행이 종료된 지점을 기준으로 일정시간이 경과했을 때 다음을 수행 fixedRate : 이전 수행이 시작된 지점을 기준으로 일정시간이 경과했을 때 다음을 수행 위의 두가지 방법은 이전에 수행했던 수행시점을 기준으로 일정시간 후에 다음 수행을 시작한다. fixedRate의 경우 작업에 소요되는 수행 시간이 fixedRate에서 지정된 시간보다 길어지면 두수행이 겹쳐서 발생할 가능성이 있기 때문에 fixedRate을 사용하여 스케쥴링을 할 때에는 주의가 필요하다. Cron 표현식 스케쥴링 시간은 정규 표현식을 사용하여 표현하는 규칙 초 / 분 / 시 / 일 / 월 /요일 / 년

2023년 7월 14일
·
0개의 댓글
·
post-thumbnail

[Spring] Scheduler

스케줄러란? 일정한 시간 간격 또는 일정한 시각에 특정 로직을 돌리기 위해 사용하는 것 배치를 구현하기 위해서는 스케줄러를 사용해야 함 → 배치와 스케줄러는 비교 대상이 아님! Spring에서 제공하는 스케줄러 Spring Scheduler Spring Quartz Spring Scheduler는 SpringBoot Stater에서 기본적으로 제공한다. 사용법 스케쥴러 활성화 앱 클래스에 @EnableScheduling 추가 스케쥴러 적용 스케줄링을 원하는 메서드에 @Scheduled 어노테이션을 붙여주면 된다. 스케줄링을 할 메서드는 아래 두 개의 조건을 만족해야 한다. return type이 void일 것 parameter가 없을 것 > [Cron Expression](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/spr

2023년 7월 10일
·
0개의 댓글
·
post-thumbnail

[Spring] 스케줄러를 이용해 지정한 시간에 Slack 메세지 전송하기

스케줄러를 사용하면 반복적인 업무를 효율적으로 처리할 수 있다. 그래서 이번 포스팅은 Spring 프레임워크에서 Scheduler 기능을 이용해 특정 시간에 slack 메세지 전송하는 방법에 대해 알아본다. ⏰ 스케줄러로 메세지 전송하기 👾 1. 메세지 전송 코드 작성 우선 슬랙 메세지를 보낼 코드를 작성을 해야하는데 코드에 대한 설명은 전에 다뤘기 때문에 생략했다. 보낼 내용은 String 변수에 담았고 요청/응답 부분에도 코드를 작성하고 예외 처리해 주었다. 그리고 기본 메서드에서 sendSlackPost()를 호출한다. 이제 스케줄러 코드를 작성하자 👾 2. 스케줄러 코드 작성 테스트

2023년 4월 24일
·
0개의 댓글
·
post-thumbnail

Combine - subscribe(on:) VS. receive(on:)

서두 요즘 Combine을 조금씩 공부해보고 있다. 커스텀 연산자도 만들어보면서.. 근데 이 과정에서 신기한 것이 있었다. 바로 subscribe(on:) 연산자. 아래는 나와 회사 팀원들이 같이 고민해보고 찾아본 결과를 토대로 작성한 글이다. 요약 나는 Combine의 subscribe(on:)이 스트림에 대한 기본 쓰레드 지정용으로 쓰는 줄 알았다. 때문에 이 operator를 쓰면 - 일반적인 publisher에 쓰든 subject같은 값 주입이 가능한 publisher에 쓰든 항상 sink 클로저는 해당 쓰레드에서 돌아가게 되는 줄 알았다.(receive(on:)을 안썼다면) 그런데 그게 아니었다. 본론 - subscribe(on:) 참고를 위해 RxSwift subscribeOn 마블 그림을 가져와보았다. <im

2023년 3월 26일
·
2개의 댓글
·
post-thumbnail

Spring Batch란 무엇인가?

Spring Batch란 무엇인가? 소개 Spring Batch는 대량의 데이터 처리를 위한 경량화된 프레임워크로, 반복적인 작업을 수행하는 일괄 처리(Batch Processing) 작업을 효율적으로 처리할 수 있는 기능을 제공한다. 대용량 데이터 처리나 주기적인 업무 처리 등을 효율적으로 처리할 수 있고, 대용량 데이터 처리에 적합한 분산 방식의 처리를 지원한다. Spring Batch의 특징 Spring Batch는 많은 양의 데이터를 효율적으로 처리할 수 있으며, 다양한 기능을 제공한다. 대용량 데이터 처리, 트랜잭션 관리, 재시도 기능 등이 이에 해당된다. 대용량 데이터 처리 Spring Batch는 방대한 양의 데이터를 처리할 수 있다. 데이터 처리 작업을 분산 처리할 수 있어서, 대용량 데이터 처리에 적합하다. 트랜잭션 관리 Spring Batch는 트랜잭션 관리를 지원한다. 데이터 처리 중 실패한 작업은 롤백하여 데이터 일관

2023년 3월 24일
·
0개의 댓글
·
post-thumbnail

[Project] Spring Scheduler로 조회수 로직 캐싱 구현하기 (feat. Redis)

📘 이전 포스팅 >Spring Cache 적용으로 읽기 성능 최적화하기 (2) 이번엔 게시글에 대한 캐싱이다. 게시글 캐싱의 경우 마이페이지에 비해 고려해야할 사항이 많았다. 조회수 증가 좋아요 추가 이 두가지 요청은 빈번하게 일어나며, 이에 따라 게시글의 상태는 변화되어야 한다. 특히, 조회수의 경우 읽기 요청마다 DB의 상태가 변화되기 때문에 고민이 많았으며, 떠올린 방법은 크게 두 가지였다. 1. 요청마다 DB에 반영한다. 특정 row에 접근해 데이터를 변경하기 때문에, 요청마다 테이블을 조회해서 페이징 처리까지 하는 것보단 성

2023년 2월 23일
·
1개의 댓글
·
post-thumbnail

Spring WebFlux 스케줄러 @Scheduler로 http client 요청 돌리기

Scheduler란 무엇인가? (제목 전우치 톤으로 읽기) > @Scheduled is a fully viable option it is part of the org.springframework.scheduling.annotation package which means it has nothing to do with spring web etc. @Scheduled는 org.springframework.scheduling.annotation 패키지의 일부이므로 Spring Web 등과는 전혀 관계가 없다. 참고: How to create a scheduler in spring webflux? 처음엔 Quartz를 사용하려고 시도해봤는데 굳이 안 써도 될 것 같아서 기본 지원 스케줄러 사용했다.

2023년 1월 31일
·
0개의 댓글
·
post-thumbnail

React Scheduler 코드 파해치기

개요 React는 Scheduler를 통해 Concurrency 작업을 진행할 수 있게 해줍니다. React Scheduler는 여러 Task들을 어떤 순서로 처리해야 할지 Scheduling하고 pause 및 resume작업을 할 수 있게 도와주는 라이브러리입니다. 그리고 Scheduler는 기본적으로 Task를 효율적으로 peek, push, pop 하기 위해 우선순위 큐를 사용합니다.(이번 포스트에서 우선순위 큐에 대해 다루지는 않습니다.) Base Idea Frame 기본적으로 Javascript는 싱글스레드 환경에서 돌아갑니다. 이는 Javascript 코드가 실행되는 동안 브라우저가 다른 처리(이벤트, reflow, repaint 등)을 처리할 수 없습니다. 때문에 React에서 Sync환경에서 렌더링이 오래 걸릴 경우 화면이 멈추는 현상이 발생하기도 했을 것 입니다. 이를 해결하기 위해서는 화면이 그려지는 한 프레임 당 최대 16ms의 시간을 가져야

2023년 1월 29일
·
1개의 댓글
·