450 likes | 1.13k Views
Cloudify Intro. July 2013 Dotan Horovits , Director, Customer Services. Agenda. The Cloud Environment High level architecture App provisioning Self-healing Scale up/down On-Demand DR Cloudify Player – PaaS in a box. The Basics…. Enterprise IT - Today .
E N D
Cloudify Intro July 2013 DotanHorovits, Director, Customer Services
Agenda • The Cloud Environment • High level architecture • App provisioning • Self-healing • Scale up/down • On-Demand DR • Cloudify Player – PaaS in a box
Enterprise IT - Today http://www.slideshare.net/pizak/understanding-platform-as-a-service-8393601
What’s Wrong? • No Agility • Can’t provision resources in minutes. Takes weeks or months • No optimized utilization • Most data centers are at 10%-20% average CPU utilization (Gartner) • No Consistent Management • Everybody looking for easier management and availability through automation and accountability • Each BU pays for its own use and manages its own resources • IT ops focus on IT enablement rather than on going IT management
Enterprise IT- Tomorrow How? http://www.slideshare.net/pizak/understanding-platform-as-a-service-8393601
GigaSpaces Cloudify Any App, On Any Cloud, Your Way February 2012
Cloudify Positioning Convenience • Open • Any Cloud • Enterprise-Grade DevOps Automation PaaS (Heroku, Google AppEngine, Amazon BeansTalk, CloudFoundry) App Amazon OpsWorks, RightScale Private clouds (OpenStack, CloudStack..) Public clouds (AWS, GCS Rackspace,..) Infra. Control
Cloudify & Amazon OpsWork Cloudify provide the equivalent of Amazon OpsWork on other clouds
Cloudify – Full Application Life Cycle Automation Continuous Integration API Cloudify Monitoring & Alarming Configuration Management Infrastructure (IaaS/ Traditional)
No Code Change Plug-in to the current way of running enterprise Apps Cloud Properties injected Baby Step approach Cloud Portability Bare-Metal Cloud Managing Big Data on the Cloud Guiding Principles
The Cloudify Recipe – Your Application Blueprint • Middleware services to run • Dependencies between services • How to install & configure services • Where to get application & service binaries • When to add or remove instances • How to monitor each of the services.
Recipe Domain Model • Application • Name • Properties (config) • Services • Service Dependencies • Service • Name • Properties (config) • SLA • Infra templates • Lifecycle events • Custom commands • Monitoring 1..*
Recipe - Application Structure & Dependencies application { name="petclinic" service { name ="mongod" } service { name ="mongoConfig" } service { name ="apacheLB" } service { name ="mongos" dependsOn=["mongoConfig","mongod"] } service { name ="tomcat" dependsOn=["mongos","apacheLB"] } }
Get 100’s of recipes out of the box Leverage Puppet Templates
Cloudify Architecture The USM allows you to deploy & manage any middleware service in any tier using an extensible recipe to describe it The brains of the system. Orchestrates the deployment of the application, continuously monitors it and triggers alerts and scaling rules based on real-time metrics and load Using the Cloud Driver, Cloudify can trigger host provisioning in any virtual environment and abstract it from your application
Main Cloud Drivers • Local Cloud • Basic development environment testing the app in a local mode. Good for unit testing. • BYON Cloud • Development and Deployment environment - running the app in a distributed mode leveraging existing pool of VMs/physical machines. • Private Cloud • Deployment environment. Launching VMs on demand. • Public Cloud • Deployment environment. Launching VMs on demand. Supporting EC2 , HP Cloud , Rackspace , Terramark,Azure , openstack …
Complete visibility CUSTOMIZED AVAILABILITY AND PERFORMANCE MONITORING TO TRACK YOUR APPLICATIONS
Easy troubleshooting BROWSE ALL YOUR LOGS WITH A SINGLE CLICK
Monitoring the Application Verifying application deployment vs. planned Custom metrics at the service (cluster) level
Monitoring the Application Verifying Infrastructure usage and resource utilization Correlating VM metrics for comparison
Application description through RECIPES • Recipe DSL • Lifecycle scripts • Availability & Monitoring Probes • Custom plug-ins(optional) application { name="petclinic" service { name ="mongod" } service { name ="mongoConfig" } service { name ="apacheLB" } service { name ="mongos" dependsOn=["mongoConfig","mongod"] } service { name ="tomcat" dependsOn=["mongos","apacheLB"] }
service { name "mysql" icon "mysql.png" type "DATABASE" ... } Application description through RECIPES • Recipe DSL • Lifecycle scripts • Availability & Monitoring Probes • Custom plug-ins(optional)
Application description through RECIPES • Recipe DSL • Lifecycle scripts • Availability & Monitoring Probes • Custom plug-ins(optional) Lifecycle { install "mysql_install.groovy" start "mysql_start.groovy" startDetectionTimeoutSecs900 startDetection"mysql_startDetection.groovy" stopDetection{ !ServiceUtils.isPortOccupied(jdbcPort) } preStop([ "Win.*":"killAllMysql.bat", "Linux.*":"mysql_stop.groovy” ]) shutdown ([ "Linux.*":"mysql_uninstall.groovy" ]) }
Environment Binding compute { template "SMALL_LINUX" } SMALL_LINUX : computeTemplate { imageId"us-east-1/ami-76f0061f“ remoteDirectory"/home/ec2-user/gs-files“ machineMemoryMB1600 hardwareId"m1.small" locationId"us-east-1" localDirectory"upload" keyFile"myKeyFile.pem" options ([ "securityGroups" : ["default"]as String[], "keyPair" : "myKeyFile” ]) overrides (["jclouds.ec2.ami-query":"", "jclouds.ec2.cc-ami-query":""]) privileged true } SMALL_LINUX : computeTemplate { machineMemoryMB5850 remoteDirectory"/tmp/gs-files” username username password password custom ( "nodesList" : ([ ([ "id" : "byon-pc-lab{0}", "host-list" : "0.0.0.0” ]) ]) ]) // enable sudo. privileged true }
Monitoring Probes monitors { defctxPath=("default"==context.applicationName)?"":"${context.applicationName}“ defmetricNamesToMBeansNames=[ "Current Http Threads Busy":["Catalina:type=ThreadPool,name=\"http-bio-${currHttpPort}\"", "currentThreadsBusy"], "Current Http Thread Count":["Catalina:type=ThreadPool,name=\"http-bio- ${currHttpPort}\"", "currentThreadCount"], returngetJmxMetrics("127.0.0.1",currJmxPort,metricNamesToMBeansNames) }
Auto Scaling scalingRules([ scalingRule{ serviceStatistics{ metric "Total Requests Count" statistics Statistics.maximumThroughput movingTimeRangeInSeconds20 } highThreshold{ value 1 instancesIncrease1 } lowThreshold{ value 0.2 instancesDecrease1 } } ])
Summary – Cloudify Value Any App, Any StackDeploy any middleware stack using a recipe based deployment mechanism Automatic Self-HealingCrashed nodes and machines are automatically replaced by new ones, following recipe instructions Auto-Scale, Your Way Automatic scaling of your application services based on out-of-the-box or custom metrics. Scale Up or Out Automation of the Entire Lifecycle Deploy, manage, and update your application using a single platform Any Cloud Support all major cloud and virtualization platforms. Your Application is completely decoupled from the Cloud API Cluster-Aware Availability & Performance Monitoring Pluggable monitoring, collects tier and application KPIs Fully Testable on Your Laptop Easily start, debug & test on your laptop with a fully functional cloud emulator. No VMs, no hassles.