본문 바로가기
내생각들/개념정리

DevOps 교육 정리

by 코딩마스터^^ 2024. 3. 15.

사일로 효과를 타파해야된다.

서비스 속도경쟁이다. 이기주의 노노

그래서 DevOps중요하다

 

DevOps

소프트웨어 개발 팀과 IT 팀이 더 빠르고 안전하게 소프트웨어를 빌드, 테스트 및 릴리스할 수 있도록 두 팀 간의 프로세스를 자동화 및 통합하는 일련의 관행입니다. 

 

DevOps는 새로운 소프트웨어 기능, 개선 요청 또는 버그 수정 등 하나의 아이디어가 개발에서 배포에 이르는 프로세스의 속도를 높임으로써 더 빨리 프로덕션 환경에 전달되어 사용자에게 가치를 전달하도록 합니다. 이러한 접근 방식을 적용하려면 개발 팀과 운영 팀이 자주 커뮤니케이션하고 팀원들과 공감하면서 업무에 접근해야 합니다. 확장성과 유연한 프로비저닝도 필요합니다. DevOps를 확립하면 셀프 서비스와 자동화를 통해 다양한 이점과 경쟁력을 얻을 수 있습니다. 대개 표준 개발 환경에서 코딩 작업을 하는 개발자는 IT 운영 담당자와 긴밀하게 협력하여 소프트웨어 빌드, 테스트, 출시 속도를 가속화할 수 있습니다.

 

목표

개발팀과 운영팀과의 협업을 강화하여 소프트웨어 제공 속도를 높인다.

 

제품의 서비스의 질을 향상시킨다.

 

데브 옵스의 장점

빠른 배포 및 더 많은 릴리즈

개발 및 IT운영 팀 간의 협력을 강화하여 애플리케이션 배포 주기를 단축

 

신속한 문제해결

빠른 피드백과 오류식별 통해 문제를 해결

 

소규모 조직 안에서 개발과 배포 빠르게

 

특징 3가지

지속적 통합

-프로젝트 변경사항을 정기적으로 통합,빌드 

지속적 제공

자동화 

 

이슈트레커

형상관리

CI/CD

모니터링 옵저버 빌리티

 

이슈트래커란?

버그,작업, 새로운 기능

추척하고 관리해야된다.

우선순위설정-각 이슈들 간의 우선순위 설정 기능

이슈가 어떻게 진행이 되는지

상태 관리기능 필요하다

이슈에 코멘트 달아서 커뮤니케이션 할 수있는 기능

이슈 들 간의 연결 파악

 

 

이슈트레커의 예시

 

JIRA

-프로젝트 관리 도구

애자일 팀을 위한 Jira Software

애자일 방법론을 적용하는 팀은 Jira Software를 통해 스크럼  칸반 보드를 즉시 이용할 수 있습니다. 보드는 작업 관리 허브로, 이곳에서 작업을 사용자 지정 가능한 워크플로에 매핑할 수 있습니다. 보드는 팀 작업 전반에서 투명성을 제공하고 각 작업 항목의 상태를 한눈에 파악할 수 있게 해줍니다. 팀은 시간 추적 기능과 실시간 성능 보고서(번업/번다운 차트, 스프린트 보고서, 속도 차트)를 통해 시간 경과에 따른 생산성을 면밀하게 모니터링할 수 있습니다. 타임라인 보기를 사용하면 전체적인 그림을 계획하고 현재 진행률을 추적할 수 있습니다.

 

Confluence 프로젝트 관리 도구도 많이 사용한다.

Trello

Asana

Redmine-공짜

Youtrack-인텔리제이회사

 

형상관리

Git-리모트에서 로컬로 내려받아 관리

SVN(Serversion)-중앙서버에서 관리

 

기능

버전관리

협업

백업 및 복원

브랜치 및 병합

 

오픈소스에서 가장 많이 깃허브 사용

 

GitLab-설치형이기 때문에 오프라인 환경에서 사용이 가능

 

깃 브랜치 전략

 

가이드

깃플로우

Master branch : 출시를 위한 메인 브랜치 배포를 위한 소스코드 관리

develope : 다음 출시 버전을 위한 브랜치

feature : 새로운 기능을 개발하는 브랜치 신규기능개발

release : 다음 출시 버전을 위한 브랜치

hotfix : 출시된 제품의 버그를 고치기위한 브랜치

 

변형해서 쓰기 가능 추천하는 깃 플로우 전략

 

깃에서 커밋 메세지가 이슈트레커와 연동이 된다.

 

예를 들어 커밋 메세지에 버그수정 올리면

이슈트레커에서 연동이 되서 이슈로 관리가 가능

 

IaC

Infeastructure as Code(Iac)

인프라 스트럭처를 코드로 관리

 

AWS,

 

 

코드형 인프라(IaC)란?

코드형 인프라(IaC)는 IT 인프라 프로비저닝을 자동화하는 기술적인 하이 레벨(high-level) 코딩 언어입니다. 이러한 자동화 덕분에 개발자는 소프트웨어 애플리케이션을 개발, 테스트 또는 배포하려고 할 때마다 서버, 운영 체제, 데이터베이스 연결, 스토리지 및 기타 인프라 요소를 수동으로 프로비저닝 및 관리할 필요가 없습니다.

매일 기업은 수백 개의 애플리케이션을 프로덕션 환경으로 배포하고, 개발자와 사용자의 요구사항에 따라 끊임없이 인프라를 가동, 해제, 확장/축소해야 하는 시대에 조직은 비용을 통제하고, 리스크를 줄이고, 새로운 비즈니스 기회와 경쟁 위협에 신속하게 대응하기 위해 반드시 인프라를 자동화해야 합니다. IaC는 이러한 자동화를 가능하게 합니다.

IaC는 또한 경쟁력 있는 속도로 진행되는 소프트웨어 제공 라이프사이클에 필수불가결한  DevOps 프랙티스이기도 합니다. IaC를 통해 DevOps 팀은 소스 코드를 버전화하는 것과 동일한 방식으로 빠르게 인프라를 생성 및 버전화하고, 배포 도중 심각한 문제를 일으킬 수 있는 IT 환경 간의 비일관성을 피하기 위해 이러한 버전을 추적할 수 있습니다.

 

인프라를 특정 시점으로 롤백이 가능하다.

 

구성이 유사하다

 

레포지토리 되어있는 소스코드 복제하면 똑같이 인프라 세팅 가능

서버를 빠르게 만들고자 할때

클라우드 인프라를 코드화 해서 관리

 

GitOps

인프라+코드

자동으로 배포

롤백가능

선언적인 구성

 

CI/CD

지속적인 통합 지속적인 배포

 

redHat에서 pod로 관리했었다 케이비에서

깃이랑 연동해서 

젠킨스로 바로바로 빌드함

 

목적

빠른 피드백

자동화된 테스트

지속적인 배포

환경 일관성

 

주요 제품

Jenkins 오픈소스기반 CI/CD도구

GitHubAction

Gitlab CI/CD

TeamCity

AWS Build & Pipeline

 

모니터링 (Monitoring)

옵저버빌리티(Observability)

 

어플리케이션 성능 모니터링을 위한 툴

 

Prometheus

 

 

DevOps 생명주기

기획자

->개발요청

->컨플루언스

->작업자 배정

->개발자

->코드 작성 및 push

->GitLab

->Jenkins 빌드

->배포 실행

->도커

->쿠버네티스

->모니터링

 

 

쿠버네티스는(Kubernetes)

컨테이너 오케스트레이션* 플랫폼으로, 컨테이너화된 애플리케이션을 배포, 확장, 관리하기 위한 오픈 소스 도구입니다. 간단히 말해 컨테이너화된 애플리케이션을 쉽게 배포하고 관리하기 위한 도구이죠. 여기서 컨테이너란 애플리케이션과 그에 필요한 모든 것(코드, 라이브러리, 런타임 등)을 포함하는 패키지입니다. 

'내생각들 > 개념정리' 카테고리의 다른 글

리액트 vite  (0) 2024.03.27
북마크  (1) 2024.03.20
Red Hat OpenShift  (1) 2024.01.06
Spring Security 설정  (0) 2023.04.12
React 서비스 배포를 위한 build 설정  (0) 2023.04.11

댓글