전체 글

전체 글

    스프링 배치 도메인 이해 - Job

    스프링 배치 도메인 이해 - Job

    Job JobInstance JobParameters JobExecution Job 기본 개념 배치 계층 구조에서 가장 상위에 있는 개념으로서 하나의 배치작업 자체를 의미함 예) “API 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치“ 인 Job 자체를 의미한다. Job Configuration 을 통해 생성되는 객체 단위로서 배치작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체 배치 Job 을 구성하기 위한 최상위 인터페이스이며 스프링 배치가 기본 구현체를 제공한다 여러 Step 을 포함하고 있는 컨테이너로서 반드시 한개 이상의 Step으로 구성해야 함 기본 구현체 SimpleJob 순차적으로 Step 을 실행시키는 Job 모든 Job에서 유용하게 사용할 수 있는 표준 기..

    시작

    시작

    프로젝트 구성 및 의존성 설정 Lombok도 추가 implementation 'org.projectlombok:lombok' 스프링 배치 활성화 EnableBatchProcessing과 DefaultBatchConfiguration 둘 다 Spring boot 3 부터는 사용하지 않아도 자동 활성화된다. @EnableBatchProcessing 총 4개의 설정 클래스를 실행시키며 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다 스프링 부트 배치의 자동 설정 클래스가 실행됨으로 빈으로 등록된 모든 Job 을 검색해서 초기화와 동시에 Job 을 수행하도록 구성됨 DefaultBatchConfiguration 추가 @EnableBatchProcessing가 JobRepository, JobLauncher..

    소개

    소개

    스프링 배치 탄생 배경 자바 기반 표준 배치 기술 부재 배치 처리에서 요구하는 재사용 가능한 자바 기반 배치 아키텍처 표준의 필요성이 대두 스프링 배치는 SpringSource(현재는 Pivotal)와 Accenture(경영 컨설팅 기업) 의 합작품 Accenture - 배치 아키텍처를 구현하면서 쌓은 기술적인 경험과 노하우 SpringSource - 깊이 있는 기술적 기반과 스프링의 프로그래밍 모델 Accenture는 이전에 소유했던 배치 처리 아키텍처 프레임워크를 Spring Batch 프로젝트에 기증함 https://docs.spring.io/spring-batch/docs/4.3.x/reference/html/spring-batch-intro.html#spring-batch-intro 배치 핵심 ..

    Spring Batch

    목차 소개 시작 도메인 이해 실행 청크 프로세스 (1) 청크 프로세스 (2) 반복 및 오류 제어 멀티 스레드 프로세싱 리스너 테스트 및 운영 Spring Boot 2.x 와 Spring Boot 3.x 차이 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M5-Release-Notes Spring Boot 3.0.0 M5 Release Notes Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub. github.com https://www.inflearn.com/course/스프링-배치/dashboard..

    어플리케이션 배포 - Docker Container (1)

    어플리케이션 배포 - Docker Container (1)

    Microservices 실행 Intellij IDEA Exported JAR file Docker Container 여기선 Docker + Local에 배포하겠다. Docker network Bridge network 아무런 설정없이 사용하는 네트워크 호스트와 별로로 가상의 네트워크를 만들고 가상의 네트워크에서 만든 컨테이너들을 배치해두고 사용하는 것 Host network 네트워크를 호스트로 설정하면 호스트의 네트워크 환경 그대로 사용 포트 포워딩 없이 내부 어플리케이션 사용 None network 네트워크를 사용하지 않는 것 docker 네트워크 확인 docker 네트워크 생성 gateway와 subnet 마스크를 지정하지 않고 만들수 있지만 그럴 경우 나중에 자동으로 container의 ip가 할..

    어플리케이션 배포를 위한 컨테이너 가상화

    어플리케이션 배포를 위한 컨테이너 가상화

    어플리케이션을 컨테이너 가상화 기반으로 운영한다. Virtualization 가상화 물리적인 컴퓨터 리소스를 다른 시스템이나 어플리케이션에서 사용할 수 있도록 제공 플랫폼 가상화 리소스 가상화 하이퍼 바이저 - Virtual Machine Manager(VMM) 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼 Type 1 : Native or Bare-metal Type 2 : Hosted (일반적인 맥, 윈도우) Container Virtualization OS Virtualization Host OS 위에 Guest OS 전체를 가상화 VMWare, VirtualBox 자유도가 높으나 시스템에 부하가 많고 느려짐 Container Virtualization Host OS 가 가진 리소스를 적게 ..

    Mircroservice 모니터링

    Mircroservice 모니터링

    Turbine Server 마이크로 서비스에서 발생하는 각종 로그나 결과값들을 Hystrix 클라이언트의 스트림을 통해서 전송하게 되면 전송된 내용들을 모아서 (수집)로그파일처럼 가지고 있다가 Hystrix Dashboard나 다른 모니터링 도구에 전달하는 역할 Hystrix Dashboard Hsytrix 클라이언트에서 생성하는 스트림을 시각화 Micrometer + Monitoring System으로 대신한다. Micrometer http://micrometer.io/ JVM 기반의 어플리케이션의 Metrics 제공 -> 모니터링 할 정보 수집 Spring Framework 5, Spring Boot 2 부터 Spring의 Metrics 처리 Prometheus 등의 다양한 모니터링 시스템 지원 Ti..

    장애 처리와 Microservice 분산 추적

    장애 처리와 Microservice 분산 추적

    마이크로 서비스는 하나의 어플리케이션이 아니라 여러개의 서비스로 나눠져서 개발되다보니 각각의 서비스에서 문제가 생길경우 어떻게 처리하고 시작점이 어디고 끝났을때 반환을 어디에 해야할지 흐름이 중요하다. CircuitBreaker와 Resilience4j 사용 Microservice 통신 시 연쇄 오류 현재 order-service를 실행시키지 않고 요청했을 경우 getOrders()를 호출하는 과정에서 에러가 발생하여 user-service로부터 500에러를 반환받게 된다. getOrders() 가 에러가 발생하면서 500 반환되는게 맞는거 같지만 하나의 서비스가 멈춘다고해서 모든 서비스가 정지 되면 안된다. 그래서 CircuitBreaker를 활용해서 microservice 사이의 호출에서 에러가 발생..

    데이터 동기화를 위한 Kafka 활용 2

    데이터 동기화를 위한 Kafka 활용 2

    데이터 동기화 Orders -> Catalogs Orders Service에 요청된 주문의 수량 정보를 Catalogs Service에 반영 Orders Service에서 Kafka Topic으로 메시지 전송 -> Producer 역할 Catalogs Service에서 Kafka Topic에 전송된 메시지 취득 -> Consumer 역할 코드 작업 순서 : Consumer -> Producer 로 작성하면 편함 Catalogs Service 수정 org.springframework.kafka spring-kafka KafkaConsumerConfig.java (https://kafka.apache.org/0102/javadoc/org/apache/kafka/clients/consumer/ConsumerC..

    데이터 동기화를 위한 Kafka 활용 1

    데이터 동기화를 위한 Kafka 활용 1

    Apache Kafka 란? https://engineering.linecorp.com/ko/blog/how-to-use-kafka-in-line-1/ Apache Software Foundation의 Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트 (메시지 브로커 : 특정 시스템에서 다른 시스템으로 메시지를 전달할 때 사용하는 서버) 모든 시스템으로 데이터를 실시간으로 전송하여 처리할 수 있는 시스템 데이터가 많아지더라도 확장이 용이한 시스템 중간에 Kafka를 도입해서 데이터베이스(스토리지서비스)에서 전송하는 데이터가 어떤 시스템에 저장되는지 관계하지 않고 오직 Kafka 하나만 상대하게 된다. 누가 보내고 받는지 신경쓰지 않고 메시지를 보내게 된다. Producer / Consumer 를 ..