inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

배치 람다 or ec2

128

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의 다른 서비스를 알아보는 것이 부담된다면 말이다. 완벽한 솔루션보다 지금 바로 작동하는 솔루션이 더 가치 있을 때가 있다.

Json 요청 처리

1

28

2

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

1

45

2

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

0

37

1

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

2

92

2

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

1

59

1

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

1

64

2

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

1

96

2

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

1

94

1

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

1

87

1

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

1

104

2

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

1

103

2

@StepScope 또는 @JobScope와 JobOperator

1

144

5

Remote Partitioning

1

111

2

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

1

135

2

병렬 중첩

1

101

3

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

1

134

3

ExitStatus

1

65

2

Batch6: jobOperator.startNextInstance() throws UnexpectedJobExecutionException

1

124

5

jdbc 커서, 페이징에서 일대다 관계 데이터 뻥튀기 조회 처리 방법 질문

1

118

2

SkipPolicy는 여러번 불릴 수 있는가?

1

51

2

형 실무에서 배치 시스템은 어떤 식으로 HA를 구성해??

1

104

1

메타데이터 관리

1

62

2

2장. 작전2: 분산 서버 로그 처형 작전 Resource[]의 대체방안(읽어야할 내용이 매우 커지면?)

1

81

3

2장. 작전2: 분산 서버 로그 처형 작전 (시스템에 의존적인) SystemCommandTasklet 관련 질문

1

95

2