DevOps/AWS와 DevOps 기초

DevOps 기초

운동하는 주니어개발자 2023. 2. 9. 19:33

DevOps 기초

1. DevOps 개념과 DevOps가 걸어온 길

DevOps 란?

  • Developer + Operation 의 합성어
  • 개발과 운영의 경계를 허물고 통합하고자 하는 문화 또는 철학
  • 소프트웨어 개발 프로세스와 운영의 모든 단계의 통합과 자동화를 목표로함

DevSecOps 란?

  • Developer + Security + Operation 의 합성어
  • 소프트웨어 개발 프로세스의 모든 단계를 통합하고 보안까지 포함하도록 확장한 개념
  • 소프트웨어 배포에 관여하는 모든 사람들이 보안을 최우선으로 하는 문화
  • 개발 / 운영팀 대상 보안 교육
  • 보안 이슈 공유 채널 구축
  • 보안 사고 대응 플레이북 (playbook)
  • 배포 프로세스에 보안감사 / 규정준수 포함

DevOps의 적용 사례

  • 넷플릭스 에서는 개발자가 소프트웨어의 모든 단계에 참여할 수 있는 “Full-cycle Developer” 모델을 제시
  • 기존의 개발 모델 vs Full-cycle developer model

기존의 개발 모델

Full-cycle developer model

2. DevOps 역할

  • DevOps 업무의 주요 대상은 개발자
  • 개발자가 운영에 참여할 수 있는 환경과 문화를 제공
  • 개발자가 비즈니스 로직에 집중할 수 있도록 지원

DevOps 업무 도메인 - 1

네트워크

  • 가상 네트워크 및 물리 네트워크 구성
  • 프록시 / VPN 서버 운영
  • DNS 서버 운영

클라우드 플랫폼

  • 개발자들이 활용할 수 있도록 클라우드 환경 운영 ( 자체 클라우드, 퍼블릭 클라우드)

배포 플랫폼

  • GitLab / GitHub등 개발 협업 플랫폼 운영
  • CI/CD 파이프라인 시스템 구축 및 운영
  • QA 테스트 및 성능 테스트를 위한 환경 제공
  • 패키지 저장소 운영 및 배포 산출물 관리

보안 플랫폼

  • LDAP, AD, SAML등을 활용하여 통합된 임직원 계정계 운영
  • 서버 및 데이터베이스 접근제어 시스템 구축 및 운영

DevOps 업무 도메인 - 2

오케스트레이션 플랫폼

  • K8S, ECS, Nomad와 같은 오케스트레이션 시스템 구축 및 운영
  • Airflow, Argo Workflows와 같은 워크 플로우 엔진 구축 및 운영

데이터 플랫폼

  • MySQL, DynamoDB, Redis와 같은 데이터베이스 구축 및 운영
  • RabbitMQ, Kafka, SQS등과 같은 메시징 서비스 구축 및 운영
  • 데이터 웨어하우스, BI 대시보드 구축 및 운영

관측 플랫폼

  • 로그, 메트릭, 업타임, APM 정보를 관측할 수 있는 중앙화 된 시스템 구축 및 운영
  • 주요 이벤트에 대한 알림 시스템 구축

서비스 운영

  • 개발자들과 협업하여 서비스 공동 운영

DevOps 팀 핵심 지표 (KPI)

지표 설명
장애 복구 시간
(MTTR : Mean Time To Recovery)
얼마나 빠르게 장애 상황에서 복구할 수 있는가?
변경으로 인한 결함률
(Change Failure Rate)
변경 사항으로 인한 장애가 얼마나 발생하는가?
배포 빈도
(Deployment Frequency)
얼마나 배포를 자주 하는가?
변경 반영 소요 시간
(Lead Time for Changes)
변경사항을 프로덕션 배포에 걸리는 소요 시간은 얼마인가?

기업에서 요구하는 DevOps엔지니어 요건

[담당업무]

  • DevOps 기능 개발 솔루션 자동화, 배포, 운영 등 CI/CD 개발 운영
  • OS 및 AWS 설정과 리소스 생성을 자동화하여 코드로 관리 (IaC)
  • 지속적인 시스템 모니터링을 통한 성능 추적 및 개선, 구축 및 운영
  • Container Platform 적용 및 Orchestration 관리

[자격요건]

  • 클라우드 관련 개발, 운영 경험자
  • CI/CD 및 자동화에 대한 경험이 있으신 분
  • 다양한 부서와의 협업에 원활한 커뮤니케이션이 가능하신 분
  • 하나 이상의 프로그래밍 언어를 능숙하게 사용 가능 하신 분
  • 코드에 대한 문서화가 익숙하신 분
  • AWS 인프라 사용에 대한 경험치가 높은 분

[우대사항]

  • 리눅스 기반의 시스템 성능 튜닝 및 내부 동작에 대한 깊은 이해가 있으신 분
  • 관측 시스템, 배포 시스템을 직접 구축해 보신 경험이 있으신 분
  • Docker로 이미지를 만들고 배포해 본 경험이 있으신 분
  • AWS Certificate 보유자 국내 개인정보 보호법 및 HIPAA / GDPR 가이드를 준수하는 서비스를 개발한 경험이 있는 분
  • 확장성 있는 글로벌(멀티 리전) 서비스를 개발한 경험이 있는 분
  • ContainerizationContainer Orchestraion Tool에 대한 운영 경험 대규모 트래픽 처리를 위한 인프라 구성 경험이 있으신 분
  • 하나 이상의 스크립트 언어 활용 능력

3. Mutable vs Immutable (Pets vs Cattle)

  • 가변(Mutable) 인프라와 불변(Immutable) 인프라

Pets vs cattle

pets

  • 폐기 할 수 없는 인프라
  • 장애 시 전체 점검 / 로그를 사람이 하나하나 확인
  • 절대 다운될 수 없는 고유한 시스템
  • 일반적으로 수동으로 구축, 관리

cattle

  • 폐기할 수 있는 인프라
  • 장애시 서버를 단순히 재구동 하거나 자동화를 통해 사람의 개입없이 해결
  • 자동화된 도구를 사용

4. terraform 기초와 terraform의 활용

terraform 이란?

HCL 언어 사용

  • HashiCorp 사 에서 GO언어 기반으로 개발한 HCL언어로 코드 작성

Reuse 및 테스트 활용

  • 재사용 가능한 인프라 코드
  • 반복적인 인프라 구성 테스트 진행

다양한 Provider 지원

  • AWS, Azure, GCP 등 다양한 Provider 지원

클라이언트 아키텍처

  • 별도의 서버구성이 필요 없는 클라이언트 기반 아키텍처만 지원

Immutable Infrastructure

  • 환경이 원활하게 변경되는 인프라 구성 가능

인프라 프로비저닝

  • IaC 도구 중 인프라 프로비저닝 용도로 사용

Terraform Life Cycle

Init

  • terraform init
  • 테라폼 구동을 위한 초기화

Plan

  • terraform plan
  • 인프라 변경 사항 확인

Apply

  • terraform apply
  • 인프라 변경사항 적용

Destroy

  • terraform destroy
  • 인프라 리소스 삭제

테라폼의 3가지 형상

  1. Terraform 구성 소스 : 현재 관리자가 작성 / 수정하고 있는 코드
  2. Terraform state : 가장 최근에 배포한 테라폼 코드 현상
  3. 실제 인프라 : 실제로 Cloud 환경에 배포되어 있는 인프라

테라폼 디렉토리 레이아웃

  • **main.tf : 프로비저닝할 리소스를 정의함**
  • **variables.tf : 소스코드에 사용할 변수들을 저의**
  • **outputs.tf : 소스코드에 대한 실행 결과를 정의 및 출력**
  • modules : 리소스를 모듈화 한 단위
  • **backend.tf : 형상 관리를 하기 위한 설정을 정의**
  • **provider.tf : 리소스 제공자와 버전 등을 정의**

테라폼을 사용하는 이유?

  • 불변(Immutable)인프라를 위해 사용
  • 인프라를 가축(cattles)과 같이 관리
  • 프로비저닝과 인프라 재사용에 용이

'DevOps > AWS와 DevOps 기초' 카테고리의 다른 글

AWS 콘솔 사용하기(2)  (0) 2023.02.08
AWS 콘솔 사용하기(1)  (0) 2023.02.06
AWS 계정 생성 하기  (0) 2023.02.06
AWS 주요 서비스 소개  (0) 2023.02.04
클라우드 서비스 개요  (0) 2023.02.02