3. 여의도팀
스터디 과제 대상
1. CI(JENKINS) Pipeline 구축
2. Docker Build 자동화 도구
3. Docker 기반 개발환경(PaaS) 구축
4. MSA 설계 및 Sample 서비스 개발
5. Docker orchestration system 구축
3
5. 여의도팀
CI(JENKINS) Pipeline 구축
Jenkins을 이용한 CI(Continuous Integration) 구축
DevOps Academy Korea 5
CI=JENKINS?
CI?
Pipeline?
CD?
Build / Test /
Deploy?
Source?
Webhook?
Integration?
6. 여의도팀
Jenkins을 이용한 CI(Continuous Integration) 구축
CI(Continuous Integration)
• Continuous Integration is usually the initial part of both Continuous Delivery and Deployment, involving
the testing and building of any new or updated source code.
• CI is the process of continuously merging code on a shared repository, followed by automated testing
and builds.
DevOps Academy Korea 6
Build Test
소스
코드
소스
코드
repositorymerge
Commit
& push
Commit
& push
Deploy
7. 여의도팀
Jenkins을 이용한 CI(Continuous Integration) 구축
Pipeline
• Pipeline은 CI / CD의 Flow를 Tool을 이용한 Process화를 한 것이라고 생각
DevOps Academy Korea 7
https://jenkins.io/doc/book/pipeline/
23. 여의도팀
Docker Build 자동화 도구
Dockerfile을 이용한 Build
DevOps Academy Korea 23
Docker Build
자동화 도구?
Dockerfile?
docker-compose?
Build는 Pipeline?
Create Docker
Image?
Create Docker
Container?
24. 여의도팀
Dockerfile을 이용한 Build
• Dockerfile - Docker image의 설정 정보들을 담은 file
• Dockerfile을 이용하여 각 Application에 맞는 환경을 구축
• 기본 방식
• 기본 이미지 local host에 pull
• 기본 이미지를 이용하여 각 Application 기본 환경 Dockerfile구성
• 기본 환경 Dockerfile로 각 Application 기본 Docker Image 생성
• docker build -f dockerfiletest1 -t testcon:0.0 ./
DevOps Academy Korea 24
FROM ubuntu
RUN apt-get update
RUN apt-get install openjdk-8-jdk -y
FROM ubuntu
RUN apt-get update
RUN apt-get install openjdk-8-jdk -y
25. 여의도팀
Dockerfile을 이용한 Build
• 기본 방식
• 각 Application 별 기본 Docker Image를 이용한 Dockefile 구성
• 각 Application Pipeline의 Application Build / Test이후 Dockerfile을 이용 Container 생성
DevOps Academy Korea 25
FROM testcon:0.0
ADD ReactiveRESTfulWebService/build/libs/ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
/ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
EXPOSE 18080
CMD java -jar /ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
32. 여의도팀
Docker 기반 개발환경(PaaS) 구축
개발 테스트 Docker Container 생성 및 접속
DevOps Academy Korea 32
PaaS?
Platform?
Docker?
Docker Image?
Docker Container?
SCM?
????
33. 여의도팀
Docker 기반 개발환경(PaaS) 구축
PaaS
wiki
• 서비스로서의 플랫폼(Platform as a Service, PaaS)은 클라우드 컴퓨팅 서비스 분류 중 하나다. 일반적으로 앱
을 개발하거나 구현할 때, 관련 인프라를 만들고 유지보수하는 복잡함 없이 애플리케이션을 개발, 실행, 관리
할 수 있게 하는 플랫폼을 제공한다. SaaS의 개념을 개발 플랫폼에도 확장한 방식으로, 개발을 위한 플랫폼
을 구축할 필요 없이, 필요한 개발 요소를 웹에서 쉽게 빌려 쓸 수 있게 하는 모델이다.
• 구글이나 네이버, 다음 등에서 제공하는 공개 API가 PaaS의 일종이다. 구글의 '앱 엔진'이나 Bungee Labs 의
'번지커넥트' 등은 직접 온라인 서비스를 개발에서 배포, 관리 까지 할 수 있는 플랫폼을 제공하고 있다.
bloter
• PaaS : 기호에 맞춰 SW 개발 돕는, 개발자를 위한 서비스
• PaaS는 소프트웨어 서비스를 개발할 때 필요한 플랫폼을 제공하는 서비스다. 사용자는 PaaS에서 필요한 서
비스를 선택해 애플리케이션을 개발하면 된다. PaaS 운영 업체는 개발자가 소프트웨어를 개발할 때 필요한
API를 제공해 개발자가 좀 더 편하게 앱을 개발할 수 있게 돕는다. 일종의 레고 블록 같은 서비스다.
DevOps Academy Korea 33
34. 여의도팀
Docker 기반 개발환경(PaaS) 구축
개발 테스트 Docker Container 생성 및 접속
• 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공
DevOps Academy Korea 34
실행은???
35. 여의도팀
개발 테스트 Docker Container 생성 및 접속
• Build된 Application과 해당 Application 기본 환경 Docker Image를 이용한 Docker Container 생성
• 기본 방식
• Application 기본 환경 Image를 이용(예 : FROM testcon:0.0)
• Build된 Application 추가(ADD / COPY 이용)
예 : ADD ReactiveRESTfulWebService/build/libs/ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
/ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
• 서비스 포트 EXPOSE
• Application 실행 명령어 추가(예 : CMD java -jar /ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar)
DevOps Academy Korea 35
FROM testcon:0.0
ADD ReactiveRESTfulWebService/build/libs/ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
/ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
EXPOSE 18080
CMD java -jar /ReactiveRESTfulWebService-0.0.1-SNAPSHOT.jar
36. 여의도팀
1 / 2 / 3 종합 테스트
DevOps Academy Korea 36
기본 흐름
37. 여의도팀
MSA 설계 및 Sample 서비스
개발
MSA(Microservices Architecture) Sample
37
38. 여의도팀
MSA 설계 및 Sample 서비스 개발
MSA(Microservices Architecture) Sample
DevOps Academy Korea 38
https://microservices.io/index.html
39. 여의도팀
MSA 설계 및 Sample 서비스 개발
MSA(Microservices Architecture) Sample
DevOps Academy Korea 39
https://microservices.io/patterns/microservices.html