ssausand-sunny / cs-study

면접.. 붙으려면 CS 공부 해야겠지?
0 stars 0 forks source link

Spring batch에 대해서 설명해주세요. #10

Open kjy0349 opened 3 months ago

kjy0349 commented 3 months ago

문제

Spring batch에 대해서 설명해주세요.

예상 꼬리 질문
  1. spring batch를 사용해 보셨나요? 사용해 보셨다면 어떤 때에 사용하셨나요?
  2. batch를 사용하지 않고 대용량 데이터 작업을 수행하는 다른 방법은 없나요?

들어가야 할 키워드 정리

Leeminw commented 3 months ago
세부사항

스프링 배치(Spring Batch)는 대용량 데이터를 처리하기 위한 프레임워크, 대량의 데이터를 처리하거나, 주기적이고 반복적인 작업을 실행하는 데 사용된다. #### spring batch를 사용해 보셨나요? 사용해 보셨다면 어떤 때에 사용하셨나요? 사용해본적은 없습니다. 하지만, 사용한다면 커머스 사이트의 경우 일 매출 집계나, 랭킹서비스, 구독 서비스에 사용한다면 효과적으로 사용할 수 있을것이다. #### batch를 사용하지 않고 대용량 데이터 작업을 수행하는 다른 방법은 없나요? hadoop, spark를 이용한 분산처리...?

Hunnibs commented 3 months ago
질문 답변

사용자의 개입 없이 대용량 데이터의 자동화된 처리를 진행합니다. 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 및 건너뛰기, 리소스 관리 등 대용량 처리에 필요한 모든 것을 관리하고 파라미터를 활용해서 중복된 실행 시 Exception을 발생하도록 해서 중복된 대용량 데이터 처리를 방지합니다.

꼬리 질문 답변

1. Spring batch가 아닌 다른 방식으로 대용량 데이터 처리를 하는 방법 - 유사한 방법으로 Spring Data의 JDBC를 이용하거나 Hybernate/JPA를 이용해서 대용량 데이터 작업 수행이 가능합니다. 배치 프로세싱을 설정하고 처리할 페이지의 크기를 설정하고 최적화와 트랜잭션 관리를 해준다면 두 방식으로도 충분히 대용량 데이터 처리가 가능합니다.

kjy0349 commented 3 months ago
예상 답안 Spring batch는 정기적으로 수행되는 대용량 데이터 처리 작업(배치 작업)을 수행하는 프레임워크 입니다. 이러한 대용량 데이터 처리 작업을 쉽게 구성하고 실행할 수 있도록 합니다.
예상 꼬리 질문 답안
  1. spring batch를 사용해보신 경험이 있나요?
    1. 아니오 사용해 본 경험은 없습니다. 사용하게 된다면, 커뮤니티 사이트의 경우 일일 게시글 작성량 조회와 같이 집계를 할 때 사용하게 될 것 같습니다.
  2. batch를 사용하지 않고 대용량 데이터 작업을 수행하는 다른 방법은 없나요?
    1. 쿼리를 수행할 때 Collection 객체가 아닌 Stream 객체 형태로 select해 한 번에 모든 데이터를 메모리에 로드하는것이 아닌, 스트림을 통해 데이터를 처리합니다. batch가 지원하는 리눅스 crontab과 같은 정기적 실행의 경우, Scheduled 어노테이션을 사용해 해결할 수 있습니다.
kgh2120 commented 3 months ago
예상 답변 Spring Batch란 Batch 작업, 일괄 처리하는데 특화된 라이브러리입니다. 이 특징으로 인해 반복적으로 대용량 데이터 처리에 있어서 장점을 보이는 라이브러리입니다.
예상 꼬리 질문 답변 - spring batch를 사용해 보셨나요? 사용해 보셨다면 어떤 때에 사용하셨나요? 사용해보지는 않았습니다. 제가 특정 시간에 일괄적으로 유저들에게 알람을 보내는 기능을 구현한 적이 있었는데, 이를 Spring MVC가 아닌 Spring Batch 상황에서 사용했다면, 웹 어플리케이션의 자원을 적게 사용할 수 있었을 거란 생각이 듭니다. - batch를 사용하지 않고 대용량 데이터 작업을 수행하는 다른 방법은 없나요? 대용량 데이터를 일괄적으로 처리할 경험을 해본 적은 없지만, jdbctemplate의 bulk 기능을 활용한다면, 조금이나마 성능 향상에 도움이 될 수 있다고 생각합니다. 목적에 따라 다르겠지만, Hadoop이나 Spark와 같은 빅데이터 관련 라이브러리 사용을 고려해볼 수 있을 것 같습니다.