일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- hibernate
- scala
- elastic search
- elasticsearch
- spark
- Gradle
- 엘라스틱서치
- docker
- apache storm
- DDD
- Java
- hadoop
- 스프링 배치
- 제주
- Spring XD
- Spring
- Hbase
- Spring Boot
- Linux
- Clean Code
- Storm
- nginx
- Spring Batch
- Angular2
- 도메인주도설계
- hdfs
- design pattern
- SBT
- Domain Driven Design
- intellij
- Today
- Total
목록Programming/Spring XD (13)
욱'S 노트
Introduction 이 문서는 Spring XD 분산 런타임(DIRT)의 내부에서 일어나는 사항 특히, 런타임 아키텍처가 고가용성(HA)를 가지고 클러스트 프로덕션 환경에서 failover를 수행하는지에 대한 내용이다. 설치와 분산 모드 실행에 대한 더 많은 정보는 이전에 자료를 참조하자. Spring XD의 핵심 런타임 컴포넌트와 Spring XD의 상태를 관리하고 실패로부터 자동 복구가 가능하게 하는 Zookeeper의 역할에 대해 살펴본다. Configuring Spring XD for High Availability(HA) 프로덕션 상태에서 Spring XD 환경은 일반적으로 다수의 호스트간에 분산되어 클러스터된 환경일 것이다. Spring XD는 컨테이너 인스턴스를 추가할 떄마다 수평적으로 ..
소개 Spring XD 분산환경(DIRT)는 다수의 노드간 작업 처리 분산을 지원한다. Spring XD의 분산 런타임 환경은 다음과 같은 요소들로 구성된다. Admin - Stream과 job 디플로이를 관리하고 사용자를 위해 런타인 상태, 시스템 정보등을 REST 서비스로 제공한다.Container - Module과 배치 작업이 배포된 호스트Zookeeper - XD 클러스터의 모든 런타임 정보를 제공. 실행 컨테이너 트래킹(모듈 및 작업 배포, 스트림 정의, 디플로이 매니페스트)Spring Batch Job Repository Database - 배치 작업을 위해 필요한 RDBMS. HSQLDB가 제공되나 production에서는 적합하지 않다. JDBC를 지원하는 모든 데이터베이스면 가능하다.A ..
소개 Spring XD에서 현재 지원하는 4가지 타입은 stream을 위한 source, sink, processor 및 배치처리를 위한 job이다. 이번엔 custom source module을 개발해보자. Stream의 첫번째 모듈은 항상 source이다. Source 모듈은 Spring Integration으로 구성되며 외부리소스로부터 inbound channel adapter를 통해 데이터를 피딩받아 output channel로 메시지를 생성하는 역할을 담당한다. Spring Integration은 다양한 전송 및 데이터 저장소와의 연계를 위해 다양한 adapter들을 제공한다.(JMS, File, Http, Web Services, Mail 등등) 일반적으로 source 모듈은 기제공된 inbo..
소개 Spring XD는 stream을 정의하여 데이터를 획득하는 것을 지원한다. Stream은 module로 구성된다. Module은 캡슐화된 작업 단위를 재활용가능한 컴포넌트로 만든 것이다. Spring XD의 job 또한 모듈로서 구현되어야 한다. 모듈은 타입에 따라 분류될 수 있다. 타입은 일반적으로 모듈의 역할과 기능을 나타낸다. 현재 Spring XD 모듈의 타입은 source, sink, processor 그리고 job이다. 타입은 스트림에서 모듈이 어떻게 조합될지 혹은 배치 작업으로 디플로이 될 떄 사용될 지 여부를 결정한다. Source는 외부 리소스로 또는 이벤트로 부터 트리거되어 output을 제공한다. stream의 첫번째 모듈은 반드시 source여야 한다.Processor는 입력..
소개 Spring XD에서 가장 기본적인 stream은 source로부터 이벤트 드리븐 데이타를 획득하여 다수의 sink로 전달하는 것이다. Stream 프로세스는 XD Containter상에서 수행되며, Stream 정의는 XD Admin server를 통해 Container로 전달되면 배포가 완료된다. Source, Sink 그리고 Processor는 모듈의 기정의된 설정이다. 모듈 정의는 xd-root/xd/modules 하위 디렉토리에서 확인 할 수 있다. 모듈 정의는 일반적인 스프링 정의 파일이다. 정의에서는 EIP 패턴을 지원하기 위해 Spring integration의 Input/Output adapter와 Transformer와 같은 기존의 스프링 클래스들을 사용한다. Stream을 정의하..
소개 앞에서 현재 XD에서는 4가지 타입의 모듈(source, sink, processor, job)을 지원한다고 했다. 이제 job 모듈을 개발해보자. 간단한 작업 개발하기 사실상 Spring XD에서 job 모듈을 개발한다는 것은 Spring Batch를 기반으로 한다. 일반적인 배치작업을 개발하기를 원한다면 Spring Batch를 참조하기 바란다. 먼저 배치작업을 하나 정의해보자. 그냥 간단한 tasklet하나를 다음과 같이 지정하였다.설정 파일의 이름은 job-hello.xml으로 하자. 잘 살펴보면 일반 스프링 배치와 차이가 있다. 그것은 별도의 jobRepository의 설정이 필요없다는 것이다. 기본적으로 Spring XD에서 jobRepository를 관리하므로 여기서는 설정을 할 필요가..
소개 Spring Batch 기반의 배치 작업을 구동하고 모니터링 하는 기능을 Spring XD에서 제공한다. Spring Batch는 2007년 시작된 프로젝트로서 SpringSource와 Accenture가 함께 협력하였다. 강력한 batch 어플리케이션 개발을 지원하기 위해 이해하기 쉬운 프레임워크를 제공하자는 취지로 시작되었다. 배치 작업은 나름의 best practice와 domain 개념을 가지고 있었고, Accenture의 컨설팅 비즈니스 기반에 Spring Batch는 구축 되었다. Spring Batch가 사용되기 시작한 이후로 수천개의 엔터프라이즈 어플리케이션에 적용되었고 JSR-352(배치 처리를 위한 JSR 표준)의 기반이 되었다. Spring XD는 파일이나 데이터베이스로부터 데이..
소개 Spring XD는 데이터 획득, 실시간 분석, 배치 처리 및 데이터 추출을 위한 단일화된 분산 확장 서비스이다. Spring XD의 아키텍처는 백명이상의 개발자가 수년에 걸쳐 진행한 Spring Batch, Integration and Data 프로젝트에 기반한 아키텍처이다. 이러한 프로젝트 기반하에 Spring XD는 데이터 처리를 시작하기 위해 즉시 사용할 수 있는 서버와 설정 DSL을 제공한다. Spring XD는 두가지 모드의 동작을 가지고 있다. Single 모드는 하나의 프로세스가 모든 processing 및 administration을 담당한다. 이 모드는 어플리케이션의 쉽고 단순하게 개발하고 테스팅할 수 있도록 도와준다. 분산 모드는 클러스트에 작업을 분산할 수 있다. Adminis..
소개 Spring XD는 stream을 정의하기 위한 DSL을 제공한다. 배치 작업의 스텝 처럼 정교한 stream을 정의할 수 있도록 진화해오고 있다. Pipes and Filters 단순한 선형의 stream은 일련의 순서를 가진 모듈들의 집합이다. 기본적으로 Input Source, Processing Steps(optional) 그리고 Ouput Sink 이다. 가장 단순한 예제는 Http로 부터 읽어서 File 로 출력하는 것이다. DSL로 표현하ㅕㄴ http | file 스트림은 어떤 처리를 포함할 수 있다. http | filter | transform | file 스트림에서 모듈간의 연결은 |를 이용해서 표현한다. Module Parameters 각 모듈은 파라미터를 가질 수 있다. 모듈에..
소개 Spring XD는 설정할 수 있는 두 가지 주요 부문이 있다. 서버와 모듈이다. 서버(xd-singlenode, xd-admin, xd-container)는 Spring Boot 어플리케이션이고, 설정하는 방법은 Spring Boot Reference를 참조하기 바란다. YAML 기반의 설정 파일 servers.yml을 수정하는 것이 가장 단순한 케이스이다. servers.yml 설정 파일의 값들은 XD jar에 포함되어 있는 디폴트 application.yml 파일의 값들을 오버라이트 한다. 서버 설정 모듈 설정 모듈은 이름과 타입에 기초한 내포된 디렉토리 구조에 프로퍼티 파일을 위치함으로써 설정할 수 있다. 내포된 디렉토리 구조는 루트는 기본적으로 $XD_HOME/config/modules이다..