Programming 144

Spring Boot - 프로젝트 구성하기

프로젝트 구성하기 Spring Boot는 동작을 위한 특별한 코드 레이아웃을 요구하지 않는다. 하지만 도움이 될만한 best practice는 존재한다. 클래스가 패키지 정의를 포함하고 있지 않을때, 디폴트 패키지로 정의된다. 일반적으로 디폴트 패키지의 사용은 권장하지 않고 반드시 피해야 한다. @ComponentScan 또는 @EnitityScan 이나 @SpringBootApplication 사용할 때 모든 jar의 모든 클래스를 읽어야 하므로 특정한 문제가 발생할 수 있다. 자바의 추천 패키지 네이밍 규칙은 domain명을 역순으로 사용하는 것이다. (com.example.project) 일반적으로 메인 어플리케이션 클래스를 다른 클래스들의 상위 root 패키지에 위치시키는 것을 권고한다. @Ena..

Spring Boot - 빌드시스템

디펜던시 관리를 지원하는 빌드 시스템을 선택하기를 강력하게 추천하고 Maven Central 리파지토리에서 배포한 artifacts를 사용하기를 권고한다. 그래서 우리는 Maven 이나 Gradle을 추천한다. Spring Boot는 다른 빌드시스템(예 - Ant)를 지원하지만, 부분적으로 잘 지원하지 못할 수 있다. 메이븐 사용자는 spring-boot-starter-parent 프로젝트를 상속받을 수 있다. parent 프로젝트는 다음과 같은 내용을 지원한다.기본 컴파일러 Java 1.6UTF-8 소스 인코딩디펜던시 관리 부분 - spring-boot-dependencies POM으로 상속되는 공통적인 디펜던시에 대한 version 태그를 누락할 수 있게 제공한다. 합리적인 리소프 필터링합리적인 플러..

Spring Boot - 시작하기

소개 스프링 부트는 stand-alone, production-gradle 스프링 기반 어플리케이션을 쉽게 만들 수 있게 도와준다. Spring 플랫폼과 third-party 라이브러리에 대한 독단적인 뷰를 가지고 있어서 논쟁없이 시작할 수 있다. 대부분의 Spring Boot 어플리케이션은 최소한의 스프링 설정을 필요로 한다. Spring Boot를 활용해 자바 어플리케이션을 생성하면 -jar 또는 전통적인 war 디플로이먼트를 이용해 시작할 수 있다. 또한 우리는 spring scripts를 실행할 수 있는 커맨드 라인 툴을 제공한다. 주요한 목적은 다음과 같다.모든 스프링 개발에 더 빠르고 널리 접근할 수 있는 getting started 경험을 제공한다.독단적인 out of box가 되자. 그러나..

Hadoop - 클러스터 세팅

목적 이 문서는 몇개의 노드부턴 수천개의 이르는 노드까지 주요한 하둡 클러스터를 어떻게 설치하고, 설정하고 관리하는지에 대해 설명한다. 먼저 할 일 일단 하둡 릴리이즈 버젼을 다운로드 하자. 설치 하둡 클러스터 설치는 일반적으로 머신에 소프트웨어를 압축을 해제하거나 RPM을 설치하는 것을 얘기한다. 일반적으로 클러스터의 한 대의 머신은 네임노드로 사용되고 나머지 머신은 리소스매니져로 이용된다. 이들이 마스터이다. 나머지 클러스터의 머신들은 데이터노드와 노드매니져이다. 이것이 슬레이브이다. Non-secure 모드로 하둡 클러스터 기동하기 다음 섹션은 하둡 클러스터를 어떻게 설정하는지에 대해 설명한다. 하둡 설정에 이용되는 두가지 타입의 주요한 설정 파일은 다음과 같가.Read-only default co..

Programming/Hadoop 2015.03.20

Linux - 심볼릭 링크, symbolic link

POSIX 호환 운영 체제에서 심볼릭 링크는 symlink 시스템 호출을 사용하여 만든다. ln이라는 셸 명령은 보통 하드 링크를 만들어내는 link라는 시스템 호출을 사용한다. ln -s 플래그가 지정되면 symlink() 시스템 호출이 대신 사용되면서 심볼릭 링크를 만들어낸다. 심링크는 U.C. 버클리의 4.2BSD 유닉스에 도입되었다.다음의 명령은 명령 줄 인터페이스 (셸)에서 심볼릭 링크를 만들어낸다:ln -s [대상 경로] [링크 경로] 대상 경로는 심볼릭 링크가 가리키는 상대 경로나 절대 경로이다. 일반적으로 대상은 존재하지만 심볼릭 링크는 존재하지 않는 대상을 가리키는데 사용할 수도 있다. 링크 경로는 심볼릭 링크의 경로이다.심볼릭 링크를 만들면 이 링크는 대상에 대한 별명(alias)으로 ..

Programming/Linux 2015.03.19

Spring XD - DIRT(Distributed Runtime)

Introduction 이 문서는 Spring XD 분산 런타임(DIRT)의 내부에서 일어나는 사항 특히, 런타임 아키텍처가 고가용성(HA)를 가지고 클러스트 프로덕션 환경에서 failover를 수행하는지에 대한 내용이다. 설치와 분산 모드 실행에 대한 더 많은 정보는 이전에 자료를 참조하자. Spring XD의 핵심 런타임 컴포넌트와 Spring XD의 상태를 관리하고 실패로부터 자동 복구가 가능하게 하는 Zookeeper의 역할에 대해 살펴본다. Configuring Spring XD for High Availability(HA) 프로덕션 상태에서 Spring XD 환경은 일반적으로 다수의 호스트간에 분산되어 클러스터된 환경일 것이다. Spring XD는 컨테이너 인스턴스를 추가할 떄마다 수평적으로 ..

ZooKeeper - 개요

주키퍼는 분산 어플리케이션을 위한 오픈소스 분산 코디네이션 서비스이다. 주요기능은 단순한 세트로 제공한다. 분산 어플리케이션은 동기화, 설정 관리, 그룹핑 및 Naming를 위한 고수준의 서비스를 구현할 수 있다. 프로그래밍하기 쉽게 설게 되었으며, 데이터 모델은 file system의 디렉토리 트리 구조와 유사해서 친숙할 것이다. 또한 Java나 C 모두 바인딩이 쉽다. 코디네이션 서비스는 정확성을 가지긴 매우 어렵다. 특히 race condition과 데드락 같은 에러가 발생하기 쉽다. 주키퍼의 목적은 코디네이션 서비스를 구현해야하는 분산 어플리케이션을 오류로부터 도와주는 것이다. Design Goals 주키퍼는 단순하다. 주키퍼는 분산 프로세스들의 코디네이션을 허용한다. 공유되는 계층 네임스페이스는..

ZooKeeper - 시작하기

이제 ZooKeeper에 대해서 알아보자. 아무것도 모르고 ZooKeeper를 도입해야 하는 상황이 생겼다. 빨리 Getting Started를 마스터 해야한다. 다운로드 아래의 주키퍼 공식 사이트로 접근을 해서 최신 릴리이즈를 다운로드 하자. 설치를 진행할 버젼은 3.4.6이다. http://zookeeper.apache.org/ Apache 미러 사이트에서 다운로드를 받을 수 있었고, 파일명이 zookeeper-3.4.6.tar.gz 이며, 용량은 16.9mb이다. StandAlone 역시 시작은 stand alone으로 해야겠지? 주키퍼 서버는 하나의 JAR 파일을 포함한다.. 그래서 설치는 설정을 포함한다. 일단 압축을 적당한 위치에 풀자. toddsonui-MacBook-Pro:zookeeper..

Spring XD - DIRT(Distributed Runtime) 시작하기

소개 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 - Source Module 개발하기

소개 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..