Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AI챗봇
- 파이썬
- GIT
- Azure
- 함수
- open ai
- maven
- Linux
- git hub
- 3티어 아키텍처
- AI
- 표준 라이브러리
- 프로세스 관리
- terraform
- awskrug
- 애저
- it기사
- nexus
- dockerfile
- python
- AWS
- 클라우드
- go
- 리눅스
- OpenAI
- jenkins
- aws사용자모임
- 사용자 계정 관리
- 변수
- docker
Archives
- Today
- Total
We are Architect
테라폼: 코드형 인프라 ? (1) 본문
* 데브옵스의 출현
- 옛날에는 개발과 운영이 따로 존재하고 그들 간의 역할이 존재했었다.
- 개발팀은 애플리케이션을 개발하고 운영팀은 하드웨어에 애플리케이션을 어떻게 배포하고 운영할 것인지 결정.
- 이 작업 방식들은 서버의 규모가 커져갈수록 예상치 못한 일들이 많아진다.
- 얘를 들어 운영팀의 실수로 모든 서버가 똑같이 설정되지 않거나 일부 설정이 미묘하게 달라질 수도 있다.
- 왜냐하면 사람이 수작업으로 하기 때문에 실수가 생기기 마련이다.
- 이때 이러한 실수를 '구성 드리프트' 라고 한다.
- 구성 드리프트는시스템 구성이 더 이상 비즈니스 요구 사항이나 관련 환경에 맞지 않는 경우에 발생
- 이렇게 되면 서비스가 중단되는 상태가 이어지면서 손실을 입는다.
- 그러나 오늘날 '클라우드'라는 시스템이 생기면서 AWS, Azure, GCP 등 다양한 조직이 클라우드로 서비스를 배포하고 있다.
- 클라우드 시스템은 기존 하드웨어 구성 과정을 생략이 가능하고 또한 고가용성 시스템이 잘 구축이 되어 있었다.
- 이런 클라우드 시스템을 사용해서 여러 인프라를 자동구축하게 도와주는 도구들 또한 등장하였다.
- 예를 들어 Terroform, 퍼핏, 셰프 등과 같은 툴들이 등장하였다.
- 이렇게 되면 인프라는 코드로 구축되기 때문에 운영팀과 개발팀에 대한 업무의 모호함이 생기는 상황이 올 수 있다.
- 그래서 등장한 것이 '데브옵스'이다.
- 데브옵스는 소스트웨어를 효율적으로 전달하는 문화이다.
- 운영과 개발 양쪽에 이익이 되자 라는 문화로 목표는 소프트웨어 배포를 최대한 자동화하는 것에 맞춰져 있다.
- 한마디로 코드로 개발을 완료하면 자동으로 배포를 시키고 인프라까지 코드로 구축해 자동으로 배포가 가능하게 하여 애플리케이션을 속전속결로 배포할 수 있게 하는 프로세스이다.
- 그렇기에 위와 같은 시스템 자동화 구축 툴 들이 등장을 하였다.
* 코드형 인프라?
- 코드를 작성 및 실행하여 인프라를 생성, 배포, 수정 정리 하는 것을 말한다.
- 이는 서버를 물리적으로 설치하는 등의 하드웨어 측면을 포함하여 운영의 모든 측면을 소프트웨어적으로 생각하는 중대한 사고 전환을 보여둔다.
- 데브옵스의 핵심은 IT인프라 및 애플리케이션 배포 등을 코드로 관리할 수 있다는 것이다.
- 그리고 코드형 인프라 도구에는 다섯 가지 범주가 있다.
- 애드훅 스크립트
- 구성 관리 도구
- 서버 템플릿도구
- 오케스트레이션 도구
- 프로비전 도구
- 애드훅 스크립트
- 자동화하는 가장 간단한 방법은 애드훅 스크립트를 사용하는 것이다.
- 수행할 작업을 단계별로 나누고 파이썬, 루비 같은 언어로 코딩하여 해당 파일을 서버에서 실행하는 것.
- 그러나 실행하는 서버에서 수작업으로 작성해줘야 한다.
- 구성 관리 도구
- 어느 대상 서버에 구성 관리 도구 소프트웨어를 설치하고 여러 관리 중인 서버들에게 원격으로 동일하게 설정을 배포할 수 있음. 이를 분산형 구조이라고 한다.
- 일단 쉘스크립트 보다 장점은 코딩 규칙이 있어 일관되고 예측 가능한 구조를 제공한다.
- 구성 관리 도구들은 실행 횟수 관계없이 올바르게 동작한다. 이를 멱등성이라고 한다.
- 이러한 도구들은 앤서블, 퍼핏 정도가 존재한다.
- 서버 템플릿 도구
- 구성관리 도구의 대안으로 서버를 실행하는 파일들을 최대한 압축한 이미지를 가지고 서버를 구성하게 하는 도구이다.
- 도구들은 docker, 패커, 베이그런트 등이 존재한다.
- 또한 이미지 작업을 위한 도구는 두 가지 범주로 나뉜다.
- 가상머신 : 이미지를 소프트웨어를 통해 가상의 서버를 구현하게 하는 프로그램이다. ex) VM Ware
- 컨테이너 : 이미지를 경량화시켜서 도커 같은 도구를 통해서 하드웨어 위에서 프로세스로 작동시키게 한다.
- 오케스트레이션 도구
- 대량의 컨테이너를 운영하는 데 있어서 효과적이게 도와주는 툴들이다.
- 도구는 쿠버네티스, 도커 스웜, 노마드, AWS ECS 등이 존재한다.
- 프로비전 도구
- 위에 툴들은 이미 실행되고 있는 서버에 적용한다면 프로비전 도구들은 서버 자체를 구축해 주는 툴들이다.
- 서버뿐만 아니라 다양한 자원들 또한 자동으로 구축해 준다.
- 관련 도구들은 테라폼, AWS 클라우드 포메이션, 오픈스택 히트 등이 존재한다.
* 코드형 인프라의 장점?
- 코드형 인프라의 장점은 우선 코드로 할 수 있는 것이 너무 많기 때문이다.
- 테라폼은 오픈소스여서 누구나 사용이 가능하다. 그러나 관리 용도로 사용하면 문제가 없으나 상업적인 용도로 판매하게 되면 법적인 문제가 생길 수도 있다.
- 특히 효율성 개선에 있어서 많은 도움을 준다.
- 자급식 배포 : 모두가 알고 있는 도구로 필요시 자체 배포.
- 속도와 안정성 : 자동화된 프로세스는 일관되고 반복 가능하여 오류가 적게 난다.
- 문서화 : 누구나 읽을 수 있는 소스 파일로 인프라 상태를 나타낼수 있다.
- 버전관리 : 인프라의 변경 내용이 모두 기록된 코드형 인프라 소스 파일을 저장할 수 있으므로 버전을 쉽게 관리할 수 있습니다.
- 유효성 검증 : 인프라 상태가 코드로 정의되어 있으면 변경될 때마다 검증을 수행하고 일련의 자동화된 테스트를 실행할 수 있으며 정적 분석 프로그램에 코드를 전달하여 오류 발생 위험을 줄일 수 있습니다.
- 제사용성 : 인프라를 재사용 가능한 모듈로 패키징할 수 있으므로 모든 제품을 매번 처음부터 배포하는 대신 문서화 되고 검증된 모듈로 일관되게 배포할 수 있습니다.
* 테라폼의 작동 방식
- 테라폼은 go언어로 만들어진 오픈소스 도구다.
- 테라폼은 terraform이라는 명령어로 실행 할 수 있다.
- 테라폼 빌드 후에 나오는 테라폼은 바이너리는 클라우드 공급자 API를 호출해서 리소스를 생성한다.
- 작동과정을 정확하게 이야기 하면 테라폼으로 하여 클라우드 플랫폼 API를 생성하여 클라우드 플랫폼에 접속한 후에 API가 클라우드 플랫폼에 리소스 생성을 요청을 한다.
'Terraform' 카테고리의 다른 글
테라폼 기본 사용법(3) (0) | 2025.01.10 |
---|---|
테라폼: 테라폼과 다른 코드형 인프라 도구 비교 (2) (0) | 2025.01.05 |