2017년 5월 31일, "코딩이랑 무관합니다만, + 오픈스택 한국 커뮤니티" 공동 주관 세미나에서 발표한 자료를 공유합니다. 클라우드 컴퓨팅 인프라에서 API 필요성 및 CLI에 대한 내용을 설명하였습니다.
- 행사 URL: http://onoffmix.com/event/101353
5. 5
클라우드 컴퓨팅
Over-provisioning
Demand
Capacity
t
Resources
Resources
Demand
Capacity
t1 2 3
Under-provisioning
Demand
Capacity
t
Resources
On demand, scalable
[1] http://www.basilit.com/Website/CloudComputing.aspx
[2] Above the Clouds: A Berkeley View of Cloud Computing
• 클라우드 컴퓨팅
• (언제 어디서나) 필요한 IT 자원을 즉시 사용할 수 있는 환경
• 소비자: 클라우드로 off-loading & 원하는 때만 사용
• 서비스 제공자: 자원 utilization 향상을 통한 수익 증대
6. 6
클라우드와 가상화
• 자원, 즉 리소스를 사용하고 소비하는 방식 변화
• 클라우드 이전: 필요하면 구입
• 서버 위치, 서버 및 장비 구입 비용, 수명, 전기세
• 클라우드 등장
• 시간당 지불
• 사용한 만큼 지불
• 빠르게…
• 유연하게…
• 서비스 유형에 따른 구분
• IaaS: 인프라를 서비스로 제공 OpenStack, Microsoft Azure, Amazon AWS, IBM Bluemix
• PaaS: (개발) 플랫폼을 서비스로 제공 Microsoft Azure, Google AppEngine, IBM Bluemix
• SaaS: 소프트웨어를 서비스로 제공 Office 365
• (오늘 설명하는 부분은 인프라 – IaaS와 관련한 부분입니다)
Blue network Red network
물리
네트워크
네트워크 가상화
7. 7
클라우드 환경에서 인프라 구축
• 물리적 장비 설정 방법이나 기능 차이를 신경쓰지 않고 인프라 구축 가능
• 컴포넌트의 추상화
• 방화벽 장치 vs. 보안 그룹
• 서버 사양 vs. 가상 컴퓨터 유형
• Azure: A1, DS2
• AWS: t2.small, m3.large
• OpenStack: tiny, large
• …
• 자동화
(Reference: “그림으로 배우는 클라우드 인프라와 API의 구조”, 신상재 옮김, 2017년 5월)
8. 8
잠깐: API에 관해서
• API (Application Programming Interface)
• 프로그램과 프로그램이 서로 명령을 주고 받기 위해 미리 약속해둔 일종의 규칙
9. 9
API를 사용한 클라우드 컴퓨팅 제어
• 클라우드 인프라에 공개된 API 목록
• Azure: https://docs.microsoft.com/en-us/rest/api/
• AWS: https://aws.amazon.com/ko/documentation/ 내 링크
• OpenStack: https://developer.openstack.org/ko_KR/api-guide/quick-
start/index.html
• API 파악시 장점
• 어떤 구성 요소가 있는지 파악 가능
• 추상화되어 있는 기능에 대한 자세한 이해
• 시스템 구축 표준화 방안 마련
(Reference: “그림으로 배우는 클라우드 인프라와 API의 구조”, 신상재 옮김, 2017년 5월)
10. 10
클라우드 컴퓨팅 제어 방안
• 웹 콘솔 (GUI)을 사용한 제어
• 명령어를 사용한 제어
• 직접 개발한 프로그램을 사용한 제어
• 자동화 툴을 사용한 제어
11. 11
클라우드 컴퓨팅 제어 방안
• 웹 콘솔 (GUI)을 사용한 제어
(Reference: “그림으로 배우는 클라우드 인프라와 API의 구조”, 신상재 옮김, 2017년 5월)
12. 12
클라우드 컴퓨팅 제어 방안
• 명령어를 사용한 제어
(Reference: “그림으로 배우는 클라우드 인프라와 API의 구조”, 신상재 옮김, 2017년 5월)
13. 13
클라우드 컴퓨팅 제어 방안
• 직접 개발한 프로그램을 사용한 제어
(Reference: “그림으로 배우는 클라우드 인프라와 API의 구조”, 신상재 옮김, 2017년 5월)
14. 14
클라우드 컴퓨팅 제어 방안
• 자동화 툴을 사용한 제어
• Chef, puppet, ansible, …
16. 16
Azure REST API
• Azure REST (Representational State Transfer) API
• Azure 서비스 자원에 대한 CRUD (create / retrieve / update / delete)를 수행
• API 공식 사이트: https://docs.microsoft.com/en-us/rest/api/
18. 18
Azure 관리 도구
• Azure 포탈
• Windows PowerShell
• Azure Automation
• Azure CLI
• Visual Studio
19. 19
Azure CLI
• CLI: Command-Line Interfaces
• Azure CLI 2.0
• PowerShell 방식이 아닌 MacOS, Linux 등에도 설치 가능하며 공통된 명령어 집합을 사용하는
관리 도구
• (이전) xPlat Azure CLI: the cross-platform Microsoft Cloud CLI tool
• NodeJS (npm) 기반
• https://github.com/Azure/azure-xplat-cli
• Python 기반 새로운 Azure CLI 개발
Azure CLI 2.0: 2017년 2월 27일 릴리즈
• https://docs.microsoft.com/en-us/cli/azure/release-notes-azure-cli
• 참고 – GA (Generally Availabile)
• https://github.com/Azure/azure-cli
20. 20
Azure CLI 2.0 특징
• Compute를 포함한 다양한 명령어 집합 지원
• MacOS, Linux, Windows 모두 설치 가능
(심지어 라즈베리파이에서도 가능)
• 단, Windows에서는 Cygwin, Python, Bash on Windows 등의 환경을 추가로 필요로 함
• NodeJS 기반보다 설치가 상대적으로 쉬움
• 모두 동일한 명령어 집합 사용
21. 21
cf. openstackclient
• OpenStack은 각 구성요소별로 API 제공
• Nova (Compute API): https://developer.openstack.org/api-ref/compute/
• Neutron (Networking API): https://developer.openstack.org/api-ref/networking/
• Keystone (Identity API): https://developer.openstack.org/api-ref/identity/
• …
• 통합 CLI 툴 제작
• 이전에는 nova / neutron / keystone 등 따로 CLI 개발 작업을 하였음
• 현재 통합 클라이언트 openstackclient 버전 사용 권장