[TIL] 20240620 - IaC와 Terraform

jini·2024년 6월 20일
0

TIL

목록 보기
32/48

IaC(Infrastructure as Code)


🧊 구성 관리 (Configuration Management)

구성(형상; configuration)은 의존성 때문에 소프트웨어 시스템에 큰 영향을 미치기 때문에 구성 관리(형상 관리)는 CI/CD에 중요한 측면

이를 체계적으로 관리하고 자동화할 수 있는 여러 종류의 도구가 만들어지고 이용되어 왔음


🧊 IaC(Infrastructure as Code)

Infrastructure(소프트웨어가 의도된 목적을 활용하기 위하여 이용하는 환경 구성)를 생성, 변경 관리

버전 관리, 재사용, 공유 등에 유리

프로그래밍에서와 유사하게 코드를 이용하여 인프라 리소스를 정의하고 조합하는 형태로 관리

  • 다양한 형태의 리소스를 정의하고 조합하는 모듈들로 이루어짐

🧊 Terraform

Hashicorp 사에서 제공하는 IaC 도구

Terraform 설치

# homegrew에 package를 저장
brew tap hashicorp/tap

# terraform 설치
brew install hashicorp/tap/terraform

# terraform version 업데이트
brew update

# download and use latest terraform
brew upgrade hashicorp/tap/terraform



Kubernetes + Terraform + Jenkins


  • Docker : 응용을 컨테이너화하여 독립적이고 통일된 환경에서 실행할 수 있도록 함

  • Kubernetes : 컨테이너화된 응용을 효과적이고 안정적으로 운용

  • Terraform : 응용이 실행될 인프라 리소스 구성과 의존 관계를 코드로 관리

  • Jenkins : 빌드, 테스트, 배포, 관리 등의 작업을 자동화하여 CI/CD 파이프라인 실행



🧊 비기능 테스트

  • 성능 테스트

    • 부하 테스트
    • 스트레스 테스트
    • 확장성 테스트
  • 내구성 테스트

  • 보안 테스트

  • 유지보수 테스트

  • 복구 테스트


🧊 릴리스 패턴(Release Pattern)

프로덕션을 새로운 소프트웨어 버전으로 업데이트할 때의 위험도를 낮추기 위한 전략

  • 롤링 업데이트(rolling update)
  • 블루-그린 배포(blue-green deployment)
  • 카나리아 릴리스(canary release)

🧊 모니터링과 진단

모니터링(Monitoring)

시스템 구성 인프라 내의 자원 상태와 활용도 등을 지속적으로 검사

진단(Diagnosis)

잠재적 위험 요소를 조기 발견하고 대응책을 수립

알림(Notification)

빌드의 성공/실패, 자원 활용의 변화 등에 대하여 자동 알림을 설정

0개의 댓글