우아한 테크톡

[10분 테코톡] 🐳스티치의 빌드와 배포

dauneee 2022. 1. 7. 21:58

1. 빌드란? 

 

- 소스 코드를 실행 가능한 소프트 웨어 산출물로 만드는 일련의 과정 ( 컴파일 링크 포함 )

- 컴파일 : 작성한 소스 코드를 바이너리 코드로 변환하는 과정
- 링크 : 여러개로 분리된 소스코드들을 컴파일한 결과물들에서 최종 실행 가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결해 주는 작업

 

 

2. 빌드 도구

 

- 소스 코드를 컴파일, 테스트, 정적 분석 등을 실시하여 실행 가능한 어플리케이션으로 자동 생성하는 프로그램

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

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

 

1) Maven

Maven
특징
- 프로젝트의 필요한 모든 종속성을 리스트 형태로Maven에게 알려주어서종속성을관리한다.

-XML, Repository를 가져올 수 있다.

-Pom.xml이라는 Maven 파일에 필요한 Jar, Class Path를 선언만 하면 직접 다운로드할 필요가 없이 Repository에서 자동으로 필요한 라이브러리 파일을 불러와 준다.

단점
- 라이브러리가 서로 종속할 경우 XML이 복잡해진다.

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

- 편리하지만 맞춤화된 로직 실행이 어렵다.

 

2) Gradle

Gradle
특징
- JVM 기반의 빌드 도구

- Ant와 Maven의 단점을 보완

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

- Groovy 기반 DSL로 작성한다.

- Build - by - cinvention을 바탕으로 한다 → 스크립트 규모가 작고 읽기 쉽다.

- 설정 주입 방식이다.

 

 

3.배포란?

- 작성한 코드를 빌드하고,

빌드가 완성된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치하면 배포가 완료된 것

 

ex) 빌드를 하고 생성된 jar 또는 war 파일을 WAS에 올리는 것이 배포!

 

4. CI 

CI : Continuous Integration ( 지속적 통합 )
- 개발자를 위한 자동화 프로세스인 지속적 통합으로 모든 개발이 끝난 이후에 코드 품질을 관리하는 고전적 방식의 단점을 해소하기 위해 나타난 개념

1) 코드를 통합한다.

2) 통합한 코드가 제대로 동작하는지 테스트한다.

3) 제대로 빌드가 되는지도 테스트한다.

4) 결과를 정리하고 버그가 존재한다면 적어둔다.

 

5. CD

CD : Continuous  Deploy ( 지속적 배포 )

- 소프트웨어가 항상 신뢰 가능한수준에서 배포될 수 있도록 관리하자는 개념

 

 

6. 무중단 배포 

필요조건

- 두 대 이상의 서버를 서비스해야한다.

- 다운 타임이 발생하지 않으려면 실제 서비스 중인 서버와 새롭게 배포한 서버가 동시에 존재해야한다.

- 비용을 줄이려면 배포할 때만 새롭게 서버를 띄우고, 배포가 완료된 후에 기존 서버는 죽이면 된다.

 

 

 

 

 

 

< 영상 >

https://www.youtube.com/watch?v=6SvUZqbU37E