Anzeige
Anzeige

Más contenido relacionado

Presentaciones para ti(20)

Similar a (devpack) PaaS 소개 및 실습(20)

Anzeige

Último(20)

(devpack) PaaS 소개 및 실습

  1. [ devpack ] PaaS 소개 및 실습 2016-11-16 김정민
  2. 발표자는? 2 • 김정민 • IaaS / PaaS 엔지니어 • Cloud 관리/자동화 기능 개발자 • 좋아하는 것: IT, 개발, 클라우드, 위키 • http://github.com/jmnote └ 별거 없음… ★ 최대 3개 ( ucloud biz, devpack )
  3. 딜레마? 3 불치하문 과도한 질문은 감사합니다! 언제든지 질문해주세요…
  4. 4 차례 devpack 프레임워크 devpack redis 실습은 A~F 까지 6개
  5. 5 devpack + Cloud, PaaS 이야기
  6. 6 devpack에 node-talk 배포 실습A
  7. A-1. (윈도우) git, cf CLI 설치 7 http://zetawiki.com/wiki/윈도우_Git_설치 윈도우 Git 설치 • https://git-scm.com/download/win 접속 ( Git-2.x.x-64-bit.exe 다운로드됨 ) • Git-2.x.x-64-bit.exe 실행하여 Next 신공으로 설치 http://zetawiki.com/wiki/윈도우_cf_CLI_설치 윈도우 cf CLI 설치 • https://cli.run.pivotal.io/stable?release=windows64 접속 ( cf-cli-installer_6.x.x_winx64.zip 다운로드됨 ) • 압축 해제 • cf_installer.exe 실행하여 Next 신공으로 설치 cmd 창에서 이렇게 나오면 성공
  8. A-1. (맥OS) git, cf CLI 설치 8 http://zetawiki.com/wiki/맥OS_Git_설치 맥OS Git 설치 • https://git-scm.com/download/mac 접속 ( git-x.x.x.x..…dmg 다운로드됨 ) • dmg파일 실행, pkg파일 실행, Next 신공으로 설치 http://zetawiki.com/wiki/맥OS_cf_CLI_설치 맥OS cf CLI 설치 $ curl -L "https://cli.run.pivotal.io/stable?release=macosx64-binary" | tar –zx $ mv cf /usr/local/bin/ $ cf --version
  9. • mkdir workspace • cd workspace A-2. node-talk 배포 9 http://zetawiki.com/wiki/CF에_node-talk_앱_올려보기_(윈도우) • mkdir workspace • cd workspace/ • git clone https://github.com/jmnote/node-talk.git • cd node-talk  브라우저 http://devpack.co.kr 로그인 frontier00 • cf login -a https://api.devpack.co.kr • cf push  브라우저 http://node-talk-xxx-xxx.devpack.co.kr 확인
  10. Cloud? IT 자원을 제공하는 서비스 10 빠른 프로비저닝·릴리즈, 구성가능한 컴퓨팅 리소스 공유 풀에 온디맨드 네트워크 접근 을 가능하게 하는 모델 - NIST 집적·공유된 IT자원을 이용자의 요구·수요 변화에 따라 통신망을 통해 신축적으로 이용 가능한 정보처리체계 - 클라우드컴퓨팅 발전법 인터넷 기술을 활용하여 IT 자원을 제공하는 기술·서비스 Cloud computing 웹과 API로 리소스를 요청/관리할 수 있는 서비스 ★ └ endpoint, CLI http://zetawiki.com/wiki/Cloud
  11. 11 Cloud의 종류 https://blogs.technet.microsoft.com/kevinremde/2011/04/03/saas-paas-and-iaas-oh-my-cloudy-april-part-3 SaaS 소프트웨어를 제공하는 클라우드 PaaS 개발플랫폼을 제공하는 클라우드 IaaS 인프라를 제공하는 클라우드 On-Premises Cloud 아님 반대개념… 자체설비 구축·운영 ● ● ● as a service… 오늘의 주제
  12. IaaS vs PaaS 12 개발자는 Application 요리에 집중하고 싶다… 대자연 캠핑장 글램핑 호텔  SaaS가 더 좋은 거 아님?  원래 출처가 어딘지는 모르겠으나, IBM 공진기님의 발표자료에서 참고함  이런 근사한 비유가 있었다니… 캠핑족이신가? 데크 텐트 음식
  13. 13 PaaS platform as a service 개발플랫폼을 제공하는 Cloud 서비스 └ 실행 런타임, 웹서버,개발도구 개발을 위한 플랫폼을 구축할 필요 없이, 필요한 개발요소들을 웹에서 쉽게 빌려 쓸 수 있게 하는 모델 – 위키백과 탄력적인 Cloud 환경에서 애플리케이션 스택의 호스팅, 구성, 배포 · 관리를 자동화하 는 클라우드 애플리케이션 플랫폼 - 레드햇 개발자 컴퓨터에서 개발 Application 배포 및 실행 서비스 제공 FTP로 소스코드 업로드하여 사용하는 웹호스팅과는 무엇이 어떻게 다를까?
  14. 14 PaaS 개발자 맞춤형 Cloud PaaS는 주로 IaaS 위에 구축됨 ∵ PaaS에 필요한 인프라를 간편하게 증설하기 위해 ∴ 2중 Layer – IaaS(OS머신 가상화) 위에 PaaS(컨테이너) • 솔루션: Cloud Foundry, OpenShift 등 • 서비스: devpack, PWS, Bluemix, ElasticBeanstalk, GAE 등 소스코드 배포/실행 환경을 별도 구성없이 즉시 제공하는 서비스 대략 유연하고 탄력적인 WAS를 제공하는 Cloud 서비스 미들웨어, 프레임워크를 유연하게 배포 가능 웹서버, 패키지 구성을 소스코드처럼 관리, 간편 scale out, 로드밸런서 포함 ★ └정확히는 컨테이너 + α
  15. IaaS vs PaaS 15 서버 확장 IaaS VM 확장증설 Container 확장 운영서버구성 사용자계정생성 O/S 설치/패치 시스템SW 설치 코드개발/테스트 실행 소스코드 업로드 운영서버구성 사용자계정생성 O/S 설치/패치 시스템SW 설치 코드개발/테스트 실행 소스코드 업로드 운영서버구성 사용자계정생성 O/S 설치/패치 시스템SW 설치 코드개발/테스트 실행 소스코드 업로드 28 일 13 일 1 일 H/W구매, 설치 H/W구매, 설치 H/W구매, 설치 PaaSOn-Premises 7 일 2 일 0 일 구축 구축, 증설기간 대폭 단축! 정말?
  16. 웹호스팅 vs PaaS 16 웹호스팅 PaaS • scale up, scale out 어려움 • API로 자원 요청/관리 불가 • 제한된 언어/버전 지원 • 웹서버 설정 변경 불가 • 프레임워크 이용 어려움 • scale up, scale out 용이함 • API로 자원 요청/관리 가능 • 다양한 언어/버전 지원 • 웹서버 설정 변경 가능 • 프레임워크 이용 자유로움 • PHP 5.6 대신 7.0 버전을 쓰고 싶다. (왜?) • 아파치 DOCUMENT_ROOT 경로를 바꾸고 싶다. • 아파치 대신 Nginx를 쓰고 싶다. No Problem! 즉시 적용 가능 http://zetawiki.com/wiki/웹호스팅_vs_PaaS 웹호스팅은 Cloud일까? 아닐까?
  17. 기업환경에서의 PaaS 17 Load Balancer Web Web WAS Load Balancer Router Router App App 전통적 구성 DB DBNAS Storage PaaS 구성 장점은? OS·MW·DB 구축·운영 비용절감 주로 로드밸런서 기능 포함 scale out 가능  애플리케이션 개발에 집중 단점은? cloud storage 필요 (왜?) session clustering 필요 (왜?) 개발자의 이해 필요 장점을 위한 단점…  언제나 자유롭게 scale out 가능 ★ WAS In-Memory Cache
  18. devpack 18 “develop + package” ktds의 PaaS 서비스 국내기업 최초 상용PaaS Cloud Foundry 기반 + 사용자 포탈 제공 [데브팩]
  19. devpack의 특장점 19  다양한 언어 지원 Java, PHP, Python, Go, Node.js, Ruby  메모리 1GB당 월 2만원 정도  타사 대비 저렴한 가격  트래픽 3TB 무료 제공  MySQL, Redis 부가서비스 이용가능  30MB Redis 인스턴스 1개 상시 무료 모니터링 화면 앱 인스턴스 메모리 최소단위가 1GB라는 얘기는 아님 1MB단위로 설정할 수 있음 간단한 애플리케이션이라면 32MB 로도 가능 32MB라면 월 1000원 이하
  20. Cloud Foundry 20 클라우드 애플리케이션 실행 플랫폼 오픈소스 PaaS 소프트웨어 다양한 인프라스트럭처 지원 사용자 인증/관리 라우터(≒로드밸런서, 도메인기반) https://docs.cloudfoundry.org/concepts/architecture/ 미터링 로그 수합 애플리케이션 보관/실행 부가서비스 연동 아키텍처 cloudfoundry.org
  21. 21 프레임워크, 패키지매니저 결국 다 먹고 살자고 App 배포하자고 하는 얘기
  22. 22 로컬에서 node-talk 실행 실습B
  23. B-1. Node.js 설치 23 http://zetawiki.com/wiki/윈도우_node.js_설치 • https://nodejs.org/en/download/ 접속 • Windows Installer 또는 Macintosh Installer 클릭하여 인스톨러 다운로드 • 인스톨러 실행하여 Next 신공으로 설치 http://zetawiki.com/wiki/맥OS_node.js_설치
  24. B-2. Node.js CLI 맛보기 24 ↑ 파일 실행 ↑ 대화형 ↑ 바로 코드 실행 ↑ 설치 확인
  25. B-3. npm 25 ※ 윈도우, 맥OS의 node.js 인스톨러에는 npm이 포함되어 있음 • cd node-talk • npm install • npm start • 브라우저 http://localhost:3000 접속
  26. 프레임워크 26 • 재사용 가능한 라이브러리 및 클래스 집합 • 애플리케이션의 큰 틀과 구조를 결정함 • 설계자가 의도한 디자인 패턴들의 집합으로 구성됨 • 내부적 제어흐름이 있음 • 개발자는 프레임워크를 통해 기능 호출 웹 애플리케이션 개발을 위해 설계된 소프트웨어 프레임워크 프레임워크 http://zetawiki.com/wiki/프레임워크 http://zetawiki.com/wiki/웹애플리케이션_프레임워크 여기서는 웹 애플리케이션 프레임워크
  27. 언어별 프레임워크 & 패키지매니저 27 언어 프레임워크 패키지매니저 Go Revel, Martini, Gorilla gvt, godep Java Spring, Grails, Play Maven, Gradle Node.js React, AngularJS, Express.js, Meteor npm PHP Laravel, CakePHP, Symfony, Zend composer Python Django, Flask pip Ruby Rails, Sinatra RubyGems http://zetawiki.com/wiki/언어별_웹애플리케이션프레임워크 http://zetawiki.com/wiki/언어별_패키지매니저
  28. node.js, npm 28 node.js • 자바스크립트 엔진 위에서 동작하는 이벤트 처리 I/O 프레임워크 • V8에 event처리 라이브러리 libuv를 결합한 플랫폼 • Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리성능 • 내장 HTTP 서버 라이브러리 포함. 별도의 소프트웨어 없이 웹서버 동작 가능 npm • node.js 용 공식 패키지 매니저 • 윈도우에서는 node.js를 설치하면 함께 설치됨
  29. socket.io 29 • node.js 모듈 • 웹소켓 간편하게 사용 가능 • 실시간 통신, 양방향성, 이벤트 구동형 • npm 도구로 설치 가능 • 다양한 백엔드 라이브러리 제공
  30. Cloud Foundry 빌드팩 30 애플리케이션용 프레임워크, 런타임 지원 패키지 • 내장 빌드팩 Java, Ruby, Node.js, Go, PHP, Python • 프레임워크 지원 Spring, Symfony, Django, Rails 등 • 패키지 매니저 지원 • 서드파티 빌드팩, 커스텀 빌드팩 제작 사용 가능 실습A에서는 빌드팩이 node.js 설치, npm 작업을 해준 것
  31. 31 node-talk 수정·배포 실습C
  32. C-1. 소스코드 수정 후 배포 32 • cd node-talk • notepad publicapp.js 소스코드 수정 • cf push • cd node-talk/ • nano public/app.js 소스코드 수정 • cf push
  33. 33 bower • 웹 클라이언트측 패키지 관리 시스템 • npm 으로 설치 • MIT 라이선스 http://zetawiki.com/wiki/Bower https://bower.io/
  34. 34 node-talk-bower 배포 실습D
  35. • cd workspace D-1. node-talk-bower 배포 35 • cd ~/workspace/ • git clone https://github.com/jmnote/node-talk-bower.git • cd node-talk-bower • cf push  브라우저 http://node-talk-xxx-xxx.devpack.co.kr 확인
  36. D-2. node-talk-bower 로컬 실행 36 • npm install • cd node-talk-bower • cf push  브라우저 http://localhost:3000 확인
  37. 37 manifest.yml vs package.json  npm install 수행시, bower install도 수행됨 package.json – npm 설정 파일 manifest.yml – Cloud Foundry 앱 설정 파일  bower install 후 application 실행
  38. 38 JSON vs YAML JSON YAML • 확장자: .json • 개행, 공백 무시됨 • 주석 사용 불가 • 문자열을 쌍따옴표로 감싸야 함 • 한글 인코딩되어 읽기 어려움 • YAML보다 더 널리 사용됨 • 대부분의 언어에서 기본 지원 • 확장자: .yml, .yaml • 개행, 공백으로 블록 인식 • 주석 사용 가능 • 문자열을 쌍따옴표로 감싸지 않아도 됨 • 한글 그대로 사용 가능 • 점차 사용이 늘고 있음 • 대부분의 언어에 라이브러리 있음  가독성이 좋음 http://zetawiki.com/wiki/JSON,_YAML_비교
  39. 39 devpack redis devpack 부가서비스 중 하나
  40. 40 node-session 실행·배포 실습E 로그인 기능만 구현한 간단한 애플리케이션
  41. E-1. node-session 배포, scale out 41 • cd workspace • cd ~/workspace/ • git clone https://github.com/jmnote/node-session.git • cd node-session  host: session00으로 수정 • cf push - 테스트 (로그인/로그아웃/페이지이동) • cf scale session -i 2 - 테스트 (로그인/로그아웃/페이지이동) • notepad manifest.yml • nano manifest.yml scale out 하면… ?! 로그인이 풀린다. 그리고 로그인이 안된다 ㅠㅠ
  42. Redis 42 • 오픈소스 인메모리 키-값 저장소 • 데이터베이스 캐시, 세션 저장소 등으로 많이 사용함 • 선택적 영구성 키-값 저장소 • 정렬된 집합, 리스트 등 자료구조 지원 • (MongoDB 대비) 읽기/쓰기 모두 빠름 http://zetawiki.com/wiki/레디스_redis
  43. Session Clustering 43 • 스티키 세션 - 로드밸런싱 환경에서 사용자의 세션이 유지되도록 하는 것 • 세션 클러스터링 – 애플리케이션 간 세션을 공유하는 것 http://zetawiki. com/wiki/스티키_세션 http://zetawiki. com/wiki/세션_클러스터링 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 세션 클러스터링 기능을 쓰면 됨. 단, 서비스 영향 없이 증설·감설은 어려움
  44. 활용예시 - Laravel 설정 44 APP_ENV=local APP_KEY= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null 설정파일 .env  캐시·세션·큐로 redis 사용가능  같은 redis, 같은 APP_KEY라면 세션 공유 가능 https://github.com/laravel/laravel/blob/master/.env.example 다른 프레임워크들도 지원하는 경우가 많음 예) http://zetawiki.com/wiki/스프링_REDIS_프로퍼티
  45. 45 node-session-redis 배포 실습F
  46. F-1. Redis 인스턴스 신청 46 브라우저 http://devpack.co.kr 로그인 testuser00 • [App Service] --- [Redis +] • 서비스명: redis1 --- 플랜: shared-vm --- [확인]
  47. F-2. node-session-redis 배포, 테스트 47 • cd workspace • cd ~/workspace/ • git clone https://github.com/jmnote/node-session-redis.git • cd node-session-redis  host: session00으로 수정 • cf push - 테스트 (로그인/로그아웃/페이지이동) • notepad manifest.yml • nano manifest.yml
  48. PaaS & Cloud Native App 관련 주제 48 본격 PaaS 삼국지 어디에도 없는 근본없는 그림… PaaS 환경에서 개발하다보니 관심이 가게 된 것들… 관련이 깊은 것끼리 연결해보았음 http://www.slideshare.net/onmay1/paas-66446915 참고
  49. 복습 및 고찰 49 • PaaS는? – 개발자 맞춤형 Cloud! OS, 웹서버, 패키지 관리에서 해방;; • devpack scale out은 참 빠르구나. – 서비스 중단도 없음 • 세션 클러스터링을 고려하자. • node.js, express 프레임워크는 참 가볍구나. 32MB 애플리케이션이라니…. 이러면 devpack에서 월 1000원도 안됨 ㅎㄷㄷ • redis를 저렇게 쓰는구나. - 물론 다른 용도도 얼마든지 있음
  50. 50 감사합니다 PaaS 세상은 온다… ( 언제? ) 개발자라면 PaaS에 익숙해지자. 개발자가 아니라면? 개발을 공부하자
Anzeige