Upload
jeongmin-kim
View
54
Download
3
Embed Size (px)
Citation preview
발표자는?
3
• kt ds Cloud사업팀 김정민
• IaaS / PaaS 엔지니어
• Cloud 관리/자동화 기능 개발자
• 좋아하는 것: IT, 개발, 클라우드, 위키
• http://github.com/jmnote
└ 별거 없음… ★ 최대 3개
( ucloud biz, devpack )
6
PaaS platform as a service
개발플랫폼을 제공하는 Cloud 서비스 └ 실행 런타임, 웹서버, 개발도구
개발을 위한 플랫폼을 구축할 필요 없이, 필요한 개발요소들을 웹에서 쉽게 빌려 쓸 수 있게 하는 모델 – 위키백과 탄력적인 Cloud 환경에서 애플리케이션 스택의 호스팅, 구성, 배포 · 관리를 자동화하는 클라우드 애플리케이션 플랫폼 - 레드햇
개발자 컴퓨터에서 개발 Application 배포 및 실행 서비스 제공
FTP로 소스코드 업로드하여 사용하는 웹호스팅과는 무엇이 어떻게 다를까?
7
PaaS 개발자 맞춤형 Cloud
PaaS는 주로 IaaS 위에 구축됨
∵ PaaS에 필요한 인프라를 간편하게 증설하기 위해
∴ 2중 Layer – IaaS(OS머신 가상화) 위에 PaaS(컨테이너)
• 솔루션: Cloud Foundry, OpenShift 등
• 서비스: devpack, PWS, Bluemix, ElasticBeanstalk, GAE 등
소스코드 배포/실행 환경을 별도 구성없이 즉시 제공하는 서비스
대략 유연하고 탄력적인 WAS를 제공하는 Cloud 서비스
미들웨어, 프레임워크를 유연하게 배포 가능
웹서버, 패키지 구성을 소스코드처럼 관리, 간편 scale out, 로드밸런서 포함 ★
└정확히는 컨테이너 + α
IaaS vs PaaS
9
서버 확장
IaaS
VM 확장 증설 Container 확장
운영서버구성
사용자계정생성
O/S 설치/패치
시스템SW 설치
코드개발/테스트
실행
소스코드 업로드
운영서버구성
사용자계정생성
O/S 설치/패치
시스템SW 설치
코드개발/테스트
실행
소스코드 업로드
운영서버구성
사용자계정생성
O/S 설치/패치
시스템SW 설치
코드개발/테스트
실행
소스코드 업로드
28 일 13 일 1 일
H/W구매, 설치 H/W구매, 설치 H/W구매, 설치
PaaS On-Premises
7 일 2 일 0 일
구축
구축, 증설기간 대폭 단축!
정말?
웹호스팅 vs PaaS
10
웹호스팅 PaaS
• scale up, scale out 어려움
• API로 자원 요청/관리 불가
• 제한된 언어/버젂 지원
• 웹서버 설정 변경 불가
• 프레임워크 이용 어려움
• scale up, scale out 용이함
• API로 자원 요청/관리 가능
• 다양한 언어/버젂 지원
• 웹서버 설정 변경 가능
• 프레임워크 이용 자유로움
• PHP 5.6 대싞 7.0 버젂을 쓰고 싶다. (왜?) • 아파치 DOCUMENT_ROOT 경로를 바꾸고 싶다. • 아파치 대싞 Nginx를 쓰고 싶다.
No Problem! 즉시 적용 가능
웹호스팅은 Cloud읷까? 아닐까?
(실습환경준비) git, cf CLI 설치
13
윈도우 Git 설치
• https://git-scm.com/download/win 접속
( Git-2.x.x-64-bit.exe 다운로드됨 )
• Git-2.x.x-64-bit.exe 실행하여 Next 신공으로 설치
윈도우 cf CLI 설치
• https://cli.run.pivotal.io/stable?release=windows64 접속
( cf-cli-installer_6.x.x_winx64.zip 다운로드됨 )
• 압축 해제
• cf_installer.exe 실행하여 Next 신공으로 설치
cmd 창에서 이렇게 나오면 성공
샘플 앱 node-talk 배포
14
• git clone https://github.com/jmnote/node-talk.git
• cd node-talk
브라우저 devpack 콘솔 연결
• cf login -a https://api.devpack.co.kr
• cf push
브라우저 http://node-talk-xxx.devpack.co.kr 확인
devpack의 특장점
17
다양한 언어 지원 Java, PHP, Python, Go, Node.js, Ruby
메모리 1GB당 월 2만원 정도* 타사 대비 저렴한 가격
트래픽 3TB 무료 제공
MySQL, Redis, RabbitMQ 부가서비스 간편 연동
30MB Redis 인스턴스 1개 상시 무료
무중단 scale out
무중단 애플리케이션 배포 가능
모니터링 화면
* 앱 인스턴스 메모리 최소단위가 1GB라는 얘기는 아님 1MB단위로 설정할 수 있음 간단한 애플리케이션이라면 32MB 로도 가능 32MB라면 월 1000원 이하
Cloud Foundry
18
클라우드 애플리케이션 실행 플랫폼
오픈소스 PaaS 소프트웨어
다양한 인프라스트럭처 지원
사용자 인증/관리
라우터(≒로드밸런서, 도메인기반)
https://docs.cloudfoundry.org/concepts/architecture/
미터링 로그 수합
애플리케이션 보관/실행
부가서비스 연동
아키텍처
cloudfoundry.org
기업환경에서의 PaaS
19
Load Balancer
Web Web
WAS
Load Balancer
Router Router
App App
젂통적 구성
DB DB NAS Storage
PaaS 구성 장점은?
OS·MW·DB 구축·운영 비용절감
주로 로드밸런서 기능 포함
scale out 가능
애플리케이션 개발에 집중
단점은?
cloud storage 필요 (왜?)
session clustering 필요 (왜?)
개발자의 이해 필요
장점을 위한 단점…
얶제나 자유롭게 scale out 가능 ★
WAS
In-Memory
Cache
Cloud Foundry 빌드팩
20
애플리케이션용 프레임워크, 런타임 지원 패키지
• 내장 빌드팩
Java, Ruby, Node.js, Go, PHP, Python
• 프레임워크 지원
Spring, Symfony, Django, Rails 등
• 패키지 매니저 지원
• 서드파티 빌드팩, 커스텀 빌드팩 제작 사용 가능
시연에서는 빌드팩이 node.js 설치, npm 패키지 설치 작업을 해준 것
devpack 부가서비스
22
2016년 2017년(예정*)
• MariaDB
• Redis
• RabbitMQ
• Git
• Jenkins
• PostgreSQL
• MongoDB
• ElasticSearch
* 고객 수요에 따라 우선순위 변동될 수 있음
Redis
24
• 오픈소스 인메모리 키-값 저장소
• 데이터베이스 캐시, 세션 저장소 등으로 많이 사용함
• 정렬된 집합, 리스트 등 자료구조 지원
• MongoDB 대비 읽기/쓰기 모두 빠름
• 선택적 영구성 키-값 저장소
• devpack에서는 비영구적 저장소만 제공
RabbitMQ
25
• AMQP 구현체 중 하나
• 오픈소스 메시지 지향 미들웨어
• 메시지 큐를 이용해 메세지를 발행·저장·구독할 수 있는 메세지 브로커
• 개발사: 피보탈 소프트웨어
• 분산 애플리케이션의 공용 메시지큐로 홗용
devpack 애플리케이션 요금체계
26
메모리용량 요금(시간) 요금(30일)
32MB 0.87원 625원 64MB 1.74원 1,251원
128MB 3.47원 2,502원 256MB 6.95원 5,004원 512MB 13.9원 10,008원
1GB 27.8원 20,016원 2GB 55.6원 40,032원 4GB 111.2원 80,064원 8GB 222.4원 160,128원
• 메모리용량(MB) × 사용시간(시간) × 0.02715원
• 메모리는 MB단위로 지정 예) 55MB 애플리케이션 배포도 가능
• 청구시에는 원단위 미만 절삭
devpack 부가서비스 요금체계
27
상품 용량 요금(시간) 요금(30일)
MariaDB
1GB 13.9원 10,008원
5GB 69.5원 50,040원
10GB 138.9원 100,008원
Redis
30MB* 2.1원 1,512원
100MB 7.0원 5,040원
250MB 17.4원 12,528원
• 설정된 용량별 상품을 구매하여 사용
• MariaDB는 디스크 용량 상품
• Redis는 메모리 용량 상품
* redis 30MB 인스턴스는 1개 상시 무료 제공
Redis 인스턴스 신청
29
devpack 콘솔에서
• [App Service] --- [Redis +]
• 서비스명: redis1 --- 플랜: shared-vm --- [확인]
node-session-redis 배포, 테스트
30
• git clone https://github.com/jmnote/node-session-redis.git
• cd node-session-redis
• cf push - 테스트 (로그읶/로그아웃/페이지이동)
• cf scale -i 3 - 테스트 (로그읶/로그아웃/페이지이동)
Session Clustering
31
• 스티키 세션 - 로드밸런싱 홖경에서 사용자의 세션이 유지되도록 하는 것
• 세션 클러스터링 – 애플리케이션 간 세션을 공유하는 것
Load Balancer
Web Web
WAS
Load Balancer
Router Router
App #1 App #2
젂통적 구성 PaaS 구성
WAS
In-Memory
Cache
소프트웨어 라우터로서 단순한 분기 알고리즘 Round Robin 사용
출발지정보의 해시값에 따라 분기 경로 결정
특정 사용자의 경로는 App 인스턴스 #1, #2를 왔다갔다 하게 됨
공유저장소가 세션을 기억해줘야 함
특정 사용자의 경로는 특정 WAS만으로 한정됨 예) 사용자1-WAS1 사용자2-WAS2
그냥 공유저장소면 되는데 세션정보는 매번 확읶하므로 성능을 위해 읶메모리 키-밸류 스토어 사용이 권장되는 것. 증설·감설시에도 서비스 영향 없음
Load Balancer의 분기알고리즘을 Source Hash로 하거나, WAS 또는 Redis 세션 클러스터링 기능을 쓰면 됨. 단, 서비스 영향 없이 증설·감설은 어려움
[참고] PaaS & Cloud Native App 관련 주제
32
본격 PaaS 삼국지 어디에도 없는 근본없는 그림… PaaS 환경에서 개발하다보니 관심이 가게 된 것들… 관련이 깊은 것끼리 연결해보았음
http://www.slideshare.net/onmay1/paas-66446915 참고
마무리 의견
33
• PaaS는? – 개발자 맞춤형 Cloud!
OS, 웹서버, 패키지 관리에서 해방;;
• devpack scale out은 참 빠르구나. – 서비스 중단도 없음
• 부가서비스 연동이 간편하다.
• 세션 클러스터링을 고려하자.
• redis를 저렇게 쓰는구나. - 물론 다른 용도도 얼마든지 있음