Devops Study 01
devops 란
개발(Development)과 운영(Operations)의 합성어
목표
- 고객의 요구사항을 빠른시간에 서비스에 적용한다.
devops tool chain
- Use Case - 사용자 요구사항
- 코드(프로그래밍) - 코드 개발 및 검토, 버전 관리 도구, 코드 병합.
- CI/CD (continuous integration and continuous delivery)
- 빌드 - 지속적 통합(CI) 도구, 빌드 상태.
- 테스트 - 테스트 및 결과가 성능을 결정.
- 배포 - 애플리케이션 디플로이 이전 단계.(CD)
- 구성 - 인프라스트럭처 구성 및 관리, IaC(Infrastructure as Code) 도구
- 모니터링/운영 - 애플리케이션 성능 모니터링, 최종 사용자 경험 , 로그 분석, 고객 피드백,Server Monitoring
Use Case
- clean architecture
코드
- clean code
- cqrs
- git svn
- github gitlab
CI/CD
빌드
- jenkins
- teamcity
테스트
- unit test
- integration test
- end to end test
배포
- jenkins
- teamcity
- ansible
- docker, aws
인프라스트럭처 구성
- pxe , chef ,
- ansible ( install)
- vm (virtual box , hyper-v, Kvm)
- docker (swarm kubernetes)
- cloud (azure , aws)
모니터링/운영
- nagios
- check_mk
- elk 로그분석
- ansible ( install)
- linux , vi , bash
issue 관리
- gitlab
- jira
이번 스터디에서는 툴 위주의 핸드 온 강의가 될것 같습니다.
시나리오는 다음과 같습니다.
- 고객이 블로그를 하나 만들어달라고 했다.(글만 쓰게)
- 코드 관리를 위해서 gitlab을 사용한다.
- git 프로젝트를 만들어서 클론을 한다.
- 코딩을 하자.
- back end c# webapi (Test를 하자.)
- front end angular 6
- 코딩후 커밋을 한다.
- gitlab에서 jenkins를 호출하여 파일을 실제 웹서버에 배포한다.
- 커밋시마다 자동으로 빌드할수 있나? 개발서버에 자동으로 배포를 하면 좋겟다.
- 블로그에 리스트를 보여주는 페이지를 만들어달라 - 요구사항
- 코딩한다.
- 이번에는 도커 이미지를 만들어보자.
- 도커 이미지를 registry에 저장을 하자.
- 실제 서버에서 도커를 실행시켜서 서비스를 하자.
- 글 삭제 기능을 고객이 요청한다.(issue로 보고)
- 이슈를 확인하고 코드를 수정하여 커밋한다.
- 자동으로 빌드되서 개발서버에 오픈이된다.
- 개발서버에서 테스트해서 문제 없으면 실서버에서 도커 이미지를 실행시킨다.
- 도커 이미지를 aws vm을 만들어서 실행해보자.
시작
-
개발 환경구축하기
- virtual box 와 vagrant 설치
- linux 서버 virtual machien으로 설치해보기
- virtual machine에서 nginx 띄우기
- 도커 docker 설치하기
- 도커로 nginx 띄우기
-
준비 사항
- windows 10, or macos , or linux
- virtual box (hyper-v) install
- vagrant install
- vagrant image 받기
vagrant init centos/7 vagrant up
- docker install
- docker image 받기
docker pull nginx docker pull mysql docker pull microsoft/dotnet
- https://hub.docker.com/_/nginx/
docker
- docker와 vm의 차이
- docker install
https://docs.docker.com/docker-for-mac/install/
- docker get start
https://docs.docker.com/docker-for-mac/
Docker Image (Dockerfile)
Docker Registry
Alpine Linux는 Kernel을 제외했을 때 그 크기가 5MB가 채 되지 않는 매우 작은 크기의 리눅스 배포판
Docker Swarm은 여러 대의 Docker Host 들을 엮어서 마치 하나인 것처럼 다룰 수 있게 해주는 Clustering, Orchestration 도구이다.
일단 이정도면 오늘은 될듯.
참고 사이트
https://ko.wikipedia.org/wiki/%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4