SlideShare a Scribd company logo
2020.01.31 기술스터디 김성익
야, 너두 (코드로) 짤수 있어
IaC로 인프라 관리하기
목차
• 0. 앞서서

• 1. IaC란?

• 2. 왜 인프라를 코드로 짜야할까?

• 3. 대표적인 IaC 툴 알아보기

• 4. Pulumi 간단히 활용해보기
DevOps? Infrastructure?
0. 앞서서
"10+ Deploys Per Day: Dev & Ops Cooperation at Flickr”
(https://www.youtube.com/watch?v=LdOe18KhtT4&ab_channel=O%27Reilly)
개발(develop)과 운영(operation)의 분리로 소통비용이 발생하는 것을 막기 위하여,
개발팀과 운영팀을 긴밀하게 묶고, 통합/자동화/측정/공유하는 문화를 만드는
개발 방법론
0. 앞서서
“1. 라우터, 스위치, 케이블 등의 네트워크,
2. 데이터 센터, 서버 컴퓨터 등의 하드웨어,
3. OS, 웹서버, 미들웨어 등의 소프트웨어를 일컫는다”
Red Hat
IT Infrastructure란?
0. 앞서서
IaC란 무엇인가?
1. IaC란?
인프라스트럭쳐를 대하는 패러다임
인프라스트럭쳐를 다루는 기존의 방식
from 테라폼 도입기 클라우드 인프라스트럭처 코드로 재정의하기 - 김대권
1. Server Scripting

스크립트 자동 실행
2. Configuration Management

서버 상태 관리
3. Resourcement Management

리소스 정의
-> python manage.py collectstatic

python manage.py migrate

sudo service uwsgi restart

sudo service nginx restart
1. IaC란?
왜 인프라를 코드로 짜야 하는가?
배포날…
• 아무리 열심히 기능개발을 해도, 배포
날만 되면 깨지는 서버

• 배포날 퇴근 시간은 없다.

• 열심히 관리해놓아도, 업데이트 한번
했다가 의존성 깨지면 롤백하느라 한
세월

• 업데이트는 절대 하지 않는다
2. 왜 IaC인가
인프라 관리 메뉴얼을 만들라고?
• 열심히 PPT에 그림 갖다붙이며 관리
메뉴얼 만들어놓고 인수인계, 공유했
는데…

• 콘솔 화면을 업데이트했네..?

• 누가 버튼을 잘못눌러서 뭘 바꿔놨는데, 뭘 바꿔
놨는지도 모르겠네..?
2. 왜 IaC인가
2. 왜 IaC인가
• 과거의 On Premiss 환경에서는 IaC가 옵션

• 하드웨어를 이용해 다룰 수 있었음

• 서버를 관리하는 전문 관리자의 수도 많았음

• 그러나, 클라우드 환경에서 IaC는 필수

• 하드웨어가 없어 모든 것을 소프트웨어로 다루어야함

• 소프트웨어를 코드로 배포하는 방법에 익숙해져야만 함
대표적인 IaC 툴
3. IaC 툴 비교하기
3. IaC 툴 비교하기
1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• 기존의 템플릿형

• AWS CloudFormation, MS Azure Resource Manager, Google Cloud
Deployment Manager

• YAML, JSON 등을 통해 infra를 템플릿으로 저장하여 구성 가능

• 각자 자기 플랫폼만 지원 내가 다 해먹고싶다!
3. IaC 툴 비교하기
1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• Terraform

• 업계 골목대장 

• 멀티 provider 플랫폼 지원(국내에는 네이버도 있음)

• HCL(Hashicorp Configuration Language)라는 전용 DSL(Domain Specific
Language) 지원

• plan, apply 명령어로 immutable한 infra state 정의
3. IaC 툴 비교하기
1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
3. IaC 툴 비교하기
1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• AWS CDK

• AWS CloudFormation을 기반으로 만든 AWS의 프로비져닝 툴

• YAML, JSON 대신 TS, Python, .Net, JAVA 지원

• AWS 플랫폼 종속적
3. IaC 툴 비교하기
1. Provisioning Tool
리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴
• Pulumi

• 멀티 provider 지원

• Terraform에 비해 이용자가 적지만, 점점 주목받고 있는 툴

• Python, Go, JS/TS 등 다양한 언어를 지원해서, 비교적
낮은 러닝커브로 개발자들이 인프라 구성을 시도할 수 있음

• Terraform 처럼 immutable state 지원
3. IaC 툴 비교하기
2. Configuration Management Tool
서버 환경 구성
• 생성(provisioning)된 서버 시스템 위에서 사용됨

• 여러 개의 서버 사이의 환경을 구축하고, 소프트웨어를 설치/업데이트하기위해
사용

• 다수의 서버와 다양한 환경(OS 등)을 지원
3. IaC 툴 비교하기
• Ansible

• CM tool의 업계 1위

• Red Hat에서 인수하여 관리중

• python으로 구현됨

• YAML 사용
3. IaC 툴 비교하기
2. Configuration Management Tool
서버 환경 구성
• CM tool과 다르게, 한 대의 machine 내부에서 동작함

• Container형과, VM형이 있음 -> DevOps 직군의 단골면접질문!

• 서버 상태를 코드로 남기고, 이를 Image로 템플릿화

• 결국, OS 등의 machine 환경에 구애받지 않고 완전히 동일하게 app 동작 가능

• ubuntu에서는 됐는데, CentOS에서는 안되네.. <- 이런 경우를 차단
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리
• Docker

• 컨테이너계의 표준(최근에 CRI 문제로 k8s가 docker를 deprecating한다고 하긴 했지만..)

• 스크립트로 구성된 Docker File을 이용해 Machine Image를 생성

• 생성된 이미지를 토대로 컨테이너를 돌림

• Orchestration Tool로 Docker Swarm이 있지만, 업계 표준은 Kubernetes라
k8s와 더 많이 사용됨
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리
Docker가 정말 IaC 맞나요?

그렇다고 합니다(…)
• Packer

• Terraform을 만든 Hashicorp 사의 제품

• Machine Image를 생성하는 역할만 수행

• Docker Script를 배울 필요 없이, JSON만으로 이미지를 구성할 수 있다는
점이 좋음
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리
• Vagrant

• Virtual Machine 프로비져닝 자동화 툴

• Vagrant file를 작성하여

VM Box의 세부 설정 가능

• Container형의 우세로 최근에는 사용빈도 하락
3. IaC 툴 비교하기
3. Server Templating Tool
서버의 상태를 이미지로 관리
S3 bucket Provisioning
&
static file serving
Pulumi 실습
4. Pulumi 간단히 활용해보기

More Related Content

What's hot

Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개
Ted Won
 
Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
Arvind Devaraj
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Docker, Inc.
 
Writing the Container Network Interface(CNI) plugin in golang
Writing the Container Network Interface(CNI) plugin in golangWriting the Container Network Interface(CNI) plugin in golang
Writing the Container Network Interface(CNI) plugin in golang
HungWei Chiu
 
JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 JBoss EAP 설치 가이드
JBoss EAP 설치 가이드
Opennaru, inc.
 
Docker and the Linux Kernel
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux Kernel
Docker, Inc.
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
Dzmitry Naskou
 
React Native
React NativeReact Native
React Native
Fatih Şimşek
 
Intro to Node.js (v1)
Intro to Node.js (v1)Intro to Node.js (v1)
Intro to Node.js (v1)
Chris Cowan
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
Terry Cho
 
Hadoop Overview kdd2011
Hadoop Overview kdd2011Hadoop Overview kdd2011
Hadoop Overview kdd2011
Milind Bhandarkar
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기
InfraEngineer
 
이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdf이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdf
jaehoon lee
 
NestJS
NestJSNestJS
NestJS
Wilson Su
 
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019
Loiane Groner
 
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstackLoad Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
Yashar Esmaildokht
 
openstack designate
openstack designateopenstack designate
openstack designate
Yashar Esmaildokht
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
floydophone
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
Wonchang Song
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
Ji-Woong Choi
 

What's hot (20)

Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개
 
Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
 
Writing the Container Network Interface(CNI) plugin in golang
Writing the Container Network Interface(CNI) plugin in golangWriting the Container Network Interface(CNI) plugin in golang
Writing the Container Network Interface(CNI) plugin in golang
 
JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 JBoss EAP 설치 가이드
JBoss EAP 설치 가이드
 
Docker and the Linux Kernel
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux Kernel
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
React Native
React NativeReact Native
React Native
 
Intro to Node.js (v1)
Intro to Node.js (v1)Intro to Node.js (v1)
Intro to Node.js (v1)
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Hadoop Overview kdd2011
Hadoop Overview kdd2011Hadoop Overview kdd2011
Hadoop Overview kdd2011
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기
 
이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdf이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdf
 
NestJS
NestJSNestJS
NestJS
 
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019
 
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstackLoad Balancing-as-a-Service (LBaaS) with octavia in openstack
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
 
openstack designate
openstack designateopenstack designate
openstack designate
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 

Similar to 야, 너두 짤수있어 - IaC Basic(210131 김성익)

[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
NAVER D2
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Terry Cho
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
Inho Kang
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
중선 곽
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
Terry Cho
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
Joongi Kim
 
introduction of IaC using CloudFormation
introduction of IaC using CloudFormationintroduction of IaC using CloudFormation
introduction of IaC using CloudFormation
HongkiYim
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
Seong-Bok Lee
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
uEngine Solutions
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
Terry Cho
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
Jeongsang Baek
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
태준 문
 
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
Devgear
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
수보 김
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)uEngine Solutions
 
애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축
rockplace
 
Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process uEngine Solutions
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
Terry Cho
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oceuEngine Solutions
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS)
VMware Tanzu Korea
 

Similar to 야, 너두 짤수있어 - IaC Basic(210131 김성익) (20)

[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
introduction of IaC using CloudFormation
introduction of IaC using CloudFormationintroduction of IaC using CloudFormation
introduction of IaC using CloudFormation
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
 
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
Upgrade VCL! 오래된 프로그램, 최신 버전으로 탈바꿈하기
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축
 
Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS)
 

야, 너두 짤수있어 - IaC Basic(210131 김성익)

  • 1. 2020.01.31 기술스터디 김성익 야, 너두 (코드로) 짤수 있어 IaC로 인프라 관리하기
  • 2. 목차 • 0. 앞서서 • 1. IaC란? • 2. 왜 인프라를 코드로 짜야할까? • 3. 대표적인 IaC 툴 알아보기 • 4. Pulumi 간단히 활용해보기
  • 4. "10+ Deploys Per Day: Dev & Ops Cooperation at Flickr” (https://www.youtube.com/watch?v=LdOe18KhtT4&ab_channel=O%27Reilly) 개발(develop)과 운영(operation)의 분리로 소통비용이 발생하는 것을 막기 위하여, 개발팀과 운영팀을 긴밀하게 묶고, 통합/자동화/측정/공유하는 문화를 만드는 개발 방법론 0. 앞서서
  • 5. “1. 라우터, 스위치, 케이블 등의 네트워크, 2. 데이터 센터, 서버 컴퓨터 등의 하드웨어, 3. OS, 웹서버, 미들웨어 등의 소프트웨어를 일컫는다” Red Hat IT Infrastructure란? 0. 앞서서
  • 8. 인프라스트럭쳐를 다루는 기존의 방식 from 테라폼 도입기 클라우드 인프라스트럭처 코드로 재정의하기 - 김대권 1. Server Scripting 스크립트 자동 실행 2. Configuration Management 서버 상태 관리 3. Resourcement Management 리소스 정의 -> python manage.py collectstatic python manage.py migrate sudo service uwsgi restart sudo service nginx restart 1. IaC란?
  • 9. 왜 인프라를 코드로 짜야 하는가?
  • 10. 배포날… • 아무리 열심히 기능개발을 해도, 배포 날만 되면 깨지는 서버 • 배포날 퇴근 시간은 없다. • 열심히 관리해놓아도, 업데이트 한번 했다가 의존성 깨지면 롤백하느라 한 세월 • 업데이트는 절대 하지 않는다 2. 왜 IaC인가
  • 11. 인프라 관리 메뉴얼을 만들라고? • 열심히 PPT에 그림 갖다붙이며 관리 메뉴얼 만들어놓고 인수인계, 공유했 는데… • 콘솔 화면을 업데이트했네..? • 누가 버튼을 잘못눌러서 뭘 바꿔놨는데, 뭘 바꿔 놨는지도 모르겠네..? 2. 왜 IaC인가
  • 12. 2. 왜 IaC인가 • 과거의 On Premiss 환경에서는 IaC가 옵션 • 하드웨어를 이용해 다룰 수 있었음 • 서버를 관리하는 전문 관리자의 수도 많았음 • 그러나, 클라우드 환경에서 IaC는 필수 • 하드웨어가 없어 모든 것을 소프트웨어로 다루어야함 • 소프트웨어를 코드로 배포하는 방법에 익숙해져야만 함
  • 14. 3. IaC 툴 비교하기
  • 15. 3. IaC 툴 비교하기
  • 16. 1. Provisioning Tool 리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴 • 기존의 템플릿형 • AWS CloudFormation, MS Azure Resource Manager, Google Cloud Deployment Manager • YAML, JSON 등을 통해 infra를 템플릿으로 저장하여 구성 가능 • 각자 자기 플랫폼만 지원 내가 다 해먹고싶다! 3. IaC 툴 비교하기
  • 17. 1. Provisioning Tool 리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴 • Terraform • 업계 골목대장 • 멀티 provider 플랫폼 지원(국내에는 네이버도 있음) • HCL(Hashicorp Configuration Language)라는 전용 DSL(Domain Specific Language) 지원 • plan, apply 명령어로 immutable한 infra state 정의 3. IaC 툴 비교하기
  • 18. 1. Provisioning Tool 리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴 3. IaC 툴 비교하기
  • 19. 1. Provisioning Tool 리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴 • AWS CDK • AWS CloudFormation을 기반으로 만든 AWS의 프로비져닝 툴 • YAML, JSON 대신 TS, Python, .Net, JAVA 지원 • AWS 플랫폼 종속적 3. IaC 툴 비교하기
  • 20. 1. Provisioning Tool 리소스 정의 및 구성(아키텍쳐 구성)에 사용되는 툴 • Pulumi • 멀티 provider 지원 • Terraform에 비해 이용자가 적지만, 점점 주목받고 있는 툴 • Python, Go, JS/TS 등 다양한 언어를 지원해서, 비교적 낮은 러닝커브로 개발자들이 인프라 구성을 시도할 수 있음 • Terraform 처럼 immutable state 지원 3. IaC 툴 비교하기
  • 21. 2. Configuration Management Tool 서버 환경 구성 • 생성(provisioning)된 서버 시스템 위에서 사용됨 • 여러 개의 서버 사이의 환경을 구축하고, 소프트웨어를 설치/업데이트하기위해 사용 • 다수의 서버와 다양한 환경(OS 등)을 지원 3. IaC 툴 비교하기
  • 22. • Ansible • CM tool의 업계 1위 • Red Hat에서 인수하여 관리중 • python으로 구현됨 • YAML 사용 3. IaC 툴 비교하기 2. Configuration Management Tool 서버 환경 구성
  • 23. • CM tool과 다르게, 한 대의 machine 내부에서 동작함 • Container형과, VM형이 있음 -> DevOps 직군의 단골면접질문! • 서버 상태를 코드로 남기고, 이를 Image로 템플릿화 • 결국, OS 등의 machine 환경에 구애받지 않고 완전히 동일하게 app 동작 가능 • ubuntu에서는 됐는데, CentOS에서는 안되네.. <- 이런 경우를 차단 3. IaC 툴 비교하기 3. Server Templating Tool 서버의 상태를 이미지로 관리
  • 24. • Docker • 컨테이너계의 표준(최근에 CRI 문제로 k8s가 docker를 deprecating한다고 하긴 했지만..) • 스크립트로 구성된 Docker File을 이용해 Machine Image를 생성 • 생성된 이미지를 토대로 컨테이너를 돌림 • Orchestration Tool로 Docker Swarm이 있지만, 업계 표준은 Kubernetes라 k8s와 더 많이 사용됨 3. IaC 툴 비교하기 3. Server Templating Tool 서버의 상태를 이미지로 관리
  • 25. Docker가 정말 IaC 맞나요? 그렇다고 합니다(…)
  • 26. • Packer • Terraform을 만든 Hashicorp 사의 제품 • Machine Image를 생성하는 역할만 수행 • Docker Script를 배울 필요 없이, JSON만으로 이미지를 구성할 수 있다는 점이 좋음 3. IaC 툴 비교하기 3. Server Templating Tool 서버의 상태를 이미지로 관리
  • 27. • Vagrant • Virtual Machine 프로비져닝 자동화 툴 • Vagrant file를 작성하여
 VM Box의 세부 설정 가능 • Container형의 우세로 최근에는 사용빈도 하락 3. IaC 툴 비교하기 3. Server Templating Tool 서버의 상태를 이미지로 관리
  • 28. S3 bucket Provisioning & static file serving Pulumi 실습 4. Pulumi 간단히 활용해보기