우아한 테크톡
[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