1 분 소요

빌드 및 배포01

순서

1.빌드

2.빌드 도구

3.배포

4.CI/CD

5.무중단 배포

6.무중단 배포의 종류

 

1.빌드란?

컴파일과 빌드

컴파일:작성한 소스 코드를 바이너리 코드로 변환 하는 과정 (컴퓨터가 이해할 수 있는 기계어로 변환하는 작업)

링크:여러개로 분리된 소스코드들을 컴파일한 결과물들에서 최종 실행 가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결 해주는 작업 (A와 B소스코드 파일에서 존재하는 메소드를 가지고 연결 시켜주는 작업)

정적:컴파일된 소스파일을 연결해 실행 가능한 파일로 만드는것

동적:프로그램 실행중 외부에 존재하는 코드를 연결 (ex) JVM 프로그램이 실행도중에 필요한 클래스를 찾아 클래스 패스에 로드 해주는 것)

빌드: 소스코드를 실행 가능한 소프트 웨어 산출물으로 만드는 일련의 과정(jar,war…)

 

 

2.빌드 도구

소스코드를 컴파일,테스트,정적 분석등을 실행 가능한 애플리케이션으로 자동 생성 하는 프로그램 (전처리,컴파일,패키징,테스팅,배포)

계속해서 늘어나는 라이브러리의 자동 추가 및 관리

라이브러리의 버전을 자동으로 동기화

종류:ant/maven/gradle(거의 ant는 안쓴다)

 

Ant

특징

   1. xml기반 빌드 스크립트를 개발
   
   2.규칙이 없다
   
   3. 절차적이다
   
   4. 생명주기를 갖지 않아서 각각의 Target에 대한 의존관계와 적업을 정의한다

단점

   1. 유연성이 높이나 복잡해지는 경우 빌드 과정에 이해가 어렵다
 
   2. xml,remote Repository를 가져올 수 없다
 
   3.스크립트 재사용이 어렵다

 

Maven

특징

 1.고정적이고 선형적인 단계의 모델을 기반으로 한다
 
 2.프로젝트에 필요한 모든 종속성(Dependency)를 리스트의 형태로 Maven에게 알려서 종속성 관리를 한다

 3.xml, Repository를 가져 올 수 있다 'jar','Class.Path'를 선언만 하면 직접 다운이 필요 없어 자동으로 라이브러리 파일을 불러와준다

단점

1.라이브러리가 서로 종속될 경우 xml이 복잡하다

2.계층적인 데이터를 표현하기에는 좋지만,플로우나 조건부 상황을 표현하기 어렵다

3.편리하나 맞춤화된 로직 실행이 어렵다

 

Gradle

특징

1.작업 의존서 그래프를 기반으로 한다

2.설정 주입 방식으로 제공한다 

3.JVM기반의 빌드 도구

4.ANT와 Maven의 단점을 보완

5.오픈소스 기반의 Build 자동화도구

6.Groovy 기반 DSL로 작성한다

7. 프로젝트 시작시 설정에 드는 시간을 절약할 수 있다.

댓글남기기