BEST
개발 · 프로그래밍

/

데브옵스 · 인프라

Jenkins를 이용한 CI/CD Pipeline 구축

본 강의는 클라우드 네이티브 애플리케이션을 구성하는 4가지 핵심 요소(MSA, CI/CD, DevOps, Container) 중 하나인 CI(Continuous Integration, 지속적인 통합)과 CD(Continuous Deployment, 지속적인 배포) 파이프라인에 대한 다루는 강의입니다. 본 강의를 통해 CI/CD 도구인 Jenkins를 이용하여 로컬 환경과 클라우드 환경에 자신만의 자동화 파이프라인을 구축하고, 배포하는 데에 필요한 과정을 이해하고 실습해 볼 수 있습니다.

(4.7) 수강평 143개

수강생 3,995명

Thumbnail

초급자를 위해 준비한
[데브옵스 · 인프라, 백엔드] 강의입니다.

이런 걸
배워요!

  • Jenkins를 이용하여 애플리케이션의 빌드와 패키징, 배포 과정에 대해 학습할 수 있습니다.

  • CI/CD 자동화 파이프라인을 통해, 다양한 환경에 애플리케이션을 배포할 수 있습니다.

  • Docker와 Kubernetes 환경에 애플리케이션을 배포하는 과정과 Ansible을 이용하여 서버의 구성 정보를 제어하는 방법에 대해서 학습할 수 있습니다.

대세는 클라우드 네이티브! ☁️
CI/CD 자동화 파이프라인을 구축해 보세요.

📢 수강 전 확인해주세요!

  • 학습 환경에 따라 강의 오디오가 고르지 않을 수 있습니다. 섹션 0~2 수업 중 간헐적인 노이즈 음향이 들릴 수 있으니, 수강 전 강의 [미리보기] 수업을 확인해 주시기 바랍니다.

혹시, 여러분의 고민은 아닌가요?

개발을 완료한 결과물을 운영 서버에 어떤 방식으로 배포해야 하나요?

여러 환경에 결과물을 배포하려면 배포 환경을 어떻게 구성해야 하나요?

컨테이너 가상화 환경으로 애플리케이션을 구성하려면 어떻게 해야 하나요?

쿠버네티스 환경에 애플리케이션을 배포하려면 어떻게 해야 하나요?


데브옵스의 핵심, CI/CD 
Jenkins로 더 빠르고 강력하게!

젠킨스(Jenkins)?

지속적 통합(CI) · 지속적 배포(CD)를 도와주는 자동화 도구, Jenkins를 이용해 자동화 파이프라인을 직접 구축해볼 수 있습니다.

본 강의는 CI/CD 자동화 도구인 Jenkins를 이용하여 개발된 애플리케이션을 빌드하고 배포하는 데에 필요한 프로세스에 대해 이해하고, 자동화 파이프라인을 구축해 보는 과정입니다. 강의에서 쓰이는 20개의 학습 샘플을 통해, 수강생 여러분은 개발이 완료된 애플리케이션을 빌드 - 테스트 - 배포하는 데 필요한 전 과정에 대해 학습합니다. 또한, 로컬 PC와 클라우드 환경에 자신만의 자동화 배포 프로세스를 직접 구축해 볼 수 있습니다.

2010년대 이후 IT 시스템은 Resilient + Anti-Fragile + Cloud Native를 핵심 키워드로 발전해 왔습니다. DevOps라는 IT 문화가 생겨났고, 클라우드 네이티브 아키텍처가 도입되었으며, 시스템은 어떠한 환경에서도 유연성을 가지고 대처할 수 있어야 했습니다. 애플리케이션을 설계할 때 마이크로서비스 아키텍처 방식으로 도메인을 분리하여 개발하기 시작했고, 서비스는 적게는 수십 개에서 많게는 수백 개 이상으로 쪼개지기도 했습니다. 애플리케이션을 구성하는 각각의 서비스들은 개별적으로 개발, 빌드, 배포될 수 있는 환경으로 전환되었습니다. DevOps 환경에서는 서비스에 대한 개선 및 문제점을 빠르게 반영하도록 요구되었습니다. 개발 단위가 더 작게 구성되고, 배포도 더 자주 진행되어야 했습니다. 

이제는 개발자나 운영자가 하나의 애플리케이션을 구성하는 수십~수백 개의 서비스들을 더이상 일일이 빌드하고 패키징하고, 배포하는 작업을 수작업으로 처리할 수 없는 규모가 되었습니다. 시스템 자체의 복잡성을 떠나 애플리케이션을 구성하는 각각의 서비스를 빌드하고 배포하는 작업이 하나의 커다란 업무가 될 수도 있고, 작업 로드가 심하게 걸리는 요소가 되어버리기도 합니다.

오늘날 애플리케이션에 대한 지속적인 통합(CI)과 지속적인 배포(CD)를 위한 자동화 파이프라인을 구축하는 일은 클라우드 네이티브 환경에서 애플리케이션을 개발하기 위한 필수 불가결한 선택이 되었습니다. Git으로부터 코드를 가져오고, 빌드를 진행하고, 테스트 케이스를 실행하며, 배포를 위한 패키지를 만들고, 운영 시스템에 배포하는 전 과정이 자동화 프로세스에 의해 진행됩니다. 이러한 자동화 프로세스는 더 자주 빌드하고, 더 자주 테스트하고, 더 자주 배포할 수 있는 환경을 제공함으로써 결국에는 시스템 품질의 향상을 가져올 수 있게 됩니다.

“Jenkins를 이용한 CI/CD Pipeline 구축” 강의에서는

지난 “Spring Boot를 이용한 RESTful WEB Services 개발”과 “Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)” 두 편의 강의를 통해 웹 애플리케이션과 클라우드 네이티브 애플리케이션을 개발할 수 있는 가이드를 제공하였다면, 이번 강의에서는 Spring Framework + Spring Boot로 개발된 웹 애플리케이션을 로컬 환경이나, 클라우드 환경에 배포하기 위해 필요한 자동화 파이프라인을 구축해보는 과정을 경험해 봅니다.

이번 강의를 통해 수강생 여러분은 CI/CD에 대한 이해를 바탕으로 개발된 애플리케이션을 운영 환경에 배포하기 위한 자동화 파이프라인을 구축하고, 자신만의 배포 프로세스를 구축해 볼 수 있습니다.

함께 보면 좋은 강의 📖


이런 분들께 
추천합니다.

웹 애플리케이션을 
개발해 본 적이 
있는 분 

자신만의 CI/CD 
자동화 파이프라인을 
구축하려는 분 

운영 서버에 
애플리케이션을 
컨테이너 가상화 환경에 
배포하려는 분 

CI/CD 자동화 
파이프라인을 통해 
클라우드 환경에 
애플리케이션을 
배포하려는 분 

✅ 수강 후, 이런 것들을 할 수 있게 됩니다. 

  • 지속적인 통합과 지속적인 배포에 대해 이해합니다.
  • 로컬 환경에서 실습할 수 있는 배포 파이프라인을 구축해 볼 수 있습니다.
  • 자신이 직접 작성한 애플리케이션 또는 강의에서 제공되는 샘플 웹 애플리케이션을 이용하여 Tomcat 웹 서버와 Docker 가상화 환경에 배포할 수 있는 자동화 파이프라인을 구축할 수 있습니다.
  • 강의에서 제공되는 예제 스크립트를 바탕으로 자신만의 배포 환경을 구축할 수 있습니다.

학습 내용을 
확인해보세요.

💡 CI/CD 자동화 파이프라인 구축에 필요한 기본적인 내용을 학습하고, 실습 코드를 통해 직접 배포 프로세스를 구축해 볼 수 있습니다. 수강생 분들은 자신이 사용하는 환경에 맞게 로컬 환경에서의 배포클라우드 환경에서의 배포를 모두 실습해 볼 수 있습니다. 배포하고자 하는 운영 환경에 바로 적용해서 테스트해 볼 수 있는 25여개의 실습 예제를 통해 자신만의 배포 환경을 구축해 볼 수 있습니다. *Windows, macOS(Intel Chip/Apple Silicon Chip) 환경 지원

Section 1 - DevOps와 CI/CD

  • DevOps와 CI/CD 파이프라인에 대해 학습합니다.

Section 2 - Jenkins를 이용한 CI/CD 학습

  • CI/CD 파이프라인 구축을 위한 Jenkins를 설치, 배포하는 방법을 학습합니다.
  • Tomcat(톰캣) 웹 서버와 Docker(도커) 가상화 환경에 배포하는 방법을 학습합니다.

Section 3 - Jenkins + Infrastructure as Code

  • Infrastructure as Code에 대해 이해하고 Ansible(앤서블) 서버를 사용하는 방법에 대해 학습합니다. 
  • Jenkins와 Ansible 서버와 연동하는 방법에 대해 학습합니다.

Section 4 - Jenkins + Ansible + Kubernetes 연동

  • 실습을 위한 Kubernetes를 설치하는 방법에 대해 학습합니다. 
  • Jenkins에서 Ansible 서버와 Kubernetes를 연동하여 배포하는 방법에 대해 학습합니다.

Section 5 - Advanced Jenkins 사용 ① - Pipeline

  • Jenkins Pipeline 기능에 대해 이해합니다. 
  • Jenkins Pipeline 스크립트를 이용한 프로젝트를 배포하는 방법에 대해 학습합니다.

Section 6: Advanced Jenkins 사용 ② - SonarQube, Multi nodes

  • Jenkins 멀티 노드에서 배포하는 방법에 대해 학습합니다. 
  • SonarQube(소나큐브) 시스템과 연동하여 사용하는 방법에 대해 학습합니다.

Section 7: 상용 클라우드 환경에 배포하기

  • 상용 클라우드에 배포 환경을 구성합니다.
  • AWS EC2 서버에 배포 환경에 사용되는 서비스를 설치하고 배포하는 방법에 대해 학습합니다.

Section 8: 실습 환경을 위한 필수 SW

  • 강의에서 사용된 SW, 도구에 대해 설치하는 방법에 대해 학습합니다. (Windows, MacOS)
  • 클라우드 서비스를 사용하기 위한 계정 생성하는 방법과 가상 서버를 생성하는 방법에 대해 학습합니다.

💾 학습 관련 참고 사항

  • 본 강의는 애플리케이션을 배포하는 데에 필요한 내용과 과정에 대해 학습할 수 있도록 구성되어 있습니다. (수강에 필요한 사전 지식은 소개페이지 하단 [선수 지식] 및 Q&A를 확인해주세요.)
  • 강의는 macOS 환경에서 진행되며, Windows 환경의 수강생들을 위한 명령어 및 스크립트도 함께 제공하고 있습니다.

Q&A 💬

Q. 강의를 수강하기 위해 필요한 선수 과목이나 지식에는 어떤 것이 있나요?

강의에서는 프로그래밍적인 부분에 대한 설명을 거의 하지 않습니다. 개발된 애플리케이션을 로컬환경이나 클라우드 환경에 배포하는 데 필요한 과정과 방법에 대해 기초부터 학습합니다. 추가로 Git과 같은 형상관리 서비스의 용도, 웹 애플리케이션에 대한 이해, 가상화 서비스에 대한 이해를 가지고 계시다면, 강의 내용을 이해하는 데에 도움이 될 것 같습니다.

Q. 강의에서 사용되는 환경은 어떻게 되나요?

본 강의에서는 자신이 개발한 애플리케이션 또는 강의에서 제공되는 웹 애플리케이션을 배포하기 위해 로컬 환경을 사용하고 있습니다. 로컬 환경에 설치 된 Docker Desktop을 이용하여 배포 자동화에 필요한 SW나 시스템(Tomcat, SSH 서버, Kubernetes 등)을 구성하고 있으며, 배포 파이프라인을 구축할 수 있도록 예제를 제공하고 있습니다. 추가로, 강의 후반부에서는 로컬 환경에 구축된 내용을 클라우드 환경에 구축하여 실습하는 부분도 다루고 있습니다. 본 강의에 대한 실습은 macOS 환경에서 진행되고 있지만, Windows 사용자를 위한 명령어 및 스크립트도 함께 제공하고 있습니다.

Q. CI/CD 자동화 배포에 대한 내용을 어느 수준까지 다루나요?

본 강의는 지속적인 통합(CI)과 지속적인 배포(CD)라는 개념을 처음 접하시는 분부터, CI/CD 파이프라인을 통해 애플리케이션을 운영 서버에 배포하려는 개발자까지 실습해 볼 수 있는 20여개의 실습 코드를 제공하고 있습니다. 강의에서 학습한 내용을 바탕으로 기본적인 웹 애플리케이션과 마이크로서비스 애플리케이션을 배포하기 위한 CI/CD 파이프라인을 구축할 수 있습니다. Kubernetes Cluster를 이용한 Jenkins의 사용이나 지속적인 모니터링, 지속적인 스케줄링을 위한 작업은 "CI/CD 자동화 배포 심화과정(가제)"을 통해 준비 중입니다.

지금 6,000명 이상이 듣고 있는 
MSA 개발의 노하우가 궁금하다면?
평균 별점 4.8★ 누적 수강평 500+

Spring Boot & Spring Cloud 마이크로서비스 애플리케이션 개발 로드맵 (클릭)

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 개발된 애플리케이션을 배포하기 위한 CI/CD를 이용하려는 사람

  • Spring Boot 애플리케이션을 Docker와 Kubernetes에 배포하기 위해 자동화 빌드 환경을 구축하려는 사람

  • IaC를 이용하여 애플리케이션이 운영되는 서버의 구성정보를 관리하려는 사람

  • CI/CD 자동화 배포 도구로써 Jenkins를 사용하려는 사람

선수 지식,
필요할까요?

  • 애플리케이션의 빌드와 배포에 대한 이해

  • 컨테이너 가상화 기술에 대한 개념

  • 웹 애플리케이션에 대한 이해

저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.

직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다. 

최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.

머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.  

 

 

  • ) 엔제이원컴퍼니 대표 
  • ) 동국대학교 국제정보대학원 정보보호학과 대우교수
  • ) JP Mogan Chase AMJ Tech consultant (일본)
  • ) 삼성 SDS CMS 사업본부 책임 엔지니어

 

 

커리큘럼

전체

84개 ∙ (15시간 29분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!