본문 바로가기
개발 방법론/DevOps의 개념

[DevOps] 도구와 기술

by VictorMeredith 2023. 4. 11.

DevOps CI/CD 파이프라인의 핵심인 Jenkins집사

 

- 도구와 기술은 DevOps 문화에서 중요한 역할을 담당한다.

- 그러나 주의가 필요한 유일한 부분은 아니다.

- 스킬적인 부분이 많고, 파이프라인과 도구의 장점, 기술스택과 연동성, 프로젝트의 요구사항 등을 잘 고려해서 사용해야 한다.

 

1. Git (Version Control System)

- 모르면 취업 못함

- 코드의 버전을 이용해서 이전 버전까지 추적이 가능하고, 개발자의 협업에서 매우 중요한 역할을 한다.

- 많은 개발자가 동시에 작업이 가능하게 해준다.

- 소스코드 저장 서버가 있으므로 문제 발생 시 복구가 가능하다.

- 비선형 개발을 지원한다.

- 호환성이 좋다. 업계 표준이다. 

- 툴킷 기반 설계이다.

- 다양한 병합기법(git branch strategy)을 지원한다.

 

2. SVN(Subversion) (Version Control System)

- Git과 양대산맥인데, 아주 오래되었고, 아직도 사용한다.(꼰대다)

- SVN은 중앙집중식 버전 관리고, Git은 분산 버전관리다.

- SVN과 Git의 다른 차이점들도 존재하는데, 다음과 같이 정리된다.

 

저장소 구조: SVN은 중앙 서버에 하나의 중앙 저장소를 사용하여 변경 이력을 관리하는 반면, Git은 개발자의 로컬 컴퓨터에도 저장소의 전체 변경 이력을 복제하여 저장합니다. 이로 인해 Git은 오프라인에서도 작업할 수 있는 이점이 있습니다.

분산 vs. 중앙집중식: SVN은 중앙집중식 시스템으로, 모든 변경 사항을 중앙 서버에 저장하고 공유합니다. 반면에 Git은 분산 시스템으로, 개발자들이 자신만의 로컬 저장소에서 작업한 후 원격 저장소와 동기화할 수 있습니다. 이로 인해 Git은 여러 개발자들이 병렬로 작업하고 변경 사항을 쉽게 병합할 수 있는 유연성을 제공합니다.

성능: Git은 대부분의 작업이 로컬에서 수행되므로 SVN보다 빠른 속도를 제공합니다. 또한, Git은 브랜치 관리와 병합 작업이 더 빠르고 쉽습니다.

브랜치 관리: Git에서 브랜치를 만들고 병합하는 것은 매우 간단하고 빠릅니다. 반면에 SVN에서 브랜치를 만들고 관리하는 것은 상대적으로 느리고 복잡할 수 있습니다.

데이터 무결성: Git은 내부적으로 SHA-1 해시를 사용하여 파일과 디렉터리의 무결성을 확인합니다. 이로 인해 데이터 손상의 가능성이 낮아집니다. SVN에서는 이러한 해시 기반의 무결성 검사 기능이 없습니다.

커밋 히스토리: Git은 커밋 히스토리를 효율적으로 저장하며, 이전 커밋으로 쉽게 되돌릴 수 있습니다. SVN에서는 파일을 되돌리는 과정이 복잡할 수 있습니다.

 

3. 빌드, 패키지매니저 도구 

- Webpack

- npm/yarn

- gulp

등이 있다. (JS 기준)

 

4. 지속적인 통합(CI) 도구 - Jenkins 2

- 젠킨스2 는 자바로 만들어진 CI도구이며, MIT라이선스의 오픈소스 도구이다.

- 지속적인 통합과 지속적인 전달을 포함한 모든 자동화에 중점을 둔 자동화서버이다.

- 젠킨스는 애자일 환경에서 지속적인 통합서비스를 활용할 수 있도록 도와준다.

- 다양한 플러그인을 사용할 수 있다

- 소스코드관리(Git 등), 빌드 트리거(BuildFlow 등), 빌드 보고서(CodeScanner등), 인증과 사용자관리(GitHub OAuth등), 클러스터관리/분산빌드(AWS EC2, Azuer Slave등)가 포함된 플러그인 들이 있다.

- 젠킨스의 엄청난 장점 : 

   설치/업그레이드/설정이 쉽다

   지원 플랫폼이 다양하다

   개발 수명주기 프로세스를 관리/통제한다

   자바가 아니어도 지원한다 : 닷넷, 루비, PHP, 드루팔, 펄, C++, Node.js, 파이썬, 안드로이드, 스칼라 

   자동화된 빌드에 의해 검증되는 일 단위 통합 개발 방법론

   모든 커밋은 빌드를 트리거할 수 있다.

   사용자가 CI/CD 구현을 가능하게 만드는 완전한 기능의 기술 플랫폼이다

   CI/CD에 국한되지 않고, 쉘/윈도우 batch 명령 실행도 지원해서 전체 파이프라인에 대한 모델의 포함/오케스트레이션이 가능하다

   개발팀과 운영팀이 효과적인 방법으로 협력하는 것을 돕는 공통언어 DSL 을 지원한다

   젠킨스2는 GUI를 갖는다

   젠킨스2는 실행을 위해 서블릿 3.1을 필요로 한다

   빌드자동화, 테스트 자동화 테스팅, 패키징, 정적 코드 분석도 가능하다

   앱 배포 파이프라인을 자동화한다. 형상관리도구 통합이 쉽다. 환경의 프로비저닝을 자동화한다.

   머신에서 처리할 수 있는 원격 액세스 API를 갖는다

-  젠킨스는 갓갓갓이다.

 

5. 구성관리도구 - 셰프

- SCM(Softwrae Configuration Management, 소프트웨어 구성관리) 는 조직이 소프트웨어 구성 요소의 변경을 관리하는 데 사용되는 도구와 기법으로 구성된 소프트웨어 공학 분야이다.

- 기술적 측면, 의사소통, 프로젝트에 대한 변경 통제를 포함한다.

- 소프트웨어의 신뢰성과 품질을 향상시킨다.

- Chef는 인프라스트럭쳐를 코드로 변환하는 데 사용되는 구성 관리 도구다.

- Chef는 인프라스트럭쳐의 구축/배포/관리를 자동화한다.

- 재사용성을 기반으로, 레시피를 사용해 인프라스트럭쳐를 자동화한다.

- 레시피는 DB, WAS, 로드밸런스 구성에 필요한 지침이다.

- 레시피는 인프라스트럭쳐의 모든 부분과 구성, 배포, 관리되는 방법을 설명한다.

- 레시피는 자원을 알려진 빌딩 블럭으로 사용한다. 자원은 템플릿/패키지/설치되어야하는 파일과 같이 인프라의 일부로 설명된다.

- 레시피는 셰프 서버에 저장된다.

- 셰프 클라이언트는 주기적으로 최신 레시피와 노드가 레시피에 의해 정의된 정책의 준수 여부를 확인하기 위해 셰프 서버를 확인한다.

- 레시피가 오래된 경우 셰프 클라이언트는 레시피를 실행해 노드를 최신 상태로 만든다.

- 즉 종합하면, 프로그래밍 방식으로 자원의 프로비저닝과 구성을 자동화하고, 인프라스트럭쳐를 관리한다.

 

6. AWS와 Azure (클라우드 서비스 제공)

- 주기적으로 정책/ 서비스가 변화하고 업데이트 되므로, 공식문서와 정보들을 충분히 학습할 필요가 있다.

- AWS 는 자격증도 있다. 난 자격증 딸거다. 따면 뭔가 기부니가 좋을 것 같다.

 

 

다음 DevOps 시간에는 컨테이너 기술을 다룬다.

댓글