일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링
- Axon framework
- nestjs공부
- Flutter
- 플러터 개발
- nestjs
- 프로그래머스
- JPA스터디
- 기술공부
- JPA공부
- JPA
- 스프링 공부
- 자료구조공부
- 알고리즘공부
- 자바공부
- JPA예제
- 기술면접공부
- JPA 공부
- 스프링공부
- Kafka
- 카프카
- 코테준비
- nestjs스터디
- 플러터 공부
- 코테공부
- DDD
- K8S
- 스프링부트공부
- querydsl
- 스프링부트
- Today
- Total
목록분류 전체보기 (715)
DevBoi
Chunk란 데이터 덩어리로 작업할때 커밋사이에 작업되는 Row수이다. 즉, Chunk 지향 처리란, 한번에 하나씩 데이터를 읽어 Chunk라는 덩어리를 만들고, Chunk단위로 트랜잭션 처리를 하는 것을 의미한다. Chunk 단위로 트랜잭션을 수행하기 때문에, 실패에 대한 롤백도 해당 Chunk 단위로 되고 반영도 Chunk단위로 커밋이 된다. 해당 과 같은 구조로 동작한다. Reader에서 데이터를 읽고, Processor에서 가공하며, Chunk의 단위 별로 작동한다. Reader에서 쓰는 Paging은 데이터 조회에 대한 량이고, Chunk는 , 실제 한 트랜잭션당 반영되는 Row의 수이다. 즉 Reader 와 Processor가 일정 크기의 데이터를 가공하고 보관하여 저장하고 해당 Chunk s..
Spring Batch에서는 배치에 대한 실패가 발생했을 경우, Retry 관련 기능을 제공해준다. Retry 는 ItemReader에서는 동작하지 않는다. Writer, Processor에서만 동작한다. 따라서 ItemReader에서는 Skip만 지원한다는 것을 알아두자 Step은 기본적으로 Repeatable 템플릿을 사용한다. 하지만 실행될때 Retry Template에 실행을 위임한다. - ItemProcessor ItemProcessor에서 예외가 발생한다. Retry Template은 Repeat Template으로 돌아간다. Reader로 부터 다시 값을 요청하는 것이 아니라, 캐싱해서 가지고 있는 Input chunck를 가지고 와서 1부터 다시 프로세스를 동작한다. skip 과 다르게 실..
스프링 배치에서는 중간에 실패시에 많은 전략을 제공해준다. 1. Skip Skip 옵션은 각각의 단위에서 사용이 가능하다. 1. ItemReader 해당 부분에서 skip을 사용하는 경우를 생각해보자 ItemReader에서 Item을 읽다가 Exception이 발생하는 경우, 해당 아이템을 skip으로 넘기고 다음 아이템을 읽는다. 예를 들어, Item2 를 읽다가 Exception이 발생하면, 넘기고 Item3를 읽는다. 2.ItemProcessor 해당 ItemProcessor에서 Exception이 발생한다면, ItemReader로 돌아간다. ItemReader가 캐싱하고 있는 Input Chunk를 다시 받아와서 처음 부터 읽는다 해당 Exception이 발생한 부분을 만나게되면 skip 하고 다..
1. in Memory Repository 2. 배치 전용 H2 생성 근데, 둘다 그냥 사용하면 안된다. 사용하면 안되는 이유는 아래와 같다. 1. 배치 정보가, 메모리에 쌓이기 때문에 데이터가 영속적이지 않다. 2. 1번과 같은 사유로, 스키마에 대한 모니터링이 필요하다면 불가하다. 3. 배치 작업 진행동안, 메모리를 점유하게 되므로, 주기적으로 비워주는 작업을 해줘야한다. 그냥 앵간하면, 쓰자
Spring Batch의 구조를 살펴봤을떄 Job repostiory라는 것이 있었다. 이 부분에 대한 상세 포스팅을 하겠다. 총 6개의 테이블이 존재한다. BATCH_JOB_INSTANCE BATCH_JOB_EXECUTION BATCH_JOB_EXECUTION_PARAMS BATCH_JOB_EXECUTION_CONTEXT BATCH_STEP_EXECUTION BATCH_STEP_EXECUTION_CONTEXT - 배치 Job의 생성 정보를 담는 테이블이다. - Job의 실행 정보를 담는 테이블이다. Job의 수행여부를 profiling 할 수 있다. - Job 실행시 사용했던 파라미터에 대한 정보를 담아두는 테이블 이다. - 작업중 사용되는 모든 정보가 기록되는 Job의 Context를 저장하기 위한 ..
멱등성 : 연산을 여러번 적용하더라도, 결과가 달라지지 않는 성질 예를 들어서 오늘 날짜의 매출 데이터를 집계하는 배치가 있다고 가정하자 코드에서 만약에 LocalDate.Now가 있다면, 배치는 항상 오늘 날짜를 가져와서 혹은 오늘기준의 특정 날짜를 가져와서 배치를 실행 시킬 것이다. 근데 만약에,,,어제 배치를 다시 돌려달라고 하거나, 어제 배치가 오류가 나서 어제의 배치를 다시 돌려야할때는? 소스 수정 -> 배포 -> 롤백의 과정을 거쳐야한다. 이와 같은 것은 멱등성이 깨졌다고 할수있다. 해당 케이스의 경우에 멱등성을 지킬수 있는 방법은 몇가지가 있다. Spring Batch Job Parameter를 통해, 오늘날짜의 값을 외부에서 주입받아서 실행 시켜주면 된다. 그러면 이와 같은 경우에는 멱등성..
우선 스프링 배치의 구조이다. JobLauncher로 Job을 실행 시키고, 1:N관계로 있는 Job의 step 들이 실행된다. 또한 각 step에 있는 ItemReader, ItemProcessor,ItemWriter 들이 실행이 된다. 하나씩 더 살펴보도록하자 1) JobLauncher Job을실행 시키는 역할을 한다. SpringBatch가 Job의 이름을 받아서 실행 시켜준다. 2) Job JobInstance : 논리적인 Job실행 JobExecution : 한번 시도되는 Job 실행 JobParameter : Job들을 구분하는 파라미터, 오늘의 Job과 내일의 Job 이 다른 것에 대한 구분을 짓기 위함 3) Step Batch Job을 구성하는 형태이다. 하나의 스탭은 reader,writ..
Spring Batch - 스프링 배치는 백엔드의 배치처리 기능을 구현하는데 사용하는 프레임워크이다. 배치는 스프링 배치 설정 요소들을 간편화시켜 빠르게 설정하는데 도움을 준다. Spring Batch 장점 1) 대용량 데이터 처리에 최적화 되어 고성능을 발휘한다. 2) 효과적인 로깅, 통계처리 , 트랜잭션 관리 등 재사용 가능한 필수 기능을 지원한다. 3) 수동으로처리하지 않도록 자동화 되어있다. 4) 예외사항과 비정상 동작에 대한 방어 기능 존재 5) 스프링의 서브 프레임워크이기 떄문에, 스프링의 대표적인 기술들이 사용가능하다(Di, AOP) 6) 실행 이력에 대한 저장이 가능하고, 공유가 가능하다 Spring Batch 단점 -스케줄 기능을 제공하지 않아서 Quarz 나 jenkins와 같이사용한다.
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net
Http 소켓 통신은 계속 연결되어 있기 때문에, 사용자가 늘어남에 따라 부하가 커진다. 그래서 HTTP통신은 연결을 지속시키지 않고 끊어버리는 Stateless방식을 사용한다. 연결이 끊기기 떄문에 부하가 적지만, 이전에 보냈던 요청이나 되돌려준 응답에 대해서는 기억하지 못하는 단점이 있다. 1. 톰캣 웹서버와 was의 차이 1. 정적페이지와 동적 페이지 정적 페이지란 , 서버에 미리 저장된 파일이 그대로 전달되는 웹 페이지를 말한다. 서버에 저장된 데이터가 수정되지 않는 한 항상 동일한 페이지를 반환한다. 반면 동적 페이지는 서버에 있는 데이터들을 스크립트에 의해 가공처리한 후 생성되어 전달 되는 웹 페이지를 말한다. 서버는 사용자의 요청을 해석하여 데이터를 가공한 후 생성 된 웹페이지를 반환하며, ..