보라코딩

WW32 본문

개발자가 되었다?

WW32

new 보라 2024. 8. 8. 20:51
240805



- 스프링 배치 : 대량의 데이터를 효율적으로 처리하기 위해 설계된 프레임워크
- 스프링 스케쥴러 : 특정 시간에 작업을 실행하기 위해 설계된 도구


- 스프링 배치 리팩토링 시작
ㄴ 1. postgresql로 jdbc랑 jpa 각각 도커로 연동 문제
ㄴ 2. hexagonal 적용해서 어떤 방식으로 재구성할지.. reader processor writer
- mysql 스터디

 

*** DB에 의미없는 데이터 빨리 많이 넣는 방법 ***

START TRANSACTION;
insert into BeforeEntity (username) values ('중복데이터넣자');
insert into BeforeEntity (username) select username from AfterEntity ;
commit;

 

 

 

 

240806

 


* Spring Batch의 Step에선 reader, processor, writer가 각자의 역할을 수행하는데, 이 때 processor는 1개의 아이템을 받아 처리 후 그 1개의 아이템을 writer가 받아, 청크 사이즈만큼 모이면 write(List) 메서드를 호출해 배치 인서트로 저장하는 구조입니다.

* 스프링 배치 파라미터 줄 때 객체의 경우, json으로 변환해서 받아야 함... ObjectMapper 사용


[ 스프링 배치 의문점 ]
자체 repository써서 작업하는게 성능이 좋을까 (service에서 호출하는 것보다)
sequence로 바꿔야만 병렬처리 되나?? 병렬처리 하지 말까. 트랜잭션 유지되게

 

240807



- spring batch를 hexagonal 아키텍처에 맞게 적용 완료
- DB 2개 연동 성공!!! 핵심은 @BatchDataSource
- feignClient를 아키텍처 구조에 맞게 adaptor로 변경


- 아키텍처 추가 고민 필요!! 더 알맞게

 

@StepScope는 스텝의 실행 시점에 동적으로 Bean을 생성하고 초기화할 수 있도록 해줍니다. 이는 런타임 중에 JobParameters나 StepExecutionContext와 같은 값을 주입받아 배치 작업을 유연하게 처리할 수 있게 해줍니다. Bean이 실행 컨텍스트와 파라미터를 기반으로 동적으로 초기화되기 때문에, 배치 작업의 유연성과 동적 처리가 가능해집니다.

 

 

 

 

240808



- 아키텍처에 맞게 수정 고민
- on/off 기능 넣기
- 성능 테스트 (멀티스레드 스케쥴러 vs 배치)

 

[ mysql study ]
* Pruning : 데이터베이스 쿼리를 최적화하기 위한 과정. 쿼리에서 불필요한 데이터를 제거하거나, 조회 범위를 축소하는 것
ㄴ 파티션 프루닝: 테이블이 여러 파티션으로 나뉘어 있는 경우, 쿼리 시 필요한 파티션만 읽도록 최적화하는 과정
* Working Set : 현재 사용 중인 데이터베이스 작업에 필요한 데이터와 인덱스의 집합 (워킹셋이 메모리에 상주해야함. 그렇지 않으면 디스크 I/O 증가)
* Archiving : 자주 사용되지 않는 데이터를 별도의 저장소로 이동하거나 백업하는 과정. 활성 데이터베이스의 크기를 줄이고 성능을 최적화 (ex. 오래된 로그)



 

240809

 

 


- 테스트코드 다시 수정


- interface 코드리뷰 받은거 수정
ㄴ (ok) feign client 코드 수정 필요! -> adaptor로도 이동 필요!!
ㄴ (ok) 카프카 토픽 하드코딩으로 변경
ㄴ (ok) 글로벌 카프카 변경
ㄴ (ok) 도커 컴포즈 만들고
ㄴ (ok) 글로벌 서비스 설정
ㄴ (ok) 테스트코드 다시 돌려보기
ㄴ (ok) on/off 기능 넣기


* 카프카 메세지 보내는 클래스 이름을 "서비스명StartPublisher" 이런식으로 하는게 더 이해하기 쉽다! 
  Consumer도 비슷하게 받고, 보내는 메세지 이름(레코드)도 서비스명StartMessage 이런식이 좋다!



* CLI로 토픽 보내기

kafka-console-producer.sh --broker-list localhost:29093 --topic queuing-서비스명-start
{"processId": 12, "taskId": 34}

'개발자가 되었다?' 카테고리의 다른 글

WW34  (0) 2024.08.23
WW33  (0) 2024.08.14
WW31  (0) 2024.07.31
WW30  (0) 2024.07.25
WW29  (0) 2024.07.18