Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- KotlinInAction
- Python
- 코틸린인액션
- 7장 고급매핑
- 기능개발 python
- 스프링 핵심 원리 이해
- 스프링 컨테이너와 스프링 빈
- Kotlin in action 5장
- kotlin in action 정리
- 스프링 핵심 원리 - 기본편
- 13460 구슬탈출 2
- Kotlin In Action
- 싱글톤 컨테이너
- 백준
- 스프링 핵심 원리
- 객체 지향 설계와 스프링
- Kotlin in action 3장
- 컨베이어 벨트 위의 로봇 Python
- 고급매핑
- spring
- 코틀린인액션
- Kotlin in action 10장
- 20055
- 코틀린
- Kotlin in action 6장
- 백준 13460 Python
- 20055 컨베이어 벨트 위의 로봇
- 자바 ORM 표준 JPA 프로그래밍 7장
- 백준 20055 컨베이어 벨트 위의 로봇
- Kotlin
Archives
- Today
- Total
기록하는 습관
배치, 스케줄러 본문
Spring Batch
- 벡엔드의 배치처리 기능을 구현하는 데 사용하는 프레임워크
- 장점
- 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공
- 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공
- 배치가 실패하여 작업 재시작을 하게 된다면 처음부터가 아닌 실패한 지점부터 실행
- 중복 실행을 막기 위해 성공한 이력이 있는 Batch는 동일한 Parameters로 실행 시 Exception이 발생
참고
- chunk 지향 프로세싱
- transaction 경계 내에서 chunk 단위로 데이터를 읽고 생성하는 프로그래밍 기법
- tasklet
- 단일 작업에 사용합니다
- 일반적으로 Resource 삭제하거나 단순 쿼리를 질의하는 등 단일 작업을 수행합니다
- chunk
- 복잡한 작업에 사용합니다
- Reader, Processor, Writer 3가지 단계로 구성됩니다
- Reader, Writer는 필수이며 Processor는 선택적으로 사용됩니다
- 즉, 데이터 읽기, 가공, 저장의 순으로 처리됩니다
Spring Cloud Task
- @EnableTask 어노테이션으로 사용 가능
- https://luversof.github.io/bluesky-docs/spring/cloud/task/index.html
참고
Spring Cloud란?
- 분산 시스템에서 공통적인 패턴(구성 관리, 서비스 검색, 지능형 라우팅, 마이크로 프록시 등)을 모아 신속하게 구축할 수 있는 도구를 스프링 라이브러리 형태로 제공
- https://lion-king.tistory.com/11
- https://www.samsungsds.com/kr/insights/spring_cloud.html
airflow
- 복잡한 워크플로우를 프로그래밍 방식으로 작성해서, 스케줄링하고 모니터링할 수 있는 플랫폼
- 여러가지 태스크들(데이터셋 생성, 모델 학습 등)을 일련의 그래프로 연결하고 스케줄링, 모니터링 등 파이프라인 관리를 위한 다양한 기능을 제공하고 있는 Workflow Management Platform
- 장점/특징
- 서로에 대한 의존성을 표현할 수 있음
- 스크립트가 실패했을 때 알람을 보내 확인하고 쉽게 수정 후 재시도할 수 있음
- https://data-engineer-tech.tistory.com/30
- https://www.bucketplace.co.kr/post/2021-04-13-버킷플레이스-airflow-도입기/
@Scheduled()
- spring-boot 에서 자체적으로 지원하는 Scheduler
- quartz처럼 정밀한 스케줄러 관리는 할 수 없음.
참고
Quartz
- Clustering 기능을 제공한다. 다만, 완벽한 Cluster간 로드 분산은 안됨.
- Quartz에서는 Job 관리가 쉽지 않음. 전반적인 scheduler 관리를 위해 UI를 따로 만들어야 함. → Jenkins를 이용하면 UI 사용 가능.
- spring batch / quartz 리서치
Jenkins
- 장점
- 대시보드 / 이력관리 / 로그인 / 계정 권한 관리 등의 기본적인 관리 기능 지원
- 다양한 Job 실행 환경
- 파이프라인
- 단점
- 파일 기반의 설정 정보
- Jenkins 설정 정보를 비롯한, Job 실행 이력, Job 설정 정보 등이 모두 파일로 관리된다.
- 빈약한 검색 기능
- 설정들이 모두 파일로 되어 있기 때문에 검색 기능이 파일 검색 기반이 된다.
- 백업 & 이중화의 어려움
- 파일 기반이다 보니 rsync 등으로 백업 서버로 계속 동기화 하지 않는 이상 주기적인 외부 파일 서버로 디렉터리 통째 업로드 하는 방법으로 백업을 진행해야 한다.
- 파일 기반의 설정 정보
- https://jojoldu.tistory.com/489
Teamcity
- JetBrains의 CI 도구
- 장점
- 파이프라인 / 스케줄링 등 Jenkins가 지원하는 대부분의 기능을 동일하게 지원한다.
- 설정 정보들이 DB로 관리되고 있다.
- 백업/이중화는 DB만 이루어지면 된다.
- Teamcity는 어디든 설치만해서 바로 DB 연결만 하면 똑같은 Teamcity 환경이 구성된다.
- 여러대의 서버를 운영한다고 해도 스케줄링/설정 등에 대한 관리 요소가 전혀 없다.
- DB에서 다 관리중이니, 각 TeamCity 서버에 대한 동기화 걱정이 없다.
- 당연히 별도의 기능이 필요한 경우 API를 사용해도 되고, 직접 Teamcity 설정 정보를 담고 있는 DB에 Query를 날려서 사용해도 된다.
- 단점
- 일정 규모이상에서는 유료 플랜이 필요함.
- 결국은 CI/CD 도구이다보니 배치쪽으로 발전 방향이 향하고 있진 않다.
- 플러그인 생태계가 Jenkins에 비해 약하다.
Spring Cloud Data Flow
Cloud Foundry 및 Kubernetes에서 스트리밍 및 일괄 데이터 처리 파이프라인을 구축하기 위한 마이크로서비스 기반 툴킷
- 웹 대시보드, REST API, JAVA DSL, console shell 다양한 인터페이스로 제공
- 로컬, Cloud Foundry 및 Kubernetes 위에서 설치 및 운영 가능
- 스케줄링 기능은 Cloud Foundry 및 Kubernetes에서만 사용 가능, 일반 서버에서는 X
- SCDF의 상태 및 데이터 관리는 관계형 DB에서 관리
- 기본적으로 h2 DB와 연동되지만 실행시 데이터가 초기화 되기 때문에 운영에서 사용시 MySQL, MariaDB와 같은 관계형 DB를 연결해주어야 함
- 지원되는 데이터베이스는 H2, HSQLDB, MySQL, Oracle, Postgresql, DB2 및 SqlServer가 있음
- https://programmer-chocho.tistory.com/13
'개발 > Research' 카테고리의 다른 글
[Research] Springfox Swagger2 -> Springdoc OpenAPI 3 (0) | 2022.07.12 |
---|---|
tomcat vs. hikaricp (0) | 2022.07.12 |
Mybatis vs. JPA (0) | 2022.07.12 |
Java (0) | 2022.07.12 |
Spark, Hadoop (0) | 2022.07.12 |
Comments