SlideShare a Scribd company logo
Understanding of Build,
Deploy and Test
유다슬
Accelerate developer productivity
From mobile apps to microservices, from small startups to big enterprises,
Gradle helps teams build, automate and deliver better software, faster.
Gradle?
Gradle is an open-source build automation tool focused on flexibility and
performance.Gradle build scripts are written using a Groovy or Kotlin DSL
• Highly customizable — Gradle is modeled in a way that customizable and
extensible in the most fundamental ways.
• Fast — Gradle completes tasks quickly by reusing outputs from previous
executions, processing only inputs that changed, and executing tasks in parallel.
• Powerful — Gradle is the official build tool for Android, and comes with support
for many popular languages and technologies.
DSL(Domain Specific Language)?
• 특정 도메인(산업, 분야등 특정 영역)에 특화된 언어를 말한다. 특정 영역의
문제 해결에는 그 영역에 맞는 특화된 도구를 사용하자라는 것이다.
• "문제 영역의 해결에는 그 영역의 언어를 전제로 둬야하며, 거기에서 프로
그래밍 솔루션을 꺼내는 것이 중요하다." - Dave Thomas
Groovy?
• 자바 가상 머신에서 작동하는 동적 타이핑 프로그래밍 언어이다.
• 그루비(Groovy)는 자바에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객
체 지향 프로그래밍 언어이다.
• 자바에는 없는 간편 표기법(syntactic sugar)을 지원하는 외에 리스트, 맵, 정
규식을 위한 구문을 제공함으로써 프로그래밍을 쉽고 간결하게 해 준다.
Java vs Groovy
빌드 자동화
• 빌드 자동화의 본질적 목적은 소프트웨어 개발자가 반복해서 하는 코딩을
잘 짜여진 프로세스를 통해 자동으로 실행하여, 믿을 수 있는 결과물도 생산
해 낼 수 있는 일련의 작업방식 및 방법을 말한다.
• 지속적인 통합(continuous Integration)과도 일맥상통되는 의미다.
지속적인 통합(Continuous Integration)
• 팀의 구성원들이 자신들의 작업을 각자 하루에 적어도 한 번씩 통합하는 소
프트웨어 개발 프랙티스를 의미한다.
• 반복가능하고 오류가 발생하기 쉬운 프로세스를 자동화하여 소프트웨어 통
합을 별 것 아닌 일로 만들고자 하는 것이 목적이며, 이를 위해서는 빌드 프
로세스 및 테스트 자동화 환경을 만드는 것이다.
지속적인 통합(Continuous Integration)-2
배포 파이프라인(Deployment Pipeline)
• 소프트웨어를 버전 관리 시스템으로부터 사용자에게 전달하는 프로세스의
자동화된 모습을 의미한다.
• 단대단(end-to-end) 자동화를 빌드, 배포, 테스트, 출시 프로세스에 적용하면
고품질의 복잡한 시스템을 지금까지의 경험에 비해 비용과 위험도를 확연히
낮춰 생산, 테스트, 배포를 할 수 있는데 이것이 바로 배포 파이프라인의 목
적이다.
배포 파이프라인(Deployment Pipeline)-2
배포 파이프라인(Deployment Pipeline)-3
지속적인 인도(Continuous Delivery)
• 소프트웨어가 언제든지 릴리즈될 수 있는 방식으로 소프트웨어를 구축하
는 소프트웨어 개발 분야를 의미한다.
• 애자인 선언의 첫 번째 원칙인 ‘최상위의 목적은 빠르고 지속적으로 가치 있
는 소프트웨어를 인도함으로써 고객을 만족시키는 것이다.’라는 개념을 이루
는 것이 목적이며, 이를 위해서는 기본적으로 지속적인 통합 및 배포 파이프
라인를 구축해야 한다.
Installing Gradle
Installing Gradle-2
• gradlew 파일은 유닉스용 실행 스크립트다. Gradle로 컴파일이나빌드 등을 할때, 아래와 같이 하면 로컬에 설치된
gradle을 사용한다.
• gradlew.bat 파일은 원도우용 실행 배치 스크립트다. 원도우에서 실행 가능하다는 점만 제외하면 gradlew와 동일
하다.
• gradle/wrapper/gradle-wrapper.jar 파일은 Wrapper 파일이다. gradlew나 gradlew.bat 파일이 프로젝트 내에 설치
하는 이 파일을 사용하여 gradle task를 실행하기 때문에 로컬 환경의 영향을 받지 않는다.
• gradle/wrapper/gradle-wrapper.properties 파일은 Gradle Wrapper 설정 파일이다. 이 파일의 wrapper 버전 등을
변경하면 task 실행시, 자동으로 새로운 Wrapper 파일을 로컬 캐시에 다운로드 받는다.
• build.gradle 파일은 의존성이나 플러그인 설정 등을 위한 스크립트 파일이다.
• settings.gradle 파일은 프로젝트의 구성 정보를 기록하는 파일이다. 어떤 하위프로젝트들이 어떤 관계로 구성되어
있는지를 기술한다. Gradle은 이 파일에 기술된대로 프로젝트를 구성한다.
Creating New Gradle Builds
• https://docs.gradle.org/current/userguide/installation.html
• https://guides.gradle.org/creating-new-gradle-
builds/?_ga=2.27069819.714745836.1528956749-550288824.1528956749
• http://theeye.pe.kr/archives/1990
Building Java Applications
• https://guides.gradle.org/building-java-applications/
• http://theeye.pe.kr/archives/1990
Reference
• https://gradle.org/ Gradle
• http://groovy-lang.org/ Groovy
• http://www.mimul.com/pebble/default/2013/06/21/1371806174467.html DSL
• https://chocolatey.org/ Chocolatey
• http://www.nextree.co.kr/p3452/ CI/CD
• http://nangpuni.net/?p=677 빌드자동화
SELECT question
FROM you

More Related Content

PPTX
Continuous Integration & Collaboration
PPTX
Agile back to basics
PDF
ALM과 DevOps 그리고 Azure DevOps
PDF
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
PDF
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
PDF
Atlassian Bamboo를 활용한 이상적인 DevTestOps 환경 구축 - 모우소프트
PDF
베스핀글로벌 DevOps 서비스 소개
PDF
지속적인 통합
Continuous Integration & Collaboration
Agile back to basics
ALM과 DevOps 그리고 Azure DevOps
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
Atlassian Bamboo를 활용한 이상적인 DevTestOps 환경 구축 - 모우소프트
베스핀글로벌 DevOps 서비스 소개
지속적인 통합

Similar to Backend Master | 3.1.3 Build - Java build tool - Gradle (20)

PDF
Configuration management best practices
PPTX
DevSecOps 그리고 협업 - GitLab
PPTX
polyglot application development in the cloud
PDF
위험기반테스트접근 테스트계획 사례
PPTX
Mastering devops with oracle 강인호
PPT
개발 생산성 향상 기법 V1.2
PDF
Open source community Building
PDF
Dev ops Introduction
PDF
협업도구 및 주요 Agile practices 적용사례 v1.0
PDF
[Atlassian meets dev ops and itsm] infrastructure for devops
PDF
클라우드 네이티브로의 전환을 위한 여정
PDF
[오픈소스컨설팅]소프트웨어 개발 준비 과정
PDF
01.개발환경 교육교재
PDF
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...
PDF
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
PPTX
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
PPTX
How to implement your dream 20150427
PDF
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
PDF
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
PDF
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Configuration management best practices
DevSecOps 그리고 협업 - GitLab
polyglot application development in the cloud
위험기반테스트접근 테스트계획 사례
Mastering devops with oracle 강인호
개발 생산성 향상 기법 V1.2
Open source community Building
Dev ops Introduction
협업도구 및 주요 Agile practices 적용사례 v1.0
[Atlassian meets dev ops and itsm] infrastructure for devops
클라우드 네이티브로의 전환을 위한 여정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
01.개발환경 교육교재
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
How to implement your dream 20150427
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
SonarQube와 함께하는 소프트웨어 품질 세미나 - 소프트웨어 품질의 중요성
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Ad

More from Kyunghun Jeon (10)

PPTX
Backend Master | 3.4.2 Deploy - Docker Introduction
PPT
Backend Master | 3.4.5 Deploy - Docker Principal
PPTX
Backend Master | 3.2.1 Test - JUnit
PPTX
Backend Master | 3.4.1 Deploy - Deploy Automation
PPTX
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build Lifecycle
PPTX
Backend Master | 3.1.2 Build - Java build tool - Maven
PDF
Backend Master | 3.1.1 Build - JS build tools
PPT
Backend Master | 2.2 Cache - Ehcache
PPTX
Backend Master | 2.1.4 Cache - Redis Clustering part.1
PPTX
Backend Master | 1.1 Enhancing performance - Scalability (Scale UP & OUT)
Backend Master | 3.4.2 Deploy - Docker Introduction
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.2.1 Test - JUnit
Backend Master | 3.4.1 Deploy - Deploy Automation
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build Lifecycle
Backend Master | 3.1.2 Build - Java build tool - Maven
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 2.2 Cache - Ehcache
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 1.1 Enhancing performance - Scalability (Scale UP & OUT)
Ad

Backend Master | 3.1.3 Build - Java build tool - Gradle

  • 1. Understanding of Build, Deploy and Test 유다슬
  • 2. Accelerate developer productivity From mobile apps to microservices, from small startups to big enterprises, Gradle helps teams build, automate and deliver better software, faster.
  • 3. Gradle? Gradle is an open-source build automation tool focused on flexibility and performance.Gradle build scripts are written using a Groovy or Kotlin DSL • Highly customizable — Gradle is modeled in a way that customizable and extensible in the most fundamental ways. • Fast — Gradle completes tasks quickly by reusing outputs from previous executions, processing only inputs that changed, and executing tasks in parallel. • Powerful — Gradle is the official build tool for Android, and comes with support for many popular languages and technologies.
  • 4. DSL(Domain Specific Language)? • 특정 도메인(산업, 분야등 특정 영역)에 특화된 언어를 말한다. 특정 영역의 문제 해결에는 그 영역에 맞는 특화된 도구를 사용하자라는 것이다. • "문제 영역의 해결에는 그 영역의 언어를 전제로 둬야하며, 거기에서 프로 그래밍 솔루션을 꺼내는 것이 중요하다." - Dave Thomas
  • 5. Groovy? • 자바 가상 머신에서 작동하는 동적 타이핑 프로그래밍 언어이다. • 그루비(Groovy)는 자바에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객 체 지향 프로그래밍 언어이다. • 자바에는 없는 간편 표기법(syntactic sugar)을 지원하는 외에 리스트, 맵, 정 규식을 위한 구문을 제공함으로써 프로그래밍을 쉽고 간결하게 해 준다.
  • 7. 빌드 자동화 • 빌드 자동화의 본질적 목적은 소프트웨어 개발자가 반복해서 하는 코딩을 잘 짜여진 프로세스를 통해 자동으로 실행하여, 믿을 수 있는 결과물도 생산 해 낼 수 있는 일련의 작업방식 및 방법을 말한다. • 지속적인 통합(continuous Integration)과도 일맥상통되는 의미다.
  • 8. 지속적인 통합(Continuous Integration) • 팀의 구성원들이 자신들의 작업을 각자 하루에 적어도 한 번씩 통합하는 소 프트웨어 개발 프랙티스를 의미한다. • 반복가능하고 오류가 발생하기 쉬운 프로세스를 자동화하여 소프트웨어 통 합을 별 것 아닌 일로 만들고자 하는 것이 목적이며, 이를 위해서는 빌드 프 로세스 및 테스트 자동화 환경을 만드는 것이다.
  • 10. 배포 파이프라인(Deployment Pipeline) • 소프트웨어를 버전 관리 시스템으로부터 사용자에게 전달하는 프로세스의 자동화된 모습을 의미한다. • 단대단(end-to-end) 자동화를 빌드, 배포, 테스트, 출시 프로세스에 적용하면 고품질의 복잡한 시스템을 지금까지의 경험에 비해 비용과 위험도를 확연히 낮춰 생산, 테스트, 배포를 할 수 있는데 이것이 바로 배포 파이프라인의 목 적이다.
  • 13. 지속적인 인도(Continuous Delivery) • 소프트웨어가 언제든지 릴리즈될 수 있는 방식으로 소프트웨어를 구축하 는 소프트웨어 개발 분야를 의미한다. • 애자인 선언의 첫 번째 원칙인 ‘최상위의 목적은 빠르고 지속적으로 가치 있 는 소프트웨어를 인도함으로써 고객을 만족시키는 것이다.’라는 개념을 이루 는 것이 목적이며, 이를 위해서는 기본적으로 지속적인 통합 및 배포 파이프 라인를 구축해야 한다.
  • 15. Installing Gradle-2 • gradlew 파일은 유닉스용 실행 스크립트다. Gradle로 컴파일이나빌드 등을 할때, 아래와 같이 하면 로컬에 설치된 gradle을 사용한다. • gradlew.bat 파일은 원도우용 실행 배치 스크립트다. 원도우에서 실행 가능하다는 점만 제외하면 gradlew와 동일 하다. • gradle/wrapper/gradle-wrapper.jar 파일은 Wrapper 파일이다. gradlew나 gradlew.bat 파일이 프로젝트 내에 설치 하는 이 파일을 사용하여 gradle task를 실행하기 때문에 로컬 환경의 영향을 받지 않는다. • gradle/wrapper/gradle-wrapper.properties 파일은 Gradle Wrapper 설정 파일이다. 이 파일의 wrapper 버전 등을 변경하면 task 실행시, 자동으로 새로운 Wrapper 파일을 로컬 캐시에 다운로드 받는다. • build.gradle 파일은 의존성이나 플러그인 설정 등을 위한 스크립트 파일이다. • settings.gradle 파일은 프로젝트의 구성 정보를 기록하는 파일이다. 어떤 하위프로젝트들이 어떤 관계로 구성되어 있는지를 기술한다. Gradle은 이 파일에 기술된대로 프로젝트를 구성한다.
  • 16. Creating New Gradle Builds • https://docs.gradle.org/current/userguide/installation.html • https://guides.gradle.org/creating-new-gradle- builds/?_ga=2.27069819.714745836.1528956749-550288824.1528956749 • http://theeye.pe.kr/archives/1990
  • 17. Building Java Applications • https://guides.gradle.org/building-java-applications/ • http://theeye.pe.kr/archives/1990
  • 18. Reference • https://gradle.org/ Gradle • http://groovy-lang.org/ Groovy • http://www.mimul.com/pebble/default/2013/06/21/1371806174467.html DSL • https://chocolatey.org/ Chocolatey • http://www.nextree.co.kr/p3452/ CI/CD • http://nangpuni.net/?p=677 빌드자동화

Editor's Notes

  • #4: DSL이란 특정 도메인(산업, 분야등 특정 영역)에 특화된 언어를 말한다.  "문제 영역의 해결에는 그 영역의 언어를 전제로 둬야하며, 거기에서 프로그래밍 솔루션을 꺼내는 것이 중요하다." 라고 Dave Thomas가 한 말을 생각하면 이해하기 쉽다. 특정 영역의 문제 해결에는 그 영역에 맞는 특화된 도구를 사용하자라는 것이다. 어찌보면 과도로 끝내도 될 일을 맥가이버칼을 들이대는 격이다. 그리고 표현 방식은 해당 도메인의 전문가가 이해할 수 있는 형태(고급 언어)여야 한다.
  • #6: 자바 소스는 컴파일해야만 사용할 수 있지만, 그루비 소스는 스크립트 파일 그대로 실행시킬 수도 있고, 자바처럼 컴파일하여 쓸 수도 있다. 거의 대부분의 자바 소스는 파일 확장자만 바꾸면 수정 없이 그루비에서도 쓸 수 있다.
  • #8: 소스를 실행 시스템으로 전환하는 과정은 컴파일, 파일 삭제, 데이타베이스 스키마 로딩등의 작업을 포함하는 복잡한 프로세스가 되기도 한다. 하지만 이 소프트웨어 개발 과정 중 이 부문의 많은 타스크들은 자동화 할 수 있으며, 반드시 자동화해야 한다. 사람들에게 생소한 명령어를 치게 하거나, 대화창을 클릭하게하는 것은 시간낭비이며, 많은 실수를 유발시킨다. 자동화된 빌드 환경은 시스템의 일반적으로 갖추어야 할 요건이다. 유닉스 분야에서는 이미 십여년 동안 make를 사용해 오고 있다. 자바커뮤니티는 Ant를 내놓았다. .NET 커뮤니티는 Nant를 사용하다가, 이제는 MSBuild를 이용한다. 단일 명령으로 이러한 스크립트를 실행시켜 여러분들의 시스템을 빌드하고 런치할 수 있도록 해야 한다.
  • #10: 일반적인 지속적인 통합 환경은 아래와 같다.
  • #12: 배포 파이프라인에서의 변경의 이동을 시퀀스 다이어그램으로 가시화하면 다음과 같다
  • #13: 전형적인 배포 파이프라인으로 필수 접근 방법을 담고 있다. 물론 실제 파이프라인은 프로젝트의 실제 소프트웨어 전달 프로세스를 반영한다.
  • #14: 지속적인 인도 개념을 프로젝트에 도입하기 위해서는 해당 프로젝트의 개발 및 운영 환경을 구축하고, 지속적인 통합 환경과 배포 파이프라인을 적용할 수 있는 배포 절차를 마련하는 것이 중요하다.
  • #15: Gradle Wrapper를 사용하는 목적은 이미 존재하는 프로젝트를 새로운 환경에 설치할때 별도의 설치나 설정과정없이 곧 바로 빌드할 수 있게 하기 위함이다. Java나 Gradle도 설치할 필요가 없다. 또한 로컬에 설치된 Gradle 또는 Java의 버전도 신경쓸 필요가 없다. 따라서 항상 Wrapper를 사용할 것을 권장한다.
  • #16: Gradle Wrapper를 사용하는 목적은 이미 존재하는 프로젝트를 새로운 환경에 설치할때 별도의 설치나 설정과정없이 곧 바로 빌드할 수 있게 하기 위함이다. Java나 Gradle도 설치할 필요가 없다. 또한 로컬에 설치된 Gradle 또는 Java의 버전도 신경쓸 필요가 없다. 따라서 항상 Wrapper를 사용할 것을 권장한다.