Cloud Technologies and Cloud Platforms Cloud Concepts, IaaS, PaaS, SaaS, Public Cloud Platforms SoftUni Team Technical Trainers Software University http://softuni.bg.

Download Cloud Technologies and Cloud Platforms Cloud Concepts, IaaS, PaaS, SaaS, Public Cloud Platforms SoftUni Team Technical Trainers Software University http://softuni.bg.

Post on 28-Dec-2015

222 views

Category:

Documents

6 download

TRANSCRIPT

Cloud Technologies and Cloud PlatformsCloud Technologiesand Cloud PlatformsCloud Concepts, IaaS, PaaS,SaaS, Public Cloud PlatformsSoftUni TeamTechnical TrainersSoftware Universityhttp://softuni.bgPaaSIaaSSaaS Software University Foundation http://softuni.orgThis work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.1Table of ContentsWhat is Cloud Computing?Cloud Computing ModelsIaaS, PaaS, BaaS, SaaSPublic Clouds for DevelopersAmazon Web Services (AWS)Google App Engine (GAE)Windows AzureHeroku, AppHarbor2 Software University Foundation http://softuni.orgThis work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.2What is Cloud Computing?4VirtualizationRunning several virtual machines (virtual computers) inside a single powerful hardware machineSupported by special software called hypervisorUse resources more efficientlyE.g. 12 GB physical RAM is shared to 6 virtual machines with 4 GB each (with memory sharing)Most applications use 1-5% of the CPUA single shared CPU can serve thousands of users / hundreds of appsReduces costs due to better utilizationWhat is Virtualization?5Cloud combine the computing power and resources of multiple hardware machinesShare the cloud resources between multiple users and appsGoal: save costs, use resources more efficiently, better serviceCloud computing environmentSuppose we have 20-30 powerful machinesWe can run 100-200 virtual machines (VMs)We can deploy hundreds applicationsWe can serve millions of usersWhat is Cloud Computing?6In the cloud everyone consumes a portion of the shared computing resourcesCPU, memory, storage, IO, networking, etc.If you business is small, you consume lessIf your business is growing, you consume more cloud resourcesPay as you goStart for free, pay when yougrow and need more resourcesHow the Cloud Works?7Suppose we have a mail server softwareIt needs computing resources (CPU, disk operations, networking, etc.) only when sending or receiving emailsIt the rest of the time it does nothing (waits)The mail server on dedicated machine will use less than 1% of its power and resourcesYou can run 100 mail servers in the cloud on the same hardwareLess hardware, reduced costs, increased qualityCloud Computing Example8Cloud computing benefitsComputing on demand pay as you goRent a hosting + CPU power + RAM + storage + IO operations + networking + other services (e.g. databases, CDN, analytics, )Cloud has better support and reliabilityYour data lives in a professional data centerHas 24 x 7 monitoring + backup + supportReduces costs: rent a piece of a data center instead build you own IT infrastructure / data centerCloud == Computing Resources on Demand9Public cloudsIT infrastructure, platform or service publicly accessible from Internet (free or paid), e.g. Amazon AWS, Windows AzurePrivate cloudsCloud infrastructure (hardware + software) for internal use only, e.g. for banking / governmentHybrid cloudsMix of private and public cloud infrastructure and services, e.g. private cloud + backup in Amazon S3Public / Private / Hybrid CloudCloud Computing ModelsIaaS, PaaS, BaaS, SaaS11Infrastructure as a Service (IaaS)Virtual machines in the cloud on demandUsers install the OS and software they needPlatform as a Service (PaaS)Platform, services and APIs for developersE.g. Java + JBoss + JPA + Spring MVC + MongoDB orJavaScript + Node.js + MongoDB + RabbitMQSoftware as a Service (SaaS)Hosted application on demand (e.g. WordPress site)Cloud Computing Models12SaaS, PaaS and IaaSIaaSInfrastructure as a Service14VPS == virtual private server (a virtual machine, VM)IaaS (Infrastructure as a Service)IaaS rent a dynamic virtual machine (VM, VPS) in the cloudDynamic VM == you could change your VM resources at runtimeE.g. add more 100 GB HDD storage + 2 GB RAM at runtimeAlso known as rent a "cloud server"IaaS provides an API for managing the cloud infrastructureE.g. programmable create a new virtual machine / allocate more resources / configure the network / install software / etc.IaaS (Infrastructure as a Service)15IaaS providers offer different pricing modelsFixed price per month for a cloud server with fixed parametersOffered by most hosting companiesPricing based on computing hours for fixed parametersE.g. Amazon EC2, Rackspace Cloud Servers, Windows Azure ComputeDynamic pricing per resources usedE.g. $0.024 per GB storage, $0.026 per CPU hour, $0.06 per GB data transferIaaS Pricing ModelsPaaS: Platform as a ServicePaaS: Cloud for DevelopersC#JavaHTML 5PHPPythoncodingRubyNode.js17PaaS rent a complete development / production platformFull development stack as a serviceE.g. Linux + Python + Django + MongoDB + cron jobs + Nginx load balancer + Gunicorn web serverBack-end technologiesE.g. relational and NoSQL DBs, blob storage, file storage, CDN, Business-tier technologies and languagesE.g. Java, Java EE, PHP, Python, Ruby, C#, JSFrameworks: Django, Rails, Symfony, Spring, JSF, ASP.NET MVCPaaS (Platform as a Service)18Typical PaaS PlatformOperating Systems: Linux / Windows / otherBack-End Technologies:Relational DBs, NoSQL DBs, Blob Storage, Message Queues, Notifications, CDN, Search, Email, Middle-Tier Languages and Frameworks:PHP, Java, C#, Python, Ruby, JavaScript, Symfony, Laravel, Zend Framework, JSF, ADF, Sprint MVC, Django, Rails, Sinatra, Play, ASP.NET, ASP.NET MVC, Node.js, Express, Front-End: HTML5, JavaScript / Mobile Front-EndsComputing Nodes (VMs):Amazon EC2, Azure Compute, App Engine Backends, 19Back-Ends on the CloudRelational DBsManaged MySQL, Oracle, PostgreSQL, MS SQL Server, Non-relational DBsAmazon SimpleDB, App Engine Datastore, Azure Tables, Cloudant (CouchDB + MapReduce), MongoDB, Redis, Couchbase, CassandraBlob storage / file storageAmazon S3, Azure Blobs, App Engine Blobstore, Rackspace Cloud Files, Dropbox, pCloud, Typical PaaS Services20Middle-Tier on the CloudComputing nodesAmazon EC2, Azure Compute, App Engine Backends, Rackspace Cloud Servers, LanguagesPHP, Java, Python, Ruby, JavaScript, C#FrameworksSymfony, Zend Framework, Laravel, JSF, ADF, Spring MVC, Django, Rails, ASP.NET, ASP.NET MVC, Node.js + ExpressTypical PaaS Services (2)21Other PaaS Services and APIsQueuesAmazon SQS, Google Task Queues, Azure Queues, CloudAMQPNotification servicesAmazon SNS, Windows Push Notifications, Apple Push Notification Service, PubNubEmail services: SendGrid, MailJet, Elastic Email, Amazon SESCDN (content delivery networks): Amazon CloudFlare, Akamai, DNS, load balancing, quality of services, logging, monitoring, analytics, and many others Typical PaaS Services (3)The typical cloud architecture is multi-tier, SOA, highly-scalable and highly-availableEach tier hosts different managed services and technologiesTypical PaaS ArchitectureMonitoringAdministrationData-basesStorage ServicesBack-End ServicesOther ServicesLoad BalancerComputing NodeComputing NodeComputing Node23Java + JBoss app server + Java ServerFaces + JBoss Rich Faces + Java Persistence API + Oracle databasePython + Django + MongoDB + Linux cron jobs + Nginx load balancer + Gunicorn web server.NET Framework + C# + ASP.NET + WCF + SQL Server + Nginx load balancer + IIS web serverPHP + Laravel + MongoDB + Nginx load balancer + Apache web serverJavaScript + Node.js + MongoDB + RabbitMQRuby + Ruby on Rails + MySQL + Sphinx + Memcache + Unicorn serverClassical PaaS Stacks24Amazon Web Services (AWS)PHP + Amazon EC2 + Linux + Apache + Amazon DynamoDB + Amazon S3 + Amazon Block Store (EBS)Java + Amazon EC2 + Tomcat + Spring + Hibernate + JavaServer Faces (JSF) + Amazon RDS (Oracle)Windows AzureC# + Windows Azure Compute + WCF + ASP.NET MVC + Azure Tables + SQL Azure + Azure Blobs + Azure CDNGoogle App Engine (GAE)Java + App Engine Backends + App Engine Datastore + JPA + Google Cloud Storage + JSF + MemcacheProprietary PaaS StacksSaaSSoftware as a Service26SaaS rent an application in the cloudFully managed application just login and use itExamples of public SaaS servicesWordPress.com managed hosting of WordPress sitesMailChimp managed email marketing platformBasecamp web-based project management and team collaborationSalesforce.com managed CRM platform on demandAdobe Creative Cloud cloud for designers and creative artistsAutodesk 360 cloud for building architects / AutoCAD usersSaaS (Software as a Service)BaaSBack-End as a Service28BaaS rent a backend in the cloudAlso known as mBaaS (Mobile Backend as a Service)Fully managed backend for your mobile or SPA applicationTypically provides database + REST API + storage services + notificationsRegister, create your data model and use it through REST / other APIExamples of public BaaS clouds: Parse.com, BaasBox, Kinvey, KumulosParse.com simple and powerful BaaS from FacebookProvides NoSQL database (object and queries), users, roles, permissions, file storage, push notifications, analytics, GEO points, etc.BaaS (Backend as a Service)Cloud DevelopmentChallenges for Cloud Developers30Cloud software developmentDesign and develop an application for the cloudEspecially for the public PaaS cloud platformsTypical steps in cloud software developmentChoose a development stack of technologiesChoose a public cloud platform + servicesDesign the application for the cloudDevelop the application using the cloud APIsDeploy, run and monitor the application in the cloudWhat is Cloud Development?31Public cloudsProvide computing resources on demandPublicly in Internet, for everyonePaid or free of charge (to some limit)Could be IaaS, PaaS, SaaS or mix of themExamples of public cloudsAmazon AWS, Google App Engine (GAE), Windows Azure, Rackspace, Heroku, AppHarbor, Force.com AppForce, Joyent, dotCloud, Engineyard, OpenShift, CloudBees, CloudSwing, Cloud Foundry, Oracle Public Cloud, Salesforce, Parse.com, WordPress.com, What is a Public Cloud?PublicCloudsAmazon Web Services (AWS)The Largest Public Cloud Platform33Amazon Web Services (AWS)The pioneer of the public cloudsProvides cloud platform and services from 2002Provides IaaS and PaaS on demandAmazon Elastic Compute Cloud (Amazon EC2)Virtual machines on demand (cloud VPS)Runs Windows / Linux / other OSMultiple locations: US, EU, Japan, Brazil, http://aws.amazon.com/ec2/Amazon Web Services34Amazon Elastic Block Store (Amazon EBS)Virtual hard disk (HDD) volumesUsed with the EC2 to keep the OS file systemhttp://aws.amazon.com/ebs/Amazon Simple Storage Service (Amazon S3)Hosting binary data (files, images, videos, etc.)Accessible through the WebWith or without authenticationhttp://aws.amazon.com/s3/Amazon Web Services (2)35Amazon DynamoDB / SimpleDBManaged NoSQL cloud databaseHighly scalable, fault-tolerantDynamoDB is newer and faster than SimpleDBhttp://aws.amazon.com/dynamodb/Amazon Relational Database Service (RDS)Managed MySQL and Oracle databasesScalability, automated backup, replicationhttp://aws.amazon.com/rds/Amazon Web Services (3)36Other AWS servicesAmazon SQS (message queue)Amazon CloudFront (content delivery network)Amazon ElastiCache (caching)Amazon Route 53 (cloud DNS)Amazon SES (email)PricingOn-demand pricing (per hour / per GB)Has 1-year free trial (credit card required)Amazon Web Services (4)Google App Engine (GAE)The Google's Public Cloud Platform38Google App Engine (GAE)PaaS public cloud for Java, Python and PHPInfrastructure similar to the one driving GMail and Google Docs operated by Googlehttps://cloud.google.com/appengine/Provides CPU / bandwidth / storage capable to serve 5 000 000 page views / monthApp Engine has a completely free trial versionInstant registration with SMS confirmation (no credit card)Google App Engine39App Engine instancesComputing units that host the applicationsFully managed sandboxes (they are not VMs!)Provide CPU + RAM + storage + language runtimeApp Engine Console: https://appengine.google.comApp Engine back-endsLike the App Engine instancesBut provides higher computing resourcesUsed for background processingGoogle App Engine Services40App Engine datastoresProvide NoSQL schemaless object databaseSupports transacts and a query-engine (GQL)High-replication datastore (HRD)Master-slave datastore (faster but less-reliable)Cloud SQLManaged MySQL in the App Engine cloudBlobstore / Cloud StorageStore files / blobs, has with ACL and REST APIGoogle App Engine Services (2)41MapReduce APIHighly-scalable parallel computing API for heavy computing tasks (based on Hadoop)Channel APIPush notifications for JavaScript applicationsTask QueuesServices for execution of background workMemcacheDistributed in-memory data cacheGoogle App Engine Services (3)42Google App Engine for JavaJava 6 in a sandbox environment + Eclipse plugin (for deployment)Java Web apps (WARs) / Servlets / JSPs + GWTPersistence with JPA and JDO in the datastoreGoogle App Engine for PythonPython 2.5 in a sandbox + Django supportGoogle App Engine for PHPPHP 5.5 + Cloud SQL (managed MySQL)App Engine for Java & PythonWindows AzureMicrosoft's Public Cloud Platform44Microsoft Windows AzureFast-growing public cloud from MicrosoftProvides rich PaaS platformMainly for .NET developersProvides also Java, PHP, Python, and Node.js APIsDatabases, storage, mobile back-ends, CDN, Provides IaaS cloud (Windows VMs)No free version, only 1 month trial (credit card required)Windows Azure45Azure Compute VMs in the Azure cloudStorage servicesSQL Database cloud version of SQL ServerAzure Table Storage (NoSQL database)Azure Queue Storage message queue servicesAzure Blobs / Drives blob / file storage, NTFS volumesAzure CDN content delivery networkAzure Caching distributed, in-memory, application cacheWindows Azure ServicesHerokuRich and Powerful Cloud Platform47Heroku is a leading public PaaS platformSupports very broad stack of technologiesEverything except C# .NET (officially)Development stacksJava + Spring + Hibernate + PostgreSQL / MySQL / MongoDB + Memcache + Tomcat / JettyRuby + Rails + MongoDB / MySQL + MemcachePython + Django + Memcache + PostgreSQLJavaScript + Node.js + Express + MySQL / MongoDBPHP + MySQL / MongoDBHeroku48RoutingHTTP load balancersDynos managed workersWeb / Worker / CronBack-ends systemsDB: MySQL / PostgreSQLAdd-ons: MongoDB, RedisAuto-scaling technologyLogging and monitoring (Logplex)Git-based deploymentThe Heroku Platform49Large set of add-ons for developers @ HerokuAirbrake, Amazon RDS, Apigee for Facebook, Apigee for Twitter, Appoxy SimpleWorker, Blitz, Chargify, ClearDB MySQL, Cloudant (CouchDB + MapReduce), CloudMailin, Cron, Custom Domains, DbInsights, Deploy Hooks, DocRaptor, DynectSMB, Exceptional, Flying Sphinx, Heroku PG Backups, Heroku PostgreSQL, Heroku Scheduler, Heroku Shared PostgreSQL, Hoptoad, IndexTank, IronMQHeroku Add-Ons50Large set of add-ons for developers @ HerokuIronWorker, JustOneDB, Loggly, Mailgun, Memcache, MongoHQ, MongoLab, Moonshado SMS, Neo4j, New Relic, Panda Stream, Progstr Logger, PubNub, Pusher, RabbitMQ, Ranger, Redis To Go, RESTful Metrics, RhoConnect, Searchify IndexTank, Sendgrid, SimpleGeo, SSL, Stackmob, StatsMix, StatsMix Heroku, Integration Tutorial, StillAlive, Tddium, Treasure Data Hadoop, Tronprint, Websolr, Xeround, Zencoder, Zerigo DNS, Heroku Add-Ons (2)51History of HerokuRuns millions of applicationsOwned by Salesforce.comFounded in 2007, fast growing and matureHeroku has a completely free limited version750 computing hours / month100 MB storage + 5 MB databaseCredit card not requiredMore about HerokuAppHarbor The Leading Non-Microsoft .NET Cloud53AppHarbor public cloud platform for .NET appsSupports a classical .NET development stackC#, .NET Framework, ASP.NET (Web Forms and MVC), WCF, WWF, Entity Framework, Deployment through Git / SVN / TFSAutomated build process (compile + unit tests)Build-in load balancingBuilt on top of Amazon AWS infrastructureRich set of add-on servicesAppHarbor54Airbrake (error logging)Blitz (performance monitoring)CloudAMQP (RabbitMQ)Cloudant (CouchDB)CloudMailin (incoming email)Dedicated SQL ServerJustOneDB (NoSLQ database)Logentries (log management)Mailgun (email send / receive)AppHarbor: Add-On Services55Memcacher (in-memory caching)MongoHQ (managed MongoDB)MongoLab (managed MongoDB)MySQL (shared MySQL DB)RavenHQ (NoSQL database)Redis To Go (key-value store)SendGrid (email delivery)StillAlive (app monitoring)Shared SQL Server (managed instance)AppHarbor: Add-On Services (2)Choosing a Public CloudGuidelines for Choosing a Public CloudPublicClouds57How to choose a public cloud for your app?.NET Azure / Amazon / AppHarborJava Google App Engine / Heroku / Oracle Public Cloud / otherPHP AppFog / Heroku / Engineyard / App Engine / otherRuby Heroku / Engineyard / OpenShiftPython App Engine / Heroku / OpenShiftAlways consider using IaaS cloudsAnd build your own platform on top of themChoosing a Public CloudCloud Technologies and Cloud Platformshttps://softuni.bg/courses/web-services-and-cloud/Questions?????????? Software University Foundation http://softuni.orgThis work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.58LicenseThis course (slides, examples, demos, videos, homework, etc.)is licensed under the "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International" license59Attribution: this work may contain portions from"Web Services and Cloud" course by Telerik Academy under CC-BY-NC-SA license Software University Foundation http://softuni.orgThis work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.59Free Trainings @ Software UniversitySoftware University Foundation softuni.orgSoftware University High-Quality Education, Profession and Job for Software Developerssoftuni.bg Software University @ Facebookfacebook.com/SoftwareUniversitySoftware University @ YouTubeyoutube.com/SoftwareUniversitySoftware University Forums forum.softuni.bg Software University Foundation http://softuni.orgThis work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.60

Recommended

View more >