목적
어떤 인프라스트럭처든 간에 하나의 작업 흐름으로 프로비저닝하는 것 큰 규모의 조직에서 Terrform 의 사용을 관리할 때의 사용패턴은 “collaborative infrasturcture as code” 라고 부름
프로비저닝이란
준비, 예제, 설비의 뜻을 가지고 있음
IT 인프라 자원을 사용자 또는 비즈니스의 요구사항에 맞게 할당, 배치, 배포해서 시스템을 사용 할 수 있도록 만들어 놓는 작업을 의미함
근본적인 도전
기술적 복잡성
인프라스트럭처 프로바디어는 새로운 리소스를 프로비저닝할때 다른 인터페이스를 사용하고 작업을 매일 하며 인터페이스의 불일치성 때문에 추가 비용이 발생하게 됨
Terraform 은 프로비저닝 작업을 분리해 이런 복잡성을 해결함 IAC 의 구성을 읽고 리소스 간의 관계를 결정할 때 하나의 핵심 엔진을 사용하고 인프라스트럭처 프로바이더에서 리소스를 생성하고 수정하고 삭제할 때 다수의 프로바이더 플러그인을 사용함
Terrform은 리소스 수준의 추상화가 아니라 작업 흐름의 추상화 모델을 사용함
조직적 복잡성
인프라스트럭처 규모에 따라 이를 유지하는데는 더 많은 팀을 필요로 함.
팀 간의 인프라스트럭처 소유권을 위임하고 충돌 없이 작업을 동시에 할 수 있도록 권한을 위임하는 것이 중요
대규모 애플리케이션을 위임하기 위해 회사는 애플리케이션을 작게 나누고 특정 팀이 자신의 마이크로서비스 컴포넌트에 집중하게 함
비슷하게 IAC 도 제한된 범위를 가지고 특정 팀이 소유한 더 작은 Terraform 구성으로 분리할 수 있음
마이크로서비스가 API로 통신하고 연결하듯이 Terraform 워크스페이스는 원격 상태로 연결됨
Terraform 구성이 느슨하게 연결되어 있다면 다른 팀에 개발과 유지 보수를 위임할 수 있음
이를 효율적으로 하려면 코드에 대한 접근 제어가 필요함 누가 코드를 실행 할 수 있는지도 관리해야함 WHY? 실제 인프라스트럭처에 영향을 주기 때문에
운영 성숙도의 4가지 단계
수동
- 인프라 스트럭처를 UI나 CLI 로 프로비저닝함
- 구성 변경사항을 추적할 수 있는 히스토리가 없고 그 내용을 전혀 볼 수 없다
- 적절한 작명 표준이 없거나 제한적으로만 존재한다.
반자동
- 인프라를 UI/CLI, IAC, 스크립트, 구성관리의 조합으로 프로비저닝함
- 각 조직이 다른 기록 유지 방법을 사용하므로 제한적으로만 추적 가능하다.
- 기록유지 방법이 다르므로 롤백하기가 어렵다.
IAC
- 인프라스트럭처를 OSS 로 프로비저닝한다
- 프로비저닝과 배포 프로세스가 자동화 되어있다
- 인프라 구성에 일관성이 있고 필요한 모든 내용이 문서로 만들어져있다
- 수정 히스토리를 기로갛려 소스파일을 버전관리에 저장한다
- 이전 버전으로 롤백할 수 있다
- 일부 Terrform 코드가 모듈로 분리되어있어 조직의 공통 아키텍처 패넡을 일관성 있게 재사용하도록 권장한다.
CIAC
- 조직 내의 사용자들이 Terraform 으로 인프라스트럭처를 안전하게 프로비저닝 할 수 있고 충돌이 발생하지 않으며 접근 권한을 명확하게 이해 할 수 있게함
- 조직내의 전문가가 표준화된 인프라스트럭처 템플릿을 만들 수 있음
- 초심자는 조직의 인프라스트럭처 권장 사용사례를 따르기 위해 템플릿을 이용함
- 워크스페이스의 접근제어로 커미터와 승인자가 프로덕션 환경을 보호 할 수 있게함
'기타' 카테고리의 다른 글
[API 명세 포멧을 이용한 API 디자인] (0) | 2024.02.21 |
---|---|
[IntelliJ] - 단축키 (0) | 2024.02.21 |
[인과추론] - 개요 (1) | 2024.02.14 |
[UGC moderation] (0) | 2024.02.08 |
[Service Discovery] (0) | 2024.02.01 |