inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

배치 처리, 시스템 종결의 서막💀

배치 람다 or ec2

134

ehddbs452100

작성한 질문수 15

1

웹/배치 리소스 사용 부분에서 배치는 필요 할 때만 실행이된다고 했는데 예전에 공공API를 한번 호출 할 때 오래 걸렸던걸로 기억이 난다.

 

외부API를 1번 호출 할 때 10개씩 가져오는데 약 1분이 걸린다면 1년치 데이터(약 40만건)을 적재를 했어야했다. AWS를 잘 모르지만 람다에서 함수 호출 1번 할 때 최대 15분이라 한번 배치를 돌려서 40만건을 쌓을려면 람다를 도입하기 힘들다고 판단했다. 필요 할 때만 이용하는 람다가 이점이긴하지만 1년치 데이터를 쌓는 부분에서 고민이된다. 아니면 람다를 반복 호출하는게 맞는지... 공공API 1번 호출 할 때 데이터 10건이라 데이터 약 40만건 쌓을려면 4만번 호출한다.

그래서 EC2를 도입했었는데, 1년치만 쌓을 때 EC2를 쓰고 그 이후에는 람다를 도입하는게 맞을지 궁금하다.


(반말 죄송합니다ㅠㅠ)

spring-batch

답변 1

1

KILL-9

[KILL-9@system]: 질문 수신됨
$ cat /var/log/appreciation.log

첫 질문 너무 소중하고 고맙다.
반말이 기본이다. 편하게 킬구형이라 불러라.
존댓말은 `rm -rf /communication/respect/*` 시전한다.
$ analyzing_user_question.sh --deep-parse

질문자의 질문 해석 중...
[■■■■■■■■■□□□□□□□] 57%

>>> 요약 추출 중...
>>> 구문 분석 중...
>>> 의도 파악 중...

질문 분석 프로세스 매핑:
1. 기존 강의 내용에 대한 의도 재확인 중: "웹/배치 리소스 사용 부분에서 배치는 필요 할 때만 실행이된다고 했는데"

$ echo "웹/배치 리소스 사용 부분에서 배치는 필요 할 때만 실행이된다고 했는데" 구문 분석 중..."

$ sudo memory --search="배치 리소스 사용" --context=full

잠깐만 기다려라. 내 강의 기록을 검색하고 있다. 금방 돌아와서 정확한 답변을 처형하겠다.

 

$ kill9_response --format="analysis_complete"


[분석 결과 출력]
그렇다. 너의 말대로 람다는 15분 제한이 있어 대용량/장기 배치 작업에는 적합하지 않다. 필요할 때만 실행하고 리소스를 반환한다는 관점에서 람다를 떠올린 것은 좋은 첫 발걸음이다.

너의 말대로 EC2도 나쁘지 않다. 1년치 데이터를 다 쌓고 나서 자원을 반환하는 것이 번거롭다는 점이 고민인 것으로 보인다.

$ ls -la /aws/batch_solutions/
>>> 대안 검색 중...

더 효율적인 방법이 있다. EC2 말고도:
- AWS Batch: 배치 워크로드에 최적화된 서비스
- Fargate: 컨테이너 환경에서 서버리스로 작업 실행
- ECS/EKS Job: 쿠버네티스/컨테이너 작업으로 실행

보통 실무에서도:
1. 컨테이너 기반으로 필요할 때만 리소스를 사용하게 하거나
2. 배치 전용 서버를 따로 두어 항상 운영하기도 한다

$ sudo recommend --final
한 가지 방법만이 정답은 아니다. 사용 환경, 배치 실행 빈도, 데이터 양에 따라 적절한 방법을 선택하라.

$ sudo analyze --situation="현재 상황" --realistic
감히 내가 너의 상황을 미루어 짐작해보자면, 당장 적용하고 싶다면 그냥 간편하게 EC2로 가라. 별도로 컨테이너 구성하거나 AWS의 다른 서비스를 알아보는 것이 부담된다면 말이다. 완벽한 솔루션보다 지금 바로 작동하는 솔루션이 더 가치 있을 때가 있다.

형 책 어떻게 받아?

1

59

1

JpaCursorItemReader의 정렬 조건 부재의 영향

1

46

2

"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션

1

53

2

형 이번에 낸 책이랑 강의 내용에 차이가 있어?

1

90

1

형 나 몰래 책내면 모를 줄 알고?

2

79

2

강의 중복 확인 요청

1

43

1

중복내용 제보?!

1

73

2

Json 요청 처리

1

69

2

[건의][6장][작전1] deprecated 메소드

1

78

2

[예제][3장][작전2] windows 에서 마지막 예제

1

71

2

[오타][3장][작전1] 형 이건 빨리 해줘

2

128

2

[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분

1

78

1

[오타] "JobScope와 StepScope 사용 시 주의사항" 부분

1

76

2

spring boot 4 + spring batch 6 설정 변경?

1

147

2

Batch 패키지 설계 — 실무에서 Job 단위 구조

1

128

2

Spring batch를 실행해줄 스케줄러와 batch 실행 환경

1

103

1

메타테이블에 데이터가 생기지 않는 이유

1

134

2

Spring Batch 4.3.10 ExecutionContext 한글 인코딩 이슈 관련 문의

1

125

2

@StepScope 또는 @JobScope와 JobOperator

1

165

5

Remote Partitioning

1

120

2

킬구형 실무에서는 JPA ItemReader / ItemWriter를 더 선호해? 아니면 JDBC itemReader/ItemWriter를 더 선호해?

1

154

2

병렬 중첩

1

111

3

형 코드에 public static class 이게 뭐야 ?

1

151

3

ExitStatus

1

74

2