DevOps 경험 살펴보기

완료됨

목표는 주기 시간을 단축하는 것입니다. 릴리스 파이프라인으로 시작합니다. 이것이 가장 큰 제약 조건인 경우가 많습니다. 자신에게 질문: 한 줄의 코드 또는 구성 변경 사항을 배포하는 데 얼마나 걸리나요? 이 배포의 시간은 궁극적으로 귀하의 속도와 시장 변화에 대응할 능력을 제약하는 요인이 됩니다.

DevOps 구현 로드맵 예제

1단계: Foundation

  • Git을 사용하여 버전 제어 설정
  • 기본 CI/CD 파이프라인 구현
  • 모니터링 및 경고 설정

2단계: 자동화

  • 여러 수준에서 테스트 자동화
  • 코드로 인프라 구현
  • 보안 검사 설정

3단계: 최적화

  • 배포 전략 미세 조정
  • 고급 모니터링 구현
  • 성능 및 비용 최적화

4단계: 문화 및 규모

  • 모든 팀에 사례 확장
  • 우수성의 센터 설립
  • 지속적으로 프로세스 개선

핵심 DevOps 사례 및 그 영향

연속 통합

코드의 지속적인 병합 및 테스트를 주도하여 조기 결함 검색을 수행합니다. 이점은 다음과 같습니다.

  • 통합 충돌 감소: 몇 주가 아닌 몇 시간 내에 발생하는 병합 문제
  • 빠른 피드백: 개발자는 코드를 커밋한 후 몇 분 이내에 문제에 대해 알고 있습니다.
  • 향상된 코드 품질: 자동화된 테스트는 즉시 회귀를 catch합니다.
  • 신뢰도 향상: Teams에서 코드를 안전하게 리팩터링하고 개선할 수 있습니다.

구현 팁: 모든 커밋에서 자동화된 빌드로 시작한 다음, 테스트 계층을 점진적으로 추가합니다.

통과된 모든 테스트와 코드 품질 게이트가 충족되었음을 나타내는 녹색 확인 표시가 있는 성공적인 빌드 완료를 보여 주는 다이어그램.

지속적인 전달

프로덕션 및 테스트 환경에 소프트웨어 솔루션을 신속하게 배포하여 조직이 버그를 신속하게 수정하고 끊임없이 변화하는 비즈니스 요구 사항에 대응할 수 있도록 지원합니다.

주요 이점:

  • 배포 위험 감소: 더 작고 빈번한 릴리스는 문제 해결 및 롤백이 더 쉽습니다.
  • 출시 시간 단축: 기능이 고객에게 몇 주 또는 몇 달 더 빨리 도달
  • 안정성 향상: 자동화된 배포로 인적 오류 제거
  • 고객 응답성 향상: 피드백 및 시장 변화에 대한 신속한 대응

고려할 배포 전략:

  • Blue-Green: 즉각적인 롤백 기능을 갖춘 무중단 배포
  • 카나리아: 위험을 최소화하기 위해 사용자 하위 집합에 점진적 롤아웃
  • 기능 플래그: 기능을 노출하지 않고 코드 배포, 더 안전한 릴리스 사용

자동화된 배포 프로세스를 강조하면서 빌드, 테스트, 스테이징 및 프로덕션 환경에 대한 단계가 포함된 지속적인 업데이트 파이프라인을 보여 주는 다이어그램.

버전 제어 우수성

일반적으로 Git 기반 리포지토리로 구현되는 버전 제어를 사용하면 전 세계 팀이 일상적인 개발 활동 중에 효과적으로 통신하고 배포와 같은 활동을 모니터링하기 위한 소프트웨어 개발 도구와 통합할 수 있습니다.

고급 Git 사례:

  • 분기 전략: GitHub Flow 또는 트렁크 기반 개발
  • 코드 검토 프로세스: 필수 승인이 있는 끌어오기 요청
  • 커밋 규칙: 일관되고 의미 있는 커밋 메시지
  • 통합 후크: 자동화된 테스트 및 배포 트리거

엔터프라이즈 고려 사항:

  • 리포지토리 조직 및 액세스 제어
  • 대용량 파일 처리(Git LFS)
  • 규정 준수 및 감사 요구 사항
  • 백업 및 재해 복구

주 분기, 기능 분기 및 병합 지점이 있는 Git 분기를 보여 주는 다이어그램

Agile 계획 및 Lean 프로젝트 관리

민첩한 계획 및 린 프로젝트 관리 기술을 사용하여 가치 전달을 최대화합니다.

스프린트 계획 모범 사례:

  • 작업을 1-4주의 관리 가능한 스프린트로 계획하고 분리하십시오.
  • 팀 용량을 관리하고 팀이 변화하는 비즈니스 요구에 신속하게 적응할 수 있도록 지원
  • 명확한 승인 조건 및 완료 기준 확정
  • DevOps의 완료 정의에는 의도한 비즈니스 목표에 따라 원격 분석을 수집하는 작업 소프트웨어가 포함되어 있습니다.

주요 애자일 아티팩트:

  • 사용자 스토리: 명확한 값을 가진 사용자 관점에서 설명하는 기능
  • 에픽: 관리 가능한 스토리로 세분화된 대규모 기능
  • 백로그: 우선 순위가 지정된 기능 목록 및 기술 부채
  • 스프린트 목표: 각 반복에 대한 명확한 목표

린 원칙:

  • 프로세스 및 핸드오프에서 낭비 제거
  • 흐름을 최적화하고 리소스 사용률을 고려하지 않음
  • 처음부터 품질을 포함하여 설계하다
  • 초기 및 자주 가치 제공

워크플로 열을 보여주는 Kanban 보드: 할 일, 진행 중, 코드 작성 준비, 진행 중, 준비 완료, 진행 중, 검토 및 완료가 있으며, 프로세스를 통해 이동하는 작업 항목을 나타내는 카드가 있습니다.

포괄적인 모니터링 및 로깅

애플리케이션 상태 및 고객 사용에 대한 프로덕션 환경을 포함하여 실행 중인 애플리케이션을 모니터링합니다. 이를 통해 조직은 가설을 만들고 전략의 유효성을 신속하게 검사하거나 반증할 수 있습니다. 다양한 데이터를 캡처하고 다양한 로깅 형식으로 저장합니다.

스택 구성 요소 모니터링:

  • APM(애플리케이션 성능 모니터링) : 응답 시간, 오류 및 처리량 추적
  • 인프라 모니터링: CPU, 메모리, 디스크, 네트워크 메트릭
  • 비즈니스 메트릭: 사용자 참여, 전환율, 기능 사용량
  • 보안 모니터링: 위협 탐지 및 규정 준수 추적

관찰성 모범 사례:

  • 마이크로 서비스에 대한 분산 추적 구현
  • 상관 관계 ID와 함께 구조적 로깅 사용
  • 최소한의 오탐으로 능동적 경고 설정
  • 다양한 대상 그룹(작업, 개발, 비즈니스)에 대한 대시보드 만들기

로그 관리 전략:

  • 검색 기능을 사용하여 중앙 집중식 로깅
  • 규정 준수 요구 사항에 따른 보존 정책
  • 로그 수준 관리를 통한 비용 최적화
  • 중요한 문제에 대한 실시간 분석

성능 메트릭, 오류 비율 및 시스템 상태 지표를 보여 주는 모니터링 차트가 있는 대시보드

  • 퍼블릭 및 하이브리드 클라우드는 불가능을 쉽게 만들었습니다. 클라우드는 기존의 병목 상태를 제거하고 인프라를 상용화하는 데 도움을 주었습니다. IaaS(Infrastructure as a Service)를 사용하여 기존 앱 또는 PaaS(Platform as a Service)를 리프트 앤 시프트하여 전례 없는 생산성을 얻을 수 있습니다. 클라우드는 제한 없이 데이터 센터를 제공합니다.

퍼블릭 클라우드 다이어그램

  • IaC(Infrastructure as Code): 안전하고 안정적인 애플리케이션 호스팅 플랫폼을 제공하는 데 도움이 되도록 환경을 만들고 해체하는 자동화 및 유효성 검사를 사용하도록 설정합니다.

IaC(Infrastructure as Code) 표현의 다이어그램

  • 마이크로 서비스 아키텍처를 사용하여 비즈니스 사용 사례를 인터페이스 계약을 통해 통신하는 재사용 가능한 작은 서비스로 격리합니다. 이 아키텍처를 통해 확장성과 효율성을 높일 수 있습니다.

모놀리식 및 마이크로 서비스 표현의 다이어그램

  • 컨테이너는 가상화의 다음 진화입니다. 가상 머신보다 훨씬 더 가볍고, 훨씬 더 빠른 수분 공급이 가능하며, 파일을 쉽게 구성할 수 있습니다.

컨테이너 다이어그램

DevOps는 처음에는 상처를 입을 수 있지만 이러한 안티패턴을 피하세요.

아프면 더 자주 수행하십시오. 체육관에 가는 것과 같은 새로운 관행을 채택하는 것은 먼저 다치게 할 가능성이 높습니다. 새로운 기술을 더 많이 연습할수록 더 쉬워집니다.

체육관에서 훈련할 때 큰 근육을 먼저 운동한 후에 작은 근육을 운동하는 것처럼, 가장 큰 영향을 미치는 방법을 먼저 채택하세요. 실행 간의 시너지 효과를 높이기 위해 교차 훈련을 실시하십시오.

방지할 일반적인 DevOps 안티패턴:

  • 도구 우선 방법: 도구를 구입하여 시작하지 마세요. 현재 상태 및 원하는 결과를 이해하는 것부터 시작합니다.

  • 빅뱅 변환 : 한 번에 모든 것을 변경하려고하지 마십시오. 작게 시작하고 점진적으로 확장합니다.

  • DevOps 팀 사일로: 별도의 "DevOps 팀"을 만들지 마세요. DevOps는 역할이 아닌 연습입니다.

  • 문화권 무시: 문화적 변화가 없는 기술적 변경은 실패합니다. 사람과 프로세스에 투자합니다.

  • 보안 건너뛰기: 마지막에 보안을 강화하지 마세요. 전체 보안 통합(DevSecOps).

  • 오버 엔지니어링: 간단하게 시작하고 필요한 경우에만 복잡성을 추가합니다. 조기 최적화를 방지합니다.

  • 레거시 무시: 기존 시스템을 중단하지 마세요. 점진적 현대화 전략을 계획합니다.

수용해야 할 성공 패턴:

  • 영향력이 높고 위험 수준이 낮은 변경으로 시작: 배포 전에 빌드 자동화

  • 모든 항목 측정: 변경하기 전에 기준 설정

  • 빠르게 실패하고 알아보기: 적절한 안전 장치를 사용하여 실험 수용

  • 자동화에 투자: 먼저 반복적이고 오류가 발생하기 쉬운 작업 자동화

  • 피드백 루프 빌드: 성공 및 실패 모두에서 학습할 수 있는 메커니즘 만들기

DevOps 관행이 일관되게 적용될 때 더 쉬워지고, 힘을 기르기 위해 점진적이고 지속적인 노력이 필요하다는 것을 보여주는 운동하는 사람의 일러스트.

메모

원본 문서에서는 DevOps를 정의하고 이러한 개념에 대한 추가 내용과 자세한 설명을 제공합니다.