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

Embed Size (px)

TRANSCRIPT

Cloud Technologies and Cloud Platforms

Cloud Technologiesand Cloud PlatformsCloud Concepts, IaaS, PaaS,SaaS, Public Cloud PlatformsSoftUni TeamTechnical TrainersSoftware Universityhttp://softuni.bg

PaaSIaaSSaaS

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 center

Cloud == 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, SaaS

11Infrastructure 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 IaaS

IaaSInfrastructure as a Service

14VPS == 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 Service

PaaS: Cloud for Developers

C#Java

HTML 5

PHPPython

codingRubyNode.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 + Express

Typical 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-available

Each 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 Service

26SaaS 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 Service

28BaaS 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 Developers

30Cloud 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 Platform

33Amazon 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 Services

34Amazon 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 Platform

38Google 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 Services

40App 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 Platform

44Microsoft 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 Azure

45Azure 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 cache

Windows Azure Services

HerokuRich and Powerful Cloud Platform

47Heroku 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 / MongoDBHeroku

48RoutingHTTP load balancersDynos managed workersWeb / Worker / CronBack-ends systemsDB: MySQL / PostgreSQLAdd-ons: MongoDB, RedisAuto-scaling technologyLogging and monitoring (Logplex)Git-based deploymentThe Heroku Platform

49Large 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, Progs...

Recommended

View more >