Infrastructure-as-Code (IaC)에 대해 공부하다가 테라폼에 알게 되었고 GCP kubernetes의 교육을 들으러 갔을 때 책을 쓰신 역자님을 만나 테라폼에 대해 궁금하게 되어 읽게 되었습니다.
- 이 책은 코드를 관리하는 모든 사람을 위한 것으로 시스템 관리자, 운영 엔지니어, 릴리스 엔지니어, 사이트 안전성 엔지니어, 데브옵스 엔지니어, 인프라 개발자, 풀스택 개발자, 엔지니어링 관리자 및 CTO가 포함됩니다. 이 책의 목표는 왜 테라폼을 사용하려 하는지, 워크플로에 어떻게 적용할 것인지, 그리고 어떤 모범 사례가 가장 잘 작동하는지에 대해 논의함으로써 테라폼을 제대로 운영할 수 있도록 하는 것입니다.
- 책을 읽으면서 코드형 인프라를 왜 사용하는지 알게 되었으며 테라폼에 대해 전반적인 내용에 대해 배웠습니다. 테라폼 코드 작성 방법부터 상태를 관리하는 방법, 모듈 만드는 방법, 프로덕션 수준의 테라폼 코드를 작성하고 테스트하는 방법, 배포 및 관리 예제를 실습 내용과 함께 배울 수 있어서 좋았습니다.
프로덕션 수준 인프라 체크 리스트
작업 | 설명 | 사용 가능한 도구 |
설치 | 소프트웨어 바이너리나 필요한 종속성을 설치 | 배시,셰프,앤서블,퍼핏 |
설정 | 포트 설정,TLS 인증서,서비스 디스커버리,리더,팔로워,복제 등의 소프트웨어 설정 | 배시,셰프,앤서블,퍼핏 |
프로비전 | 서버,로드 밸런서,네트워크,방화벽,IAM 권한 설정 등의 인프라 제공 | 테라폼, 클라우드포메이션 |
배포 | 인프라 상위의 서비스를 배포, 중단 시간 없이 업데이트 롤아웃 블루-그린,카나리 배포 등 | 테라폼,클라우드포메이션,쿠버네티스,ECS |
고가용성 | 프로세서,서버,서비스,데이터 센터,리전 등의 장애에 대비 | 멀티데이터센터, 멀티리전, 복제, 오토스케일링, 로드 밸런싱 |
확장성 | 요청량에 따른 스케일 업/아웃,수평적 확장, 수직적 확장 | 오토스케일링,복제,샤딩,캐싱,분할 정복 |
성능 | CPU,메모리,디스크,네트워크,GPU 용량 최적화,쿼리 튜닝,벤치마킹,테스트,프로파일링 | 다이나트레이스,밸그린드,비주얼VM,ab,제이미터 |
네트워킹 | 정적 혹은 동적 IP 설정, 포트, 서비스 디스커버리, 방화벽, DNS, SSH 접속, VPN 연결 | VPC,방화벽,라우터,DNS regis-tars,OpenVPN |
보안 | TLS를 통한 통신 중 데이터 암호화, 디스크 암호화, 인증, 인가, 보안 관리, 서버 하드닝 | ACM, Let's Encrypt,KMS,코그니토,볼트,CIS |
성능 지표 | 가용성, 비즈니스,애플리케이션,서버,이벤트,추적,알림에 대한 메트릭 | 클라우드워치,DataDog,NewRelic,Honeycomb |
로그 | 로그 순환, 중앙으로 로그 데이터 수집 | 클라우드 워치 Logs,ELk,Sumo 수모 로직, 페이퍼트레일 |
백업 및 복구 | DB,캐시,기타 데이터를 일정에 따라 백업,리전별, 계정별 복제 | RDS, ElastiCache, 복제 |
비용 최적화 | 적절한 인스턴스 유형 선택, 스팟 혹은 예약 인스턴스 사용, 오토스케일링, 사용하지 않는 리소스 정리 | 오토스케일링, 스팟 인스턴스, 예약 인스턴스 |
문서화 | 코드,아키텍처,모든 내용을 문서화, 장애 대응 내용 정리 | README, wikis, 슬랙 |
테스트 | 인프라 코드를 테스트 자동화, 항상 테스트 후에 배포 | 테라테스트, 인스펙,서버스펙, 키친 테라폼 |
배포 워크플로 비교
애플리케이션 코드 | 인프라 코드 | |
버전 관리 사용 | git clone 애플리케이션마다 리포지터리 하나 브랜치 사용 |
git clone 라이브와 모듈 리포지터리 브랜치 미사용 |
코드를 로컬에서 실행 | 로컬호스트에서 실행 ruby web-server.rb ruby web-server-test.rb |
샌드박스 환경에서 실행 terraform apply go test |
코드 변경 | 코드 변경 ruby web-server.rb ruby web-server-test.rb |
코드 변경 terraform apply go test 테스트 단계 사용 |
코드 리뷰를 위해 변경 사항을 적용 | 풀 요청 적용 코딩 가이드라인 수행 |
풀 요청 적용 코딩 가이드라인 실행 |
자동화된 테스트 실행 | CI 서버에서 테스트 수행 단위 테스트 통합 테스트 종단 간 테스트 정적 분석 |
CI 서버에서 테스트 수행 단위 테스트 통합 테스트 종단 간 테스트 정적 분석 terrafrom plan |
병합과 릴리스 | git tag 버전이 지정된 변경 불가능한 아티팩트 |
git tag 태그와 함께 버전이 지정된 변경 불가능한 아티팩트를 저장하는 리포지터리 사용 |
배포 | 테라폼,쿠버네티스나 메소스 같은 오케스트레이션 도구, 스크립트를 이용한 배포 롤링 배포, 블루-그린,카나리 같은 다양한 배포 전략 CI 서버를 이용한 배포 CI 서버에서 제한된 권한 부여 환경 전반에 걸쳐 불가능하고 버전이 지정된 승격 |
테라폼,아틀라스,테라폼 엔터프라이즈,테라그런트,스크립트를 이용한 배포 재시도,errored.tfstate가튼 제한적인 배포 전략, 에러 처리를 확실히 해야함 CI 서버를 이용한 배포 CI 서버에 관리자 권한 부여 환경 전바에 걸쳐 변경 불가능하고 버전이 지정된 아티팩트 승격 |
'책 리뷰' 카테고리의 다른 글
견고한 데이터 엔지니어링 - 조 라이스 (0) | 2023.12.13 |
---|---|
파이썬 클린코드 2nd Edition - 마리아노 아나야 (0) | 2023.08.17 |
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 알렉스 쉬 (0) | 2023.07.22 |
데이터 과학자 원칙 - 이정원 외 8인 (0) | 2023.06.11 |
도메인 주도 설계 첫걸음 - 블라드 코노노프 (0) | 2023.05.28 |