DevOps
= 개발(Development)과 운영(Operations)의 합성어
- 두 팀간의 협업을 강화하여 소프트웨어 개발 및 배포 주기를 단축하고 품질 향상을 목적
= 협업
데브옵스 핵심요소
- 문화 : 개발, 운영 두팀의 경계를 허물고 협업을 하여
서비스 품질을 높이는 문화가 요구
- 조직의 Silo(사일로) 화 되는 것을 막아야 함
+ 사일로화 : 팀 안에서만 소통하고 팀 내 이익만
추구하는 상황
- 자동화 : 개발자가 소스 코드를 작성 하는 과정부터 사용자에게 서비스를 배포 하는 과정까지의 전 과정을 모두 자동화된 프로세스로 관리
- 측정
- 공유
필요성
- 속도와 효율성
- 품질 보증
- 협업 증진
- 비용 절감
협업도구
- Redmine & Jira : 개발 프로젝트 관리에 널리 사용되는 도구
- Slack : 디스코드와 비슷
VCS = Version Controll System
- 버전관리=소스관리=소스코드관리 : 동일한 정보에 대한 여러 버전을 관리하는 것
-> 버전을 통해서 시간적으로 변경 사항과 그 변경 사항을 작성한 작업자를 추적할 수 있다.
Git
Git - 소스코드의이력을 관리하는 분산 버전 관리 시스템
Github- Git 저장소를 관리하는 웹 호스팅 서비스
git 용어
- push : 로컬 리파지토리에 작업 완료 된 코밋 이력을 원격 저장소에 보냄
- pull : Remote Git Repository ->> Local Git Repository 로 소스 가져오는 명령어 + merge
- fetch : Remote Git Repository ->> Local Git Repository 로 소스 가져오는 명령어
Git Flow vs Github Flow
- Git Flow : 전통적 방식=브랜치 여러개로 많이
- Github Flow : 브랜치를 하나의 base 브랜치 (master) + master 에 기능을
추가하기 위한 브랜치 (feature) 두개만으로 운영하여 훨씬 간단하지만 빠르게 수정 배포할 수
있는 전략
git 명령어

Gradle
: 2012년에 출시된 Groovy를 기반으로 한 오픈소스 빌드 도구로 거의 모든 타입의 소프트웨어를 빌드할 수 잇는 빌드 자동화 시스템
- Build : 소스 코드를 컴파일, 테스트, 정적분석 등을 실행하여 실행 가능한 파일 형태로 만들어주는 과정
- 장점 : 프로젝트를 설정 주입 방식으로 정의
CI/CD
: 지속적 통합 (Continuous Integration) 및 지속적 제공/배포 (Continuous Delivery/Deployment) 를 의미
- 소프트웨어 개발 라이프사이클을 간소화하고 가속화 하는 것을 목표
- 조직이 버그 및 코드 오류를 예방하는 동시에 지속적인 소프트웨어 개발 및 업데이트 주기를 유지하는 데 도움
- CI/CD tool : Jenkins, Spinnaker, GoCD, Concourse, Screwdriver
Docker
: 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트
- 주요기능 : 저장소, 빌드, WebHook, Dokcker hub CLI
Git 실습
- repository 생성하기 (remote repository)
- initial commit 확인
- 터미널에서 git clone 깃주소입력
- git graph 설치
- branch 생성
git branch develop
- develop branch로 이동
git switch develop
- 코드 변경후에 commit&push 하기