게시글
질문&답변
Spring Batch 배포 질문
안녕하세요.Spring batch 관련 자료를 찾아보다가 우연히 보게 되어, 답변 남깁니다!너무 뻔하긴 하지만, 절대적인 정답은 없고 모든 결정은 팀이나 회사의 상황에 맞게 이루어지면 될 것 같습니다 ㅎㅎ[배치 서버 프로젝트 구성]- 여기서 '프로젝트'가 소스코드의 그룹(?)이나 Git 레포지토리를 말씀하시는 거라면, Gradle 멀티 모듈과 같은 방식으로 프로젝트를 구성하면, 별도의 프로젝트를 만들지 않고, 공통된 로직이나 엔티티들을 여러 애플리케이션에서 참조하도록 구성할 수 있습니다.물론 별도의 프로젝트로 만들어도 괜찮지만, 하나의 프로젝트에서 개발하려면 멀티모듈로 구성하는 게 매우 합리적인 선택으로 생각됩니다.[배치 애플리케이션 배포]- 먼저 배치 애플리케이션은 실제적인 비지니스 로직을 수행하는 API 서버와는 분리되는 게 좋습니다. 배치 작업의 경우, 컴퓨팅 자원을 많이 사용하는 경우가 있을 수 있어서, API 서버와는 아예 분리되어야 서로 영향을 주지 않기 때문입니다.- 문제는 비용인데, 배치 애플리케이션의 경우 계속 서버가 떠 있을 필요 없이 작업이 수행될 때만 구동되도록 하는 게 비용적으로는 가장 좋습니다. 하지만 이렇게 하기 위해서는 EC2를 구동하는 것보다는 좀 더 높은 학습이 필요하긴 할 것 같습니다. AWS Batch, ECS, K8S 등등 EC2 이외의 배치 애플리케이션 구동을 위한 컴퓨팅 자원을 다루기 위한 학습이죠.그래서, 비용을 무조건 타이트하게 아껴야하는 것이 아니라면, EC2로 배치 애플리케이션을 구동하는 것도 좋은 선택이라고 생각됩니다. (Auto scaling group을 사용하면, EC2도 내렸다가 올렸다가 할 수는 있긴합니다.) [요약]- 배치 애플리케이션을 위한 별도의 프로젝트를 만들어도 된다. 하나의 프로젝트에서 개발할 것이라면 '멀티모듈' 고려하기.- API 애플리케이션과 배치 애플리케이션은 분리하는 게 좋다.- 배치 애플리케이션 배포 및 구동 방식은 비용과 학습곡선을 고려해서 결정하면 된다.
- 0
- 2
- 165
질문&답변
java.lang.NoClassDefFoundError: javax/persistence/Transient 에러
실무에서 잘 안쓰일 것 같아서 질문 삭제하려고 했는데, 삭제가 안되네요 ㅎㅎ;;일단 아래의 설정을 application.properties에 추가해서 우회하는 방식으로 했습니다.spring.jackson.serialization.fail-on-empty-beans=false
- 4
- 4
- 3.4K