레이블이 개발환경인 게시물을 표시합니다. 모든 게시물 표시
레이블이 개발환경인 게시물을 표시합니다. 모든 게시물 표시

2017년 11월 2일 목요일

Maven 빌드 시 dependencies 모두 포함하기

참고 사이트
https://maven.apache.org/plugins/maven-assembly-plugin/usage.html
https://www.lesstif.com/display/JAVA/maven+assembly+plugin

맵리듀스 프로그래밍 시 Java, Hadoop 기본 라이브러리 말고 다른 라이브러리를 쓸 때 마다 classpath에 추가해 줘야 되서 귀찮음을 느끼고 있었는데, maven에서 dependencies를 모두 모아서 jar를 만들어 주는 기능이 있다는게 생각났다.

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      [...]
</project>

위에 처럼 pom.xml에 추가하고 maven 빌드하면 xxx-jar-with-dependencies.jar 파일이 하나 더 생긴다. 그 파일을 이용하면 별도의 classpath 입력 없이 사용 가능하다.

2017년 10월 18일 수요일

Jenkins

참고 사이트
https://jenkins.io/
https://plus4070.github.io/new%20things/Jenkins.html
https://www.slideshare.net/sunnykwak90/ss-59330863 설치 및 설정
https://www.lesstif.com/pages/viewpage.action?pageId=18219535

Jenkins는 Open Source CI(Continuous Integration) Tool 로써 팀의 구성원들이 작업한 내용을 정기적으로 통합하는 것을 의미한다.
개발팀이 개발 후에 소스를 저장소(Git, Svn 등...)에 commit만하면 Jenkins 서버가 주기적 또는 commit 시 마다(설정으로 변경 가능하다) 자동으로 빌드를 진행하고 성공하면 서버에 배포를 한다. 간단히 말하면 자동 빌드, 테스트, 배포 툴 정도라고 보면 되지 않을까...


Docker와 Vagrant의 차이



가상 머신(Virtual Machine)과 Docker의 차이

VMWare 같은 Virtual Machine은 일반적으로 아래와 같은 구조를 가진다. Host OS 위에 Hypervisor가 올라가고 그 위에 Virtual Machine을 생성해서 하드웨어를 가상화한다. 그 가상 하드웨어 위에 새로운 Guest OS를 설치해서 사용한다.

일반적인 Virtual Machine 구성


Docker는 하드웨어를 가상화하지도 않고 다른 OS를 통째로 올리지도 않는다. Docker는 Linux Container(LXC)라는 개념으로 OS간의 차이를 저장한다. 하드웨어를 가상화하지 않기 때문에 퍼포먼스가 좋다. 리눅스에서만 동작한다. 라고 알았는데 Docker for Mac, Docker for Windows 라는 것도 있다고는 한다.


Docker 구성

Vagrant란?

Vagrant는 간소화된 VM 관리 서비스이다. Vagrant만 있다고 해서 VM을 생성하거나 하진 못한다. VMWare나 Virtual Box와 같은 Hypervisor를 설치한 후 VM 생성 및 OS 설치를 자동화 하는 것은 가능하다.
자세한 설명 : KTH 슬라이드 쉐어

Docker와 Vagrant의 차이

출처 : https://www.upguard.com/articles/docker-vs-vagrant