[SpringBatch 연재 04] FlatFileItemReader로 단순 파일 읽고, FlatFileItemWriter로 파일에 쓰기
Spring Batch의 `FlatFileItemReader`와 `FlatFileItemWriter`로 CSV를 읽고 탭 구분 파일로 저장하는 방법을 다뤘습니다. 또한 헤더·푸터와 집계를 붙여 파일 출력 형식을 제어하는 예시를 소개했습니다.
![[SpringBatch 연재 04] FlatFileItemReader로 단순 파일 읽고, FlatFileItemWriter로 파일에 쓰기](https://devocean.sk.com/thumnail/2024/9/12/31cc382ba3e9282b13135d64254e8873330baa69f9800415902e704003242ccf.png)

Spring Batch의 `FlatFileItemReader`와 `FlatFileItemWriter`로 CSV를 읽고 탭 구분 파일로 저장하는 방법을 다뤘습니다. 또한 헤더·푸터와 집계를 붙여 파일 출력 형식을 제어하는 예시를 소개했습니다.
![[SpringBatch 연재 04] FlatFileItemReader로 단순 파일 읽고, FlatFileItemWriter로 파일에 쓰기](https://devocean.sk.com/thumnail/2024/9/12/31cc382ba3e9282b13135d64254e8873330baa69f9800415902e704003242ccf.png)
MSA로 분리한 DB를 다시 통합하기 위한 방법으로 MySQL Multi-Source Replication을 소개했습니다. 다만 테이블 충돌과 운영 복잡성 때문에 신중한 접근이 필요하다고 정리했습니다.

리눅스 환경에서 음성 전처리의 필요성과 디지털 오디오 처리 원리를 설명했습니다. Pulseaudio를 활용해 노이즈 감소와 에코 제거를 붙인 구성도 소개했습니다.

JetBrains의 경량 웹 프레임워크 Ktor를 소개하고 REST API 서버 셋업 방법을 설명했습니다. 환경별 설정 분리와 로그 설정, 간단한 CRUD 예시까지 함께 다뤘습니다.

Spring Batch의 Chunk Model과 Tasklet Model 차이를 정리했습니다. 데이터 규모와 처리 방식에 따라 적절한 모델을 선택하는 기준을 설명했습니다.
![[SpringBatch 연재 03] SpringBatch ChunkModel과 TaskletModel](https://devocean.sk.com/thumnail/2024/9/25/74f021b3ab022e65b987c73f6d5ccd913ec5bddb4c51ac0f3fd213bab5b9bf43.png)
실시간 접속자 관리를 위해 Bloom Filter와 Cuckoo Filter를 비교했습니다. 삭제가 필요한 변동 데이터에는 Cuckoo Filter가 더 적합하다고 설명했습니다.

Spring Batch의 Tasklet 예제와 Job, Step 등록 과정을 설명했습니다. 또한 배치 아키텍처와 실행·저장 정보의 흐름을 정리했습니다.
![[SpringBatch 연재 02] SpringBatch 코드 설명 및 아키텍처 알아보기](https://devocean.sk.com/thumnail/2024/9/10/31393040a5961489ffe09f8f0c7f2f6ced61fce87042ad84b267626d6a8b790a.png)
TypeORM에서 트랜잭션 기반 테스트 격리 시 세션이 달라지는 문제를 분석했습니다. 하나의 세션을 고정하기 위해 QueryRunner와 Repository 주입 방식을 사용했습니다.
![[Node.js] 트랜잭션을 활용한 테스트 격리 환경 구현하기(1/2)](https://devocean.sk.com/thumnail/2024/9/4/b3b2d4017fdd951afd27980944ce8f41a68589d419b4b62b1b8d2c26328f8346.jpg)
Redis를 MySQL, Memcached, ElastiCache와 비교하며 저장 방식과 성능 차이를 정리했습니다. 요구사항과 유스케이스에 맞춰 적절한 저장소를 선택하는 관점이 중요하다고 설명했습니다.
