IT산업에 종사하면서 도구의 사용법을 익히는 것도 중요하지만, 그 뒷 배경 또한 중요합니다. 오늘은 IAC의 배경부터 관련 도구는 무엇이 있으며, 어떻게 동작하는 지에 대해 알아보는 시간을 가지겠습니다.
▶ Iac
1.가상화 기술의 발전
VM ware, Hyper-v와 같은 기술을 통해서여러대의 서버를 더 많이쉽게 만들 수 있게 되었습니다. 하지만기하급수적으로 늘어나는 서버들에 대한 프로비저닝과 운영에 대한 이슈가 발생하였습니다. 인력을 무한정으로 늘릴 수 없었기 때문에서버 구축과 운영에 대한자동화가 필요했습니다. 이러한 배경에서프로그래밍 코드로 인프라를 구축/운영할 수 있는IAC가 생겨나게 되었습니다.
2. Iac란?
IaC(Infrastructure as Code)는 코드로인프라스트럭처를 관리한다는 개념으로 테라폼에서는 하시코프 설정 언어HCL(Hashicorp Configuration Language)을 사용해클라우드 리소스를 선언합니다.
쉽게 말해,인프라를 사람이 읽을 수 있는 코드로 만들 수 있습니다. 이를 통해 버전 관리, 공유 및 재사용이 가능합니다.
3.Iac 종류
Iac는 영역별로 크게 두 종류로 나눌 수 있습니다.
Iac 종류
설명
종류
Provisioning Tool (프로비저닝 도구)
♠ 일반적으로 운영팀의 담당자가 컴퓨터나 가상 호스트를 사용해 개발팀에서 필요한라이브러리나 서비스를 설치하는 것을 의미합니다. 프로비저닝 영역에서는 개발팀이 사용한 코드 버전과 동일한 버전을 사용해네트워크, VM, DB등을 구성합니다.
◆ Terraform ◆ Cloudformation
SCM Tool (구성 관리 도구)
♠ 구성관리는 성능부터 H/W 속성과 라이프사이클 전반에 걸친요구사항,설계 및 운영 정보의 일관성 등을 설정하고 유지하기 위한 시스템 프로세스입니다. 프로비저닝이 인프라에 대한 배포 위주에 진행된다면, 구성관리는 애플리케이션의 구성 설정을 관리하는 영역입니다.
♠ 수동으로 서버를 생성하는 게 아닌 코드로 생성하기 때문에 서버 운영 및 관리가 모두 자동화 될 수 있습니다. ♠ 예를 들어, AWS에서 새로운 서버를 생성 하기 위해서 AWS 콘솔에 로그인할 필요없이 Terraform 코드를 실행시키기기만 하면 됩니다.
속도 & 안전
♠ 코드로 실행 되기 때문에 사람이 수동으로 작업하는 것 보다 훨씬 빠르며 또한 사람이 직접 할 때 생길 수 있는 실수들을 방지할 수 있습니다.
문서화
♠ 모든 인프라가 코드로 기록 및 관리 되기 때문에 자동으로 문서화가 됩니다. 가장 큰 장점 중에 하나로, 많은 회사에서 인프라를 직접 구현하고 관리한 담당자를 제외하고는 전체 서버를 전부 파악하고 있는 사람이 없는 경우가 많습니다. 하지만 Terraform의 경우에는 새로 들어온 개발자라도 Terraform code를 보면 전체적인 구성을 이해할 수 있습니다.
형상관리
♠git을 통해 형상관리가 가능하며, 인프라의 변경 기록을 쉽게 볼 수 있습니다.
리뷰 및 테스트
♠ 수동으로 서버 작업을 할 때는, 실제로 실행하기 전에 리뷰 하는 것이 굉장히 힘들수 밖에 없었습니다. 그래서 문제가 발견 되었을 때는 이미 프로덕션 애플리케이션에 영향을 주고 난 후인 경우가 많았는데, Terraform의 경우 코드 리뷰와 테스트를 통해 문제가 실제로 발생 되는 것을 어느 정도 예방할 수 있습니다.
3.Terraform 테라폼 구성
구성은 간단하게 알아보고 자세한 내용은 다음 글에 올려드리겠습니다.
<Terraform 진행순서>
<기본 구성 개념>
구성
설명
프로비저닝 (Provisioning)
♠ 어떤 프로세스나 서비스슬 실행하기 위한 준비 단계 ♠ 크게 네트워크나 컴퓨팅 자원을 준비하는 작업
프로바이더 (Provider)
♠ 테라폼과 외부 서비스를 연결해주는 기능 ♠ 프로바이더로는 AWS, GCP, Azure와 같은 범용 클라우드 서비스를 비롯해 Github, Datadog와 같은 특정 기능을 제공하는 서비스
리소스
♠ 프로바이더가 제공해주는 조작 가능한 대상의 최소 단위 ♠ 예를 들어 AWS 프로바이더는 aws_instance 리소스 타입을 제공하고, 이 리소스 타입을 사용해 Amazon EC2의 가상 머신 리소스를 선언하고 조작하는 것이 가능
계획 (Plan)
♠ 테라폼 프로젝트 디렉터리 아래의 모든 .tf 파일의 내용을 실제로 적용 가능한지 확인하는 작업 terraform plan
적용 (apply)
♠ 테라폼 프로젝트 디렉터리 아래의 모든 .tf파일의 내용대로 리소스를 생성, 수정, 삭제하는 일을 적용 ♠ terraform apply
▶ IAC가상화 기술의 발전 Iac 란 Iac 종류 ▶ TerraformTerraform 개념 Terraform 장점 Terraform 구성 사용관리 툴 들어가기전에.. IT산업에 종사하면서 도구의 사용법을 익히는 것도 중요하지만, 그 뒷 배경 또한 중요합니다. 오늘은 IAC의 배경부터 관련 도...
Elasticsearch, Apache Lucene( 아파치 루씬 ) 기반의 Java 오...
1. Elasticsearch란? Elasticsearch는 Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진입니다. Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있게 되었으며, 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real T...
Nifi란?Apache Nifi는 시스템 간 데이터 전달을 효율적으로 처리, 관리, 모니터링 하기에 최적화 된 시스템임. 대량의 데이터 수집, 처리가능 Dataflow를 쉽게 구성이 가능하며, 시스템 간의 데이터 이동과 내용을 볼 수 있는 UI제공 강력한 자원과 권한 관리...
docker logo 2013년 등장한 도커docker는 인프라 세계를 컨테이너container 세상으로 바꿔버렸습니다. 수많은 애플리케이션이 컨테이너로 배포되고 도커파일을 만들어 이미지를 빌드하고 컨테이너를 배포하는 게 흔한 개발 프로세스가 되었습니다. 2019년 Doc...
VPC Peering에서는 인터넷 통신을 거치지 않고 비공인 IP를 통해 내부 네트워크로 다른 VPC와 통신하도록 구성할 수 있습니다. VPC Peering을 통해 전용 네트워크의 확장 효과를 누릴 수 있으며 안전한 통신이 가능합니다. 네이버 클라우드 플랫폼의 VPC 서비...
VPC Peering VPC Peering 이란 다른 VPC간에 Private IP로 통신가능하도록 연결하는 것을 말합니다. 보통의 VPC 간 통신은 Public IP를 통해 이루어집니다. Public IP를 통해 통신을 할 경우 데이터의 안전성에 대한 문제가 발생할 수 있습니다. VPC Peering을...
VPN(Virtual Private Network) 가상 사설망 (출처) 위키백과 공중 네트워크를 통해 한 회사나 몇 몇 단체가 내용을 바깥 사람에게 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망이다. 다시 설명하면 공중망에서 가상의 사설망을 구현하는 기술이라고 할 ...
1. 오토스케일링(Auto Scaling)이란AWS에서 Scale In / Out 기능을 자동으로 수행해주는 기능으로 정책에 따라서 자원을 조정해주는 AWS 서비스를 말한다. 스케일아웃(Scale Out)서버의 자원 스펙 상승으로는 한계가 있으며 효율이 떨어지는 시점이 있다. Scal...
목차1) Docker 컨테이너 라이프 사이클 2) 컨테이너 라이프 사이클 단계 및 CLI 0. 요약 1. 컨테이너 생성 (Create Container) 2. 컨테이너 시작 (Start Container) 3. 컨테이너 실행 (Run Container) 4. 컨테이너 일시 정지 (Pause Container) 5. 컨테이너 재...
정부원격근무서비스(GVPN)를 통한 통합운영관리시스템 (nTOPS, national Total Operation Platform System) 접속 "통합운영관리시스템"이란 표준운영절차의 이행을 지원하기 위한 정보시스템으로, nTOPS(national Total Operation Platform System)를 말한다. ...
Red Hat 회사의 엔터프라이즈급 서버 가상화 제품인 RHEV 4.0 Hypervisor를 설치하는 방법에 대해 알아보도록 하겠습니다. 레드햇이 2008년에 가상화 업체였던 쿰라넷(Qumranet)을 인수하게 됩니다. 그리고 이때 KVM이 레드햇으로 넘어가게 되었죠. 다시 말해...
빠른 개발과 다양한 요구사항에 대응하기 위해서 MSA를 적용하는 기업이 증가하고 있습니다. 특히, MSA는 클라우드 환경에서 시스템을 구축할 때 효율적인 측면이 많은데요. 떼려야 뗄 수 없는 클라우드와 MSA에 대해 알아보았습니다. MSA(Microserv...
MSA란 그리고 등장 Monolithic Architecture 란? 소프트웨어의 모든 구성요소가 하나의 결합체를 이루고 있는 프로젝트 설계모습이 있다. 그런 설계 모습을 모놀리식 아키텍처라 부릅니다. 큰 규모의 서비스가 아니라면 모놀리식 아키텍처를 많이 사용하고 저...