열심히 끝까지
[10분 테코톡] 에헴의 빌드용어 영상정리 본문
빌드 용어 정리(동영상 시청)
영상 : https://www.youtube.com/watch?v=JgRCaVwkPE8
원시파일 --컴파일러(컴파일)--> 오브젝트 파일
(소스코드) (이진코드)
ex) .java ex) .class
오브젝트 파일 ----링커(링크)----> 실행파일
(이진코드) + ex) .jar
ex) .class 외부 라이브러리
및
외부 리소스
컴파일 : 사람이 알아볼 수 있는 소스코드(사람의 언어)(ex. java)를
기계가 알아볼 수 있는 이진코드(기계언어)(ex.class)로 만들어 주는 작업
컴파일러 : 사람의 언어를 기계어로 바꾸어주는 장치
링크 : 만들어진 오브젝트 파일에 외부 라이브러리 및 리소스를 연결하여
실행파일로 만드는 작업
링커 : 오브젝트 파일과 필요한 외부 라이브러리 및 리소스를 연결하는 장치
빌드 : 사람이 알아들을 수 있는 원시파일을
실제 컴퓨터에서 프로그램으로 돌릴 수 있게끔 만드는 일련의 과정
컴파일 + 링크 하는 과정을 빌드라고 함(컴파일은 빌드 안의 부분집합으로 속해 있음)
빌드는 우리가 하는가? - 아니다!!
빌드를 하는 도구들이 존재
Java - ANT, gradle, Maven
: 시간순으로 ANT -> Maven -> gradle
: ANT
- 현대적인 빌드 도구(최초출시)
- xml 사용하여 빌드스크립트 작성(수직계층 구조)
- 절차적으로 작성
- 유연성이 좋다.
- 스크립트를 직접 명시
==> xml과 절차적이라는 특징이 모순적
: 수직계층 구조로 빌드하는 xml을 절차적으로
작성한다는 것은 모순
: ..쉬운말로 모자라다...;;
: 유연성이 좋지만 스크립트를 직접 명시해야하는 부분이
장점이자 단점(직접 짜면서 사용자 의도에 맞게 가능, 하지만 다 직접 명시)
: Maven
- pom.xml 사용(그냥 xml이 아닌 pom.xml파일 사용하여
빌드 사용 명시)
- 의존성 다운로드 가능(네트워크 상의 라이브러리를 직접
클립 몇번으로 다운 가능)
- 컨벤션(몇번의 코드 작성으로 나머지 다 Maven 처리, 간편함)
- 사용자 의도에 맞는 로직개발이 어려움
: gradle
- Groovy/kotlin 언어 사용하여 작성
- 유연성
- 스크립트의 규모가 작음
(Maven과 gradle 의존성을 추가할 때,
Maven은 5~6줄 쓸 것을 gradle은 한 줄로 추가 가능)
.Net framework - Dnnat, ..
C# - MSBuild, ..
빌드 도구란?
: 소스코드로부터 실행 가능한 어플리케이션을 생성하는 것(빌드)을 자동화하는 프로그램
자동화란?
: 매번 반복해야 하는 일
ex ) 서비스 중인 프로그램의 코드를 수정하는 경우...
1. 코드 수정
2. Git에 올림
3. 컴파일
4. 빌드
5. 배포
6. 테스트 코드 작성
7. 테스트 수행
8. 검증
.. 이 일련의 과정들을 계속 수동으로 처리해야 하지만
이 과정 중에서 굳이 사람이 하지 않아도 될법한 절차들 존재..
이 존재들을 프로그램이 알아서 자동으로 하게끔 하는 것
==> 그것이 "자동화"
빌드를 자동화 => 빌드 자동화
- 빌드 자동화가 하는 일
: 의존성 다운로드
: 소스 코드를 이진 코드로 컴파일
: 이진 코드 패키징
: 자동화된 테스트 실행
: 프로덕션 시스템 배포
배포를 자동화 => 배포 자동화
테스트를 자동화 => 테스트 자동화
빌드 도구나 빌드 자동화는 왜 사용할까?(꼭 사용해야 할까?)
- 작은 규모의 프로젝트일 경우 개인적으로 빌드 스크립트를 짜면 됨
: 규모가 작기 때문에 본인이 뭘 하는지 알 수 있고 파악하기 쉽기 때문
ex ) 사람 하나
- 큰 규모의 프로젝트일 경우, 뭘 하는지 알 수가 없음
: 규모가 너무 크기 때문에 어디있는 소스코드를 빌드하고 싶은지
파악이 잘 되지 않음
ex ) 넓은 광장에 가득 찬 사람
-- 그렇기 때문에 이 빌드 프로세스를 일관성있게 유지시키기 위해서
"빌드 자동화"사용
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(과제)' 카테고리의 다른 글
[능력 단위 평가] - 6/9 문제 코딩 + 다른 팀 문제 코딩 (0) | 2022.06.17 |
---|---|
[10분 테코톡] 던의 JVM의 Garbage Collector 영상정리 (0) | 2022.06.12 |
[10분 테코톡] 제이의 시간복잡도 영상정리 (0) | 2022.06.12 |
[10분 테코톡] 스티치의 빌드와 배포 영상정리 (0) | 2022.06.12 |
[코딩 문제] - 6/7~6/10 시간, 최대공약수, 최소공배수 (0) | 2022.06.10 |