일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA공부
- JPA
- Axon framework
- 스프링부트
- 프로그래머스
- DDD
- 자바공부
- 알고리즘공부
- 코테준비
- 코테공부
- Flutter
- 스프링부트공부
- nestjs스터디
- 스프링
- nestjs공부
- 자료구조공부
- querydsl
- K8S
- 스프링 공부
- Kafka
- 플러터 공부
- 플러터 개발
- JPA 공부
- 카프카
- JPA스터디
- 스프링공부
- JPA예제
- 기술공부
- 기술면접공부
- nestjs
- Today
- Total
목록Develop (320)
DevBoi
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와 같이사용한다.
Http 소켓 통신은 계속 연결되어 있기 때문에, 사용자가 늘어남에 따라 부하가 커진다. 그래서 HTTP통신은 연결을 지속시키지 않고 끊어버리는 Stateless방식을 사용한다. 연결이 끊기기 떄문에 부하가 적지만, 이전에 보냈던 요청이나 되돌려준 응답에 대해서는 기억하지 못하는 단점이 있다. 1. 톰캣 웹서버와 was의 차이 1. 정적페이지와 동적 페이지 정적 페이지란 , 서버에 미리 저장된 파일이 그대로 전달되는 웹 페이지를 말한다. 서버에 저장된 데이터가 수정되지 않는 한 항상 동일한 페이지를 반환한다. 반면 동적 페이지는 서버에 있는 데이터들을 스크립트에 의해 가공처리한 후 생성되어 전달 되는 웹 페이지를 말한다. 서버는 사용자의 요청을 해석하여 데이터를 가공한 후 생성 된 웹페이지를 반환하며, ..
WebClient는 RestTamplate과 차이가있다. 공통점은 둘다 HttpClient의 모듈이다 차이점은 RestTemplate과 달리, WebClient는 Non-blocking방식이다. 해당 방식이 필요한 이유는 네트워킹의 병목현상을 줄이고 성능을 향상 시키기 위해서이다. Core당 1개의 쓰레드를 이용합니다. 각 요청은 이벤트 루프 내 job으로 등록이됩니다. 이벤트 루프는 각 Job을 제공자에게 요청하고, 결과를 기다리지 않고 다른 Job을 처리한다. 제공자로부터 이벤트 루프로 콜백으로 응답이 오면, 결과를 요청자에게 제공한다. WebClient는 이벤트에 반응형으로 동작하도록 설계 되었다. 동시 접속자가 많으면, RestTemplate보다 뛰어난 성능을 가지며 Spring 커뮤니티에서는 R..
RestTemplate이란? Spring 3.0에서부터 지원하는 RestTemplate은 Http 통신에 유용하게 쓸 수 있는 템플릿이다. Rest 서비스를 호출하도록 설계되어 HTTP 프로토콜 메서드에 맞게 여러 메서드를 제공한다. 특징 -통신을 단순화 하고 RestFul 원칙을 지킨다. -멀티쓰레드 방식을 사용한다. -블라킹 방식을 사용한다. RestTemplate의 구동방식 쓰레드 풀은은 요청자 어플리케이션 구동시에 만들어진다. Request 는 먼저 큐에 쌓이게 되고 가용한 쓰레드가 있으면, 스레드에 할당되어 처리된다. 1 요청당 1스레드가 할당 된다. 스레드에서는 블로킹 방식으로 처리되어, 응답이 올때까지 해당 스레드는 다른 요청에 할당 될 수 없다. 정확한 동작 방식 1. 어플리케이션이 Res..
Dao와 repository는 Data Access한다는 관점은 같지만, Repository는 객체 중심, Dao는 데이터 저장소 중심인 것이다. Dao는 storage system에 더 가까운 개념, 상대적으로 low level concept이다. Repository는 Domain객체에 가까운 개념, 상대적으로 high level concept이다. Dao Data Access Object로 실제 영구저장소에 접근하는 객체이다. 테이블 단위로 설계가 되며, DB Sql단위로 설계가 된다. Repository Repository는 객체 상태를 관리하는 저장소로 볼 수 있다. 엔티티 자체를 저장하고 불러온다. Domain Driven Design에서 생긴개념이다. DB 테이블 보다 객체 중심의 Layer라..
Database Connection Pool이란? 사용자의 요청에 따라 무수한 Connection을 생성하면, 서버에 과부하가 걸리게 된다. 미리 설정해놓은 일정수의 Connection을 만들어 놓고 이것을 Connection Pool에 보관해두었다가 요청이 발생하면 제공을 하고 Connection 사용이 끝나면, 다시 Pool에 반환하여 보관하는 기술을 DB connectionPool이라고 한다. 해당 장점은 이렇다. -DB 접속 설정 객체를 미리 만들어 연결하여 메모리 상에 등록해 놓기 때문에 클라이언트가 빠르게 DB에 접속 가능하다. -DB connection 수를 제한 할 수 있어서 과도한 접속으로 인한 서버 자원 고갈 방지 기능 -DB 접속 모듈을 공통화해 DB서버의 환경이 바뀔 경우 쉬운 유지..