Your SlideShare is downloading. ×
0
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기

4,217

Published on

# Part 1 …

# Part 1

개발자의 주위환경에 대해 살펴보고 Cloud Foundry overview, Cloud Foundry 를 구성하는 components 마지막으로 Deploy 환경에 대해 알아보겠습니다.

# Part 2

설치부터 코드까지, 데모찍은 동영상은 추후 제공예정

부족한 부분은 nanhap@gmail.com 으로 문의메일 주시면 성심성의껏 답변 드리겠습니다. 감사합니다.

Published in: Technology
0 Comments
30 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,217
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
172
Comments
0
Likes
30
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PaaS, Backend VM웨어 CloudFoundry 뽀개기 Part #1 박난하 Manager / Core Platform 1 팀 SK Planet
  • 2. 올해도 고생하셨습니다. 편안하게 들어주세요.
  • 3. http://about.me/nanha node.js 전문 블로그인 nodeqa.com 운영자 3년간의 웹에이전시들. 손이 빨라졌다. IT 바닥의 쓴맛들. 1/13 퇴직금 제도. 회사 망 7년간의 cafe24 호스팅회사 견문이 넓어졌다. Force10 스위치부터 HTML까지 1년간의 KTH DevOps 의 경험. 하지만 짧았다. 정리해고 쓴맛. 2003.05.06 ~ 현재 SK Planet
  • 4. Part1 목차 - 1부는 즐겁게 개발자의 주위 환경 대해서 살펴보기 환경에 Cloud Foundry Overview Cloud Foundry Components Cloud Foundry Deploy 환경 참고) 설치, CLI, Code 관련 내용은 Part 2 에서 다뤄집니다.
  • 5. Part2 목차 - 2부는 진지하게 Installation version 1 / version 2 클라이언트 툴 설치 / 기능 확장 확장을 고려한 Application 작업 방법 Scheduling / Daemon 작업 방법 Database 작업 방법 맛보기 version1 / version 2
  • 6. 시작해보겠습니다. 현재 개발자의 주위 환경에 대해서 살펴볼게요.
  • 7. 개발자 주위에는 ..... 있다? 없다? ??? 관리 시스템 Security Infra Infra 관리 시스템 Delivery 관리 시스템 Developer Sales
  • 8. 그런데 PaaS 와 같은 플랫폼은 본적 없는거 같아요 !! 왜 일까요? 실무에 사용중인 회사 도 있나요? http://www.flickr.com/photos/23679420@N00/545653437/
  • 9. 정답은 이럴 것으로 추측됩니다. 너가 책임질꺼야? 점진적으로 발전 시키는 거지 !! http://jjpd26.tistory.com/96
  • 10. 아래 내용에 대해 한번 생각해보세요. 열심히 만든 프로젝트 배포 !! 몇달 후 다가올 그 무엇이 나를.. 10
  • 11. 드디어 Deploy ! 여자친구에게 보여줘야지 http://www.flickr.com/photos/steverhode/3183290111/ 11
  • 12. 앗싸 !! 오픈한지 3달, 방문자, 트래픽 대박 주변으로부터 조명을 받기 시작 !! http://www.flickr.com/photos/libraryman/110679756/
  • 13. 이제 확장이 필요해 졌어요 http://blog.daum.net/seoninnaruto/69
  • 14. 확장이라..... 난 돈이 없는데... 돈 확장 구축을 한 유경험자를 찾고 싶어요... 유경험자 확장하면 프로그램에서 오류날거 같은데 .... 오류 세션, 로컬 리소스 저장 etc ....
  • 15. 아씨... 안해 !! 처음부터 확장을 고려해놓을걸 누가 이렇게 잘 될줄 알았나? 누가 로컬에 업로드 해놨어? Amazon S3 사용할걸 Session 공유는 ... 제길.... 후회...... http://www.flickr.com/photos/44120815@N04/9392721638/
  • 16. 나 열받았어 !!. 직접 나의 환경을 구축시작 나 왕년에 잘 나가는 개발자였어 !! 먼저 돈을 줄일 수 있는 Platform 부터 만들어놓자. 목표는 Less Money !! http://www.flickr.com/photos/68751915@N05/6355220839/
  • 17. 결론 ::: 나의 환경은 이랬으면 좋겠어요. 개발 에만 집중 인프라 관리시스템 도입 “웹서버 / Runtime / 프레임워크” 리소스 맘대로 사용 “데이타베이스 / MessageQueue” 도 가능하면 !! Delivery 관리시스템 도입 Staging / Production 서버 구축 Scale Vertical / Horizontal
  • 18. 직접 만들 필요 없어요. Cloud Foundry 소개 를 시작하겠습니다.
  • 19. 간단히 요약해볼게요. Overview
  • 20. 결론은 잘 구축 / 운용하면 비용 절약할 수 있어요. Big cost saving http://www.flickr.com/photos/59937401@N07/5929474535/
  • 21. VM웨어 에서 만들었어요. 2011. 04. 14 VM웨어에서 업계 최초로 Open PaaS “Cloud Foundry” 출시 http://www.vmware.com/kr/company/news/releases/vmw-cloud-foundry-4-14-11.html
  • 22. 좋은 환경을 제공할 수 있어요. 어플리케이션의 배포, 운영을 그리고, 개발자들에게 폭넓은 런타임, 프레임워크, 벡엔드서비스를 간소화 간소화하기 위해 선택할 수 있는 자유 제공합니다. 선택 자유를 설계한 플랫폼입니다. 플랫폼 production / staging source code devel source code
  • 23. Open PaaS의 본보기를 보여주고 있어요. VM웨어가 만들었지만, VM웨어 IaaS 에서만 동작하는 환경이 아닙니다. 즉, 특정 클라우드 환경에 종속되지 않는 선택의 자유 다양성을 보장 선택 자유와 보장합니다.
  • 24. 다음으로 OpenSource 에요. VM웨어는 일찍부터 커뮤니티의 도움 없이는 안정적인 클라우드 서비스가 어렵다고 판단했습니다. Apache2 라이센스 !! 발표 후, 엄청 발전했습니다. https://github.com/cloudfoundry http://www.flickr.com/photos/loop_oh/4313629167/sizes/o/in/photostream/
  • 25. 즉, Open PaaS 는 “ 자유” 입니다. http://bit.ly/16v7FLk
  • 26. 한눈 요약한 그림이에요. 한눈에 요약
  • 27. Multi Lanugage 당신이 원하는건?
  • 28. Multi Frameworks 당신이 원하는건?
  • 29. Multi Services 당신이 원하는건?
  • 30. 골라먹는 재미 있다. 재미가
  • 31. Multi Cloud (Public or Private) 사내인프라에 설치된 Private Cloud 고객을 대상으로 하는 Public Cloud 구축 작성한 코드가 특정 환경에 의존되지 않고, 다른 환경에도 쉽게 이식가능
  • 32. 사용하는데 어렵지 않아요. Lock in vendor (GAE) ?? Cloud Foundry 에서는 그럴 필요 없습니다. 만든 코드 그대로 가져오세요. 90% 이상 에러없이 Deploy 가능할 것입니다. 가능
  • 33. September 8-9, 2013 컨퍼런스 개최
  • 34. version 2 가 나왔어요. 많은 변화 version 1 support 는 deprecated deprecated. version1 과 version2 는 각각 매력이 있습니다.
  • 35. version 1 으로 돈벌고 있는 회사에요. rakuten static.me mopaas.com cloudnpaas.com appfog.com ironfoundry.me uhurucloud.com cloudfoundry.com http://www.flickr.com/photos/59937401@N07/5929474535/
  • 36. 아직 갈길이 멀어요. 이제 3년차 !! 플랫폼이 기업에 자리잡기까지의 과정은 험난하지만 OpenSource 의 힘은 대단하기 때문에 꼭 성공할거라 생각됩니다. http://www.empowernetwork.com/bigbuy/blog/wild-motorcycle-off-road-and-on-road/
  • 37. Cloud Foundry 를 구성하는 Components 에 대해서 알아보겠습니다. version 1 VS version 2
  • 38. 목표, 사상 간단 간단하고 빠른 인프라 제공 모든 컴포넌트들은 독립적 독립적으로 구성되어 있고, 확장이 용이합니다. 확장 NATS Server 를 바라보기 때문 EventMachine 사용하여 비동기 I/O 처리 IaaS 에 의존하지 않는 시스템 “CloudFoundry Core PaaS System === Kernel” 이라고 표현 Kernel
  • 39. version #1 Architecture Users Developers STS VMC Routers Cloud Controller Stager Service Gateway Service Node App App App App Health Manager Droplet Execution Agents (DEA) Nats (Messaging Bus)
  • 40. version #2 Architecture
  • 41. version #2 Architecture
  • 42. NATS 모든 컴포넌트가 바라보고 있다. EventMachine 으로 구성된 1개의 경량 Pub / Sub Component 제공하는 장점 모든 컴포넌트의 독립성 / 가용성 보장 가지고 있는 단점 SPOF (single point of failure isssue) 너 죽으면 끝장이야 !! (2중화 권장) http://seoblog.giorgiotave.it/spof/3156
  • 43. Router v0.8.54 -> v1.3.x
  • 44. V2 에서는 이렇게 변했어요.
  • 45. Cloud Controller vmc http://afbase.com/index.php?mid=pic&page=3&sort_index=readed_count&order_type=desc&document_srl=3354
  • 46. V2 에서는 이렇게 변했어요. Organization 과금 옵션 Spaces development / staging / production 각각 Application 위치 http://afbase.com/index.php?mid=pic&page=3&sort_index=readed_count&order_type=desc&document_srl=3354
  • 47. Stager 1. Auto-Recofiguration 2. WebServer 적용 Cloud Foundry source code (배포준비완료) devel source code Install Dependency
  • 48. V2 에서는 이렇게 변했어요. DEA Cloud Foundry source code (배포준비완료) devel source code - Stager 는 DEA 에 흡수 - 별도의 프로세스로 존재하지 않음 - buildpack 으로 100% 대체 buildpack
  • 49. Buildpack 이란? Application 을 Deploy 하기 위해 준비하는 역할을 담당 준비 기능 b Install runtime node.js, java, ruby .... Install dependencies module b b 사용자 만든 Buildpack 을 Application 을 Push 할 때 지정 사용자가 지정가능 현재 Heroku 회사에서 사용하던 기능임.
  • 50. DEA (Droplet Execution Agent)
  • 51. DEA Stager를 거친 Application == Droplet DEA는 Droplet 을 실행하고 모니터링 해주는 에이전트 관리해주는 부분은 memory, disk, cpu 그리고 확장 runtime 별로 독립, 너무 쉽게 무한 확장 가능 능력치를 벗어난 deploy 요청 거부권 행사
  • 52. 확장하면 런타임별 프로세스의 모습은? Java 기본: tomcat 과 함께 실행 확장: port 만 변경되어 기본구조 그대로 복사되어 실행됨 Node.js, Ruby 기본: standalone 혹은 프레임워크에 의존되어 실행됨 확장: port 만 변경되어 기본구조 그대로 복사되어 실행됨
  • 53. 확장하면 런타임별 프로세스의 모습은? PHP 기본: 최초 “apt-get install apace2” 이건 prefork 방식 설치 start process 5개 확장: port 만 변경되어 기본구조 그대로 실행됨 튜닝: mpm worker 방식으로 설치가 가능하고 (Manual), stager 에서 apache 환경을 변경할 수 있음
  • 54. 확장하면 런타임별 프로세스의 모습은?
  • 55. V1 에서는 호스팅방식과 같이 실행. DEA
  • 56. V2 에서는 이렇게 변했어요. n arde r w e ta in con c rden wa r a ine ont DEA rden wa r a ine cont
  • 57. Warden Container 란? 실행환경을 독립적으로 Isolation 네트워크, CPU, Disk, etc... 가상머신이 아닌 System 레벨에서 가상화 제공 가상화를 rden wa r a ine cont 기존 Linux Container 와 비슷. ex) docker.io 초기모델은 LXC 였으나, OS 에 의존되지 않게 간단한 API 로 통신하도록 변경됨. 통신 (Unix Domain socket) rden wa r a ine cont
  • 58. 보안을 강화할 수 있고요. http://keco.tistory.com/910
  • 59. Network, Traffic, disk Isolation http://www.thelibertybeacon.com/2013/01/22/the-radiation-warnings-youwont-get-from-the-mainstream-propaganda-machine/
  • 60. 이제 편안한 느낌으로
  • 61. Service Gateway / Service Node Database info - host - user - password - port
  • 62. Service Node 가 사용자 관리를 어떻게? MySQL, PostgreSQL 일반적인 방법과 동일하게 사용자를 관리 각각 프로세스 실행방식 그대로 MongoDB, Redis, RabbitMQ 사용자별로 환경설정 파일이 독립적으로 존재 이것을 참조하여 프로세스를 별도로 실행
  • 63. V2 에서는 이렇게 변했어요. en ward r e ntain co en ward r e ntain co arden w er ntain co en ward r e ntain co arden w er ntain co
  • 64. UAA User Account and Authentication OAuth VMC, STS Java
  • 65. Health Manager monitoring application state 이상이 발견될 시 cloud_controller 에게 공지
  • 66. 제가 느껴본 V1과 V2 의 차이점입니다. Version 1 아직 다듬어지지 않았지만 그것이 매력이다. 않았지만, 왜냐하면, 분석하고 만들어가는 재미가 있다. v1.5 돈벌고 싶으면 분석해 볼만한 가치가 충분이 있다. Version 2 거의 다듬어진 모습 모습이다. 그것이 매력이다.
  • 67. Part 1 마지막으로 Cloud Foundry Deploy 환경에 대해 알아볼게요.
  • 68. Cloud Foundry App Design 공유 공유될 리소스는 로컬에 남기지 않아야 합니다. 파일 업로드는 NAS GlusterFS Amazon S3 SSH 는 지원하지 않습니다.
  • 69. Cloud Foundry 환경변수 / 설정 VCAP_APP_PORT $ vmc (cf) env VCAP_APP_HOST $ vmc (cf) set-env VCAP_SERVICES $ vmc (cf) unset-env USER ...
  • 70. VCAP_SERVICES 1. {"mysql-5.1":[ 2. { 3. "name":"mysql-4f700", 4. "label":"mysql-5.1", 5. "plan":"free", 6. "tags":["mysql","mysql-5.1","relational"], 7. "credentials":{ 8. "name":"d6d665aa69817406d8901cd145e05e3c6", 9. "hostname":"mysql-node01.us-east-1.aws.af.cm", 10. "host":"mysql-node01.us-east-1.aws.af.cm", 11. "port":3306, 12. "user":"uB7CoL4Hxv9Ny", 13. "username":"uB7CoL4Hxv9Ny", 14. "password":"pzAx0iaOp2yKB" 15. } 16. }, 17. { 18. "name":"mysql-f1a13", 19. "label":"mysql-5.1", 20. "plan":"free", 21. "tags":["mysql","mysql-5.1","relational"], 22. "credentials":{
  • 71. Auto-reconfiguration 지원 !! Cloud Foundry 환경을 신경쓰지 않고, 개발할 수 있다. 않고 Cloud Foundry 에 의존되는 코드를 피할 수 있다. Node.js Node.js, Ruby 지원
  • 72. Hello World (not Auto-reconfig) var http = require('http'); http.createServer(function (req, res) { .... }).listen(1337, '127.0.0.1'); var port = process.env.VCAP_APP_PORT || ‘3000’; var host = process.env.VCAP_APP_HOST; var http = require('http'); http.createServer(function (req, res) { .... }).listen(port, host);
  • 73. Hello World Auto-reconfiguration var http = require('http'); http.createServer(function (req, res) { .... }).listen(1337, ‘127.0.0.1’ 1337, '127.0.0.1'); That’s it !!! 이 밖에도 Services 에도 지원 고치치 않아도 되요.
  • 74. MongoDB (not Auto-reconfig) if (process.env.VCAP_SERVICES) { var service_type = "mongodb-1.8"; // on cloud foundry var json = JSON.parse(process.env.VCAP_SERVICES); var credentials = json[service_type][0]["credentials"]; var server = new mongodb.Server(credentials["host"], credentials["port"]); new mongodb.Db( credentials["db"], server,{} ).open( function(err,client) { client.authenticate( credentials["username"], credentials["password"], function(err,replies) { ..... }); }); } else { // on localhost var server = new mongodb.Server("127.0.0.1", 27017); new mongodb.Db( "mongo_survey", server, {} ).open( function(err,client) { if ( err ) { throw err; } .... });
  • 75. MongoDB Auto-reconfiguration var server = new mongodb.Server("127.0.0.1", 27017, {}); 127.0.0.1 new mongodb.Db( "mongo_survey", server, {} ).open( function(err,client) { if ( err ) { throw err; } .... }); 고치치 않아도 되요.
  • 76. Q&A
  • 77. 감사합니다. to be continue ...
  • 78. continue....
  • 79. PaaS, Backend VM웨어 CloudFoundry 뽀개기 Part #2 박난하 Manager / Core Platform 1 팀 SK Planet
  • 80. 올해도 고생하셨습니다. 편안하게 들어주세요.
  • 81. 목차 Installation version 1 / version 2 클라이언트 툴 설치 / 기능 확장 확장을 고려한 Application 작업 방법 Scheduling / Daemon 작업 방법 Database 작업 방법 맛보기 version1 / version 2
  • 82. 오픈소스의 첫인상 첫인상은 설치가 어렵냐? 쉽냐? 컴포넌트가 여러개라... 설치가 만만치 않을 듯....
  • 83. 총 10여 자루 !! OTL http://www.flickr.com/photos/jacopast/8493514222/
  • 84. 요구사항들 Ruby 1.9.3 이상 Ubuntu 10.04 64bit 메모리 1GB 배포된 Application이 늘어남에 따라 달라짐.
  • 85. OpenSource. 가자 Github 으로 고고고 version #1 vcap https://github.com/cloudfoundry/vcap version #2 https://github.com/cloudfoundry/bosh bosh https://github.com/cloudfoundry/bosh-lite
  • 86. 설치 스크립트를 찌져버릴라면? Ubuntu (lucid64, precise64) version 1 bash CHEF ruby version 1, 2 BOSH cf-release (github)
  • 87. 잠시만요 한큐에 뺄라다가 큰일 날 수 있어요 !!! 느낌 아니까 ~~~
  • 88. V1 VCAP 구조는 명세서부터 !! --deployment:   name: "myinstallenv" jobs:   install:     - nats_server     - router     - stager installed: - nats ... ... ... ... ... ... https://github.com/cloudfoundry/vcap/blob/master/dev_setup/ deployments/devbox.yml
  • 89. 그리고, 한줄로 설치시작 !! sudo apt-get install curl bash < <(curl -s -k -B https://raw.github.com/cloudfoundry/vcap/ master/dev_setup/bin/ vcap_dev_setup) $ ./vcap_dev_setup -h usage: ./vcap_dev_setup options OPTIONS: -h Show this message -a Answer yes to all questions -p http proxy i.e. -p http://username:password@host:port/ -c deployment config -d cloudfoundry home -D cloudfoundry domain (default: vcap.me) -r cloud foundry repo base -b cloud foundry repo branch/tag/SHA
  • 90. 전체 요약하면 bash vcap_dev_setup github vcap repo.
  • 91. V2의 설치는 BOSH 구조를 알아야 합니다.
  • 92. BOSH 가 뭐에요?
  • 93. BOSH 가 뭐에요? CloudFoundry가 첫돌 맞은 해에 BOSH가 발표됨. 탄생의 주요원인은 cloudfoundry.com 이 발전하면서 운영의 필요성 기존 CHEF의 영역을 진화시키기 위해 제작 Cloud Foundry의 컴포넌트가 독립적이고, 확장적인 구조이기 때문에 한곳에서 설치 / 관리 / 운영하기 위한 소프트웨어 단점은 무겁고, 치명적으로 IaaS 에 의존적
  • 94. BOSH Architectur
  • 95. BOSH 구성품 Packages - Archive Software (nginx, pcre ....) Jobs - Packages / release 설치명세서 Stemcells (줄기세포) - 배포할 플랫폼 (VM Instance 2가지 종류 VM Instance), cf-release - Cloud Foundry 소스코드 세트 (이제 이곳으로 릴리즈됨) Deployments - cf-release, IaaS 를 컨트롤할 설치명세서
  • 96. 설치순서 #1 - 환경세팅 IaaS 환경 세팅 (AWS / OpenStack / vSphere ... ) bosh client 와 통신할 수 있도록 준비 각 IaaS 별로 환경설정 메뉴얼 http://docs.cloudfoundry.com/docs/running/deploying-cf/
  • 97. 설치순서 #2 - Install BOSH CLI Install Ruby Install bosh cli (gem) $ gem install bosh_cli
  • 98. 설치순서 #3 - Install Micro-BOSH micro-bosh 는 BOSH 의 미니어처 / BOSH 컴포넌트 모두 포함 $ bosh download public stemcell <micro-bosh.....tgz> $ bosh micro deployment micro_bosh.yml (명세서) $ bosh micro deploy <micro-bosh.....tgz> TEST !! $ bosh target x.x.x.x:25555
  • 99. 설치순서 #4 - Install BOSH $ bosh download public stemcell <bosh.....tgz> $ bosh upload stemcell <bosh.....tgz> $ clone http://github.com/...bosh.git $ ./update && bosh create release --with-tarball --force $ bosh upload release <output.tgz> Upload bosh-stemcell bosh deployment .... (전략 파일 작성) bosh deploy bosh-stemcell
  • 100. 설치순서 #5 - Deploy cf-release $ clone http://github.com/...cf-release.git $ ./update && bosh create release $ bosh upload release cf-**.yml $ bosh releases $ bosh deployment *.yml $ bosh deploy $ bosh vms
  • 101. W*F !! Sooooooooo Heavy !! 괜찮아? 다른 방법이 있는지 찾아봐? http://www.flickr.com/photos/42614915@N00/7383579992/
  • 102. 있다. 오 신이시여!
  • 103. 팀장님 !!! 앗싸 ~ Cool !
  • 104. Emulator 의 본고장 Japan NTT Software 회사의 이와사키 유다이가 Nise_Bosh 제작 Lightweight Bosh Emulator on Local Machine No CPI (Cloud Provider Interface) Nise == 일본말로 Pseudo
  • 105. Installer 도 만들었어요. https://github.com/yudai/cf_nise_installer 독립서버 / Vagrant 에 nise-bosh 를 활용하여 V2 설치가 가능 sudo apt-get install curl bash < <(curl -s -k -B https://raw.github.com/yudai/cf_nise_installer/$ {INSTALLER_BRANCH:-master}/local/bootstrap.sh) local/bootstrap.sh sudo apt-get install curl bash < <(curl -s -k -B https://raw.github.com/yudai/cf_nise_installer/$ {INSTALLER_BRANCH:-master}/vagrant/bootstrap.sh) vagrant/bootstrap.sh
  • 106. 클라이언트 툴을 설치하세요
  • 107. Installation version 1 $ gem install vmc $ vmc target [cf cloud controller domain] version 2 $ gem install cf $ vmc target [cf cloud controller domain] $ cf create-space development $ cf target --space development $ cf map-domain mycloud.local
  • 108. Client 에서 Application Deploy 방식은? heroku, azure 는 git 으로 deploy 합니다. Cloud Foundry 는 http 으로 deploy 합니다.
  • 109. Patch #1 App. 업로드사이즈 증가 기본적으로 64KB $ vi ...cfoundry-0.5.2/lib/cfoundry/upload_helpers.rb 8 module CFoundry 9 module UploadHelpers 10 # Default paths to exclude from upload payload. 11 UPLOAD_EXCLUDE = %w{.git _darcs .svn} 12 13 # Minimum size for an application payload to bother checking resources. 14 RESOURCE_CHECK_LIMIT = 64 * 1024 * 1024 15
  • 110. Patch #2. map / unmap 기능 활성 (v1) vmc map 실행하면 v2 only 라고 보여짐 $ vi .....cloulu-0.2.1/lib/vmc/cli/route/base.rb 1 require "vmc/cli/v2_check_cli" 2 3 module VMC 4 module Route 5 class Base < V2CheckCLI 6 def precondition 7 super 8 #fail "This command is v2-only." unless v2? 9 end 10 end 11 end 12 end
  • 111. Application > Management command arguments app [APP] apps delete APPS... push [NAME] rename [APP] restart APPS... start APPS... stop APPS...
  • 112. Application > Information command arguments env set-env app app name unset-env app name file app [path] files app [path] health apps instances apps logs app scale app stats app value
  • 113. Services command service arguments SERVICE services bind-service [SERVICE] [APP] create-service [OFFERING] [NAME] delete-service [SERVICE] rename-service [SERVICE] [NAME] unbind-service [SERVICE] [APP] tunnel [INSTANCE] [CLIENT]
  • 114. Administrator (v1 기준) command arguments users create-user [EMAIL] delete-user EMAIL passwd [USER] register [EMAIL]
  • 115. BlueGreen Deployment command arguments map APP DOMAIN unmap DOMAIN APP
  • 116. 확장을 고려한 Application 예제 만들기.
  • 117. Ruby, 1 Instance require 'sinatra' get '/' do $hits = 0 if $hits.eql? nil $hits = $hits + 1 "Hello World - #{$hits}" end $ vmc push ruby-sinatra-1 $ cf push ruby-sinatra-1 ... ...
  • 118. Ruby, multi Instance - scale out require 'sinatra' require 'redis' require 'json' configure do services = JSON.parse(ENV['VCAP_SERVICES']) redis_key = services.keys.select { |svc| svc =~ /redis/i }. Auto-reconfiguration redis = services[redis_key].first['credentials'] configure do @@redis = Redis.new end redis_conf = {:host => redis['hostname'], :port => redis['port'], :password => redis['password']} @@redis = Redis.new redis_conf end get '/' do $hits = @@redis.incr('hits') @@redis "Hello World - #{$hits}" end
  • 119. SSH 가 지원되지 않는데, Scheduling (cron) 작업은 어떻게 해요?
  • 120. framework 의 종류를 standalone 선택 ! vmc (cf) push framework: standalone domain: none 이때, 도메인을 부여하게 되면 웹서버로 인식하여 시작이 안됨 (bug, vmc unmap 으로 제거) vmc scale (client, worker background job) Horizontal / Vertical
  • 121. ruby $ cat app.rb require 'rufus/scheduler' scheduler = Rufus::Scheduler.start_new scheduler.in '20m' do # ... end scheduler.cron ' 0 22 * * 1-5 ' do # every day of the week at 22:00 (10pm) end https://github.com/jmettraux/rufus-scheduler
  • 122. node.js $ cat app.js var cronJob = require('cron').CronJob; var job = new cronJob(' 0 22 * * 1-5 ', function(){ }, function () { // ..... }, true // Start the job right now ); https://github.com/ncb000gt/node-cron
  • 123. SSH 가 지원되지 않는데, Service 관리는 어떻게 해요?
  • 124. vmc tunnel (aka. caldecott) http://www.flickr.com/photos/nathangraham/5413901357/
  • 125. MySQL $ vmc tunnel 1: mysql-bb6cf Which service instance?> 1 1: none 2: mysql 3: mysqldump Which client would you like to start?> 2 Opening tunnel on port 10001... OK Waiting for local tunnel to become available... OK Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 56
  • 126. MySQL mysql> create table foo ( namae varchar(100) ); Query OK, 0 rows affected (0.12 sec) mysql> insert into foo values ('deview2013'); Query OK, 1 row affected (0.00 sec) mysql> select * from foo; +----------------+ 클라이언트 선택에서 2번을 선택 | name | +----------------+ Mysql command line 환경을 로컬에 그대로 !! | deview2013 | +----------------+ 1 row in set (0.01 sec) mysql>
  • 127. MySQL Client Tool 앞에 client 선택에서 1번 none 선택 !! 접속정보를 활용하여 로컬에서 별도의 클라이언트 프로그램을 사용한 모습
  • 128. mongodb 1: none 2: mongo 3: mongodump 4: mongorestore Which client would you like to start?> 2 ..... MongoDB shell version: 2.4.3 connecting to: localhost:10000/db > j = { name : "mongo" } { "name" : "mongo" } > db.testData.insert( j ) > db.testData.find() { "_id" : ObjectId("5232acc2648b65e049460945"), "name" : "mongo" }
  • 129. mongodb $ vmc tunnel ... 1: none 2: mongo 3: mongodump 4: mongorestore Which client would you like to start?> 1 Opening tunnel on port 10000... OK Service connection info: username : 2b18f727-92a0-46e0-b9cf-9c4fb9ea6638 password : d80e183f-ff91-49b8-9b0a-a55276d28634 name : db url : mongodb://2b18f727-92a0-46e0b9cf-9c4fb9ea6638:d80e183f-ff91-49b8-9b0aa55276d28634@10.0.2.15:25002/db
  • 130. mongodb client tool 앞에 client 선택에서 1번 none 선택 !! 접속정보를 활용하여 로컬에서 별도의 클라이언트 프로그램을 사용한 모습
  • 131. Redis $ vmc tunnel 1: redis-7ebaa Which service instance?> 1 1: none 2: redis-cli Which client would you like to start?> 2 Opening tunnel on port 10001... OK Waiting for local tunnel to become available... OK redis localhost:10001> set deview 2013 OK redis localhost:10001> get deview "2013"
  • 132. 마지막으로 데모를 통해 version 1 과 version 2 를 맛보겠습니다.
  • 133. 데모귀신이 붙지 않도록 기도해주세요. vagrant 로 노트북에 준비했으니, 잠시만 기다려주세요. vagrant resume vmc target, vmc register, vmc login vmc apps vmc push, vmc delete vmc tunnel cf target, cf login, cf orgs, cf spaces, cf push nats pub/sub, gorouter nats-pub, directory tree monit, warden container repl end.....
  • 134. Q&A
  • 135. 감사합니다.

×