Terraform Up & Running - 예브게니 브릭만

2021. 5. 25. 23:38Books/Programmers

728x90

https://www.amazon.co.uk/Terraform-Up-Running-Yevgeniy-Brikman/dp/1491977086

#Devops

- 프로세스와 방법, 기술의 집합

- 소프트웨어를 전달하기 위한 절차와 방법을 효율적으로 만드는 것에 목적을 지님

- 문화, 자동화, 측정, 공유 (네 가지 핵심 가치)

 

#IaC, Infrastructure as Code (코드형 인프라)

- 서버, 데이터베이스, 네트워크, 로그 파일, 애플리케이션 설정, 자동화된 검증 절차, 배포 방법 등
모든 것을 코드 형태로 관리

- 애드 혹 스크립트
-> 가장 간단하게 코드 형태로 자동화를 구현 가능한 즉각적인 호출과 응답을 하는 스크립트 구성
-> 소규모, 단발성

- 구성 관리 도구
-> 서버에 소프트웨어를 설치하거나 관리하는 목적으로 사용
-> 쉐프(Chef), 퍼핏(Puppet), 앤서블(Ansible), 솔트스택(Saltstack)
-> 멱등성 : 같은 코드라면 수행 횟수에 상관없이 결괏값은 항상 같아야 한다.
-> 대규모의 분산환경 관리

- 서버 템플릿 도구
-> S/W와 수행 시에 필요한 설정과 의존성 있는 프로그램들을 포함한 특정 시점에 스냅샷(Snapshot)하여
템플릿 이미지화하는 것
-> 도커(Docker), 패커(Packer), 베이그란트(Vargrant)
-> 변하지 않는 인프라(Immutable Infrastructure)의 주요한 기능
-> 함수형 프로그램처럼 가변적인 변수를 제거하여 항상 값을 불변으로 유지, 
수정하려면 새로운 값으로 정의해야 한다.

- 서버 프로비전 도구
-> 서버 자체를 구성하기 위한 도구
-> 테라폼(Terraform), 클라우드포메이션(CloudFormation), 오픈스택 히트(Openstack Heat)
-> 서버 뿐 아니라 DB, Chache, Network 장비, Subnet 설정, 라우팅 정책, SSL 인증서, 방화벽 등
서비스를 이루고 있는 다양한 리소스 생성 및 관리

- AMI
-> ID 형태로 구성, 서버에 배포할 때 기본이 되는 이미지 정보, 패커를 통해 PHP, 아파치와 
애플리케이션 코드를 구성한 .json으로 만들어진 값

 

#Iac 장점

- 셀프서비스 : 코드를 수동으로 배포하고 소프트웨어 배포와 상용 환경에서 실제 작업을 수행하는
서비스 운영 담당자 수가 적기 때문에 운영에 어려움을 해결

- 속도와 안정성 : 배포 절차가 자동화되면, 수동으로 배포하지 않고 컴퓨팅 리소스가 배포하므로
속도와 안정성이 눈에 띄게 향상

- 문서화 : 인프라의 상태 정보가 누구나 읽을 수 있다.

- 버전 관리 : 코드형 인프라 파일 역시 버전 관리가 가능하다.

- 확인 및 검사 : 인프라 상태를 코드 형태로 관리하여 변경되는 모든 것을 코드로 남긴다면
인프라의 변경 사항 역시 코드리뷰를 할 수 있다.

- 재사용성 : 모든 배포 단계와 환경에서 처음부터 시작할 필요 없이 공통된 사항들을 재사용 가능

- 운영 관리의 편안함과 행복 : 코드를 배포하고 인프라를 도입함으로서 운영의 효율화와 편안함

 

#테라폼 동작 방식

- 테라폼은 Go로 프로그래밍 되어 있는 오픈 소스 도구

- 하나의 바이너리로 컴파일되어 있다.
728x90