-
[Java] 배포란?(+ CI/CD)Java 2021. 12. 3. 12:52반응형
배포란(Deploy)
작성한 코드를 빌드하고, 빌드가 완성된 실행 가능한 파일(jar war)을 사용자가 접근할 수 있는 환경에 배치한 것
즉, 빌드를 하고 생성된 jar 또는 war 파일을 WAS에 올리는 거나 .exe 파일로 만들어 사용자가 이용할 수 있도록 하는것이 배포입니다.
Jar은 무엇인가?
Java Archive(보관소) 의 약자로 Java 어플리케이션이 동작할 수 있도록 클래스, 라이브러리를 포함하여 자바 프로젝트를 압축한 파일입니다
War은 무엇인가?
Web Archive의 약자로 웹 어플리케이션이 동작할 수 있도록 JSP, Servelt, Jar, Class, XLM, Javascript 등을 포함한 웹 프로젝트를 압축한 파일입니다.
CI / CD
CI : Continuous Integration
개발자를 위한 자동화 프로세스인 지속적 통합으로 모든 개발이 끝난 이후에 코드 품질을 관리하는 고전적 방식의 단점을 해소하기 위해 나타난 개념
1. 코드를 통합한다
2. 통합한 코드가 제대로 동작되는지 테스트한다.
3. 제대로 빌드가 되는지 테스트한다.
4. 결과를 정리하고 버그가 존재하면 적어준다.
이런 반복 행위들이 귀찮기 때문에 CI 자동화를 도와주는 JenKins, Travis같은 도구가 나오게 되었습니다.
CD : Continuous Deploy
소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리하자는 개념
CI가 선행되어야 CD가 가능하기 때문에 CI/CD로 많이 불리게 됨
Jenkins vs Travis
둘다 사용해보지 않았기 때문에 간단하게 정리해 보겠습니다.
JenKins는 오픈소스이고, Travis는 상업용 서비스입니다. 하지만 JenKins의 경우에도 서버를 유지관리 해야 하기 때문에 추가비용으로 간주될 수 있습니다.
JenKins는 정교한 설정이 필요하여 시간이 오래 걸리지만 Travis는 시작하기 까지 시간이 적게 걸립니다.
커뮤니티의 경우에는 JenKins가 더 활발하고 많은 정보를 얻을 수 있습니다.
소규모 오픈 소스 프로젝트는 실행이 쉽고 설정이 빠르기 때문에 Travis CI에 가장 적합합니다. 반면에 대기업은 다양한 사용자 지정 기능을 제공하는 JenKins에 더 적합합니다.
출처
https://ifuwanna.tistory.com/224
[Java] JAR WAR 차이점 및 특징 ( + EAR )
JAR (Java Archive) WAR (Web Application Archive) 모두 JAVA의 jar 툴을 이용하여 생성된 압축(아카이브) 파일이며 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 있도록 관련 파일(리소스, 속성파일 등).
ifuwanna.tistory.com
https://startupdevelopers.tistory.com/237
빌드와 배포
1. 빌드란 - 컴파일과 빌드 2. 빌드 도구 가장 중요한 성능? 얼마나 간편하게 설정할 수 있는가? 라이브러리 의존성 관리? 3. 배포란(deploy-병사 배치) 4. CI/CD에 대하여 CI : Continuous Integration(지속적
startupdevelopers.tistory.com
https://www.youtube.com/watch?v=6SvUZqbU37E&t=594s
https://www.guru99.com/jenkins-vs-travis.html
Travis-CI vs Jenkins: What is the difference?
What is CI? Continuous integration is a software development method where members of the team can integrate their work at least once in a day. In this method, every integration is checked by an automa
www.guru99.com
'Java' 카테고리의 다른 글
[Java] 인터페이스(Interface) (0) 2021.12.16 [Java] 추상클래스(Abstract Class) (0) 2021.12.15 [Java] 빌드란?(+빌드 도구) (0) 2021.11.30 [Java]객체 지향 프로그래밍(Object Oriented Programming) (0) 2021.11.25 [Java] 얕은 복사와 깊은 복사 (0) 2021.11.15