Developing Cloud Computing Applications with Java
اسلاید 1: Developing Cloud Computing Applications with JavaShlomo SwidlerCTO, MyDrifts.comshlomo.swidler@gmail.com
اسلاید 2: Developing Cloud Computing Applications with JavaOverview of Cloud ComputingAmazon’s Cloud PlatformGoogle’s Cloud PlatformApplication Development Challenges Posed by the Cloud… … and Java Solutions122 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 3: About MeCTO & co-Founder Music marketing on social networksPatent-pending targeting technologyJava, MySQL, auto-scaling & cloud-basedActive in the Cloud Computing communityOpen Cloud Computing Interface Working Group (an Open Grid Forum initiative) participantContributor to Open Source cloud & Java projects22 June 20092Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 4: Cloud Computing Is…A style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the “cloud” that supports them. – Wikipedia 322 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 5: Cloud Computing Is…A style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the “cloud” that supports them. – Wikipedia 422 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 6: Cloud Computing Is…A style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the “cloud” that supports them. – Wikipedia 522 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 7: Cloud Computing Is…A style of computing resources in which dynamically scalable and often virtualized are provided as a serviceInfrastructure as a Service – IaaSPlatform as a Service – PaaSSoftware as a Service – SaaS622 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 8: Cloud Computing Is…Computing Resources As a ServicePay-as-you-go or Subscription722 June 2009Developing Cloud Computing Applications with Java by Shlomo SwidlerInfrastructurePlatformSoftwareProcessorLAMP StackEmailMemoryJVMCRM SystemStoragePython VMERP SystemNetworkMapReduceSCM System
اسلاید 9: Advantages of Cloud ComputingFrom a Developer’s Perspective:Pay-as-you-go “utility computing”Saves timeSaves $$$On-demand resource allocation & releaseScalabilityMore on this later822 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 10: Risks of Cloud ComputingSecurityWho else has access to “your” resources ?RecoveryHow easy is it ?Provider lock-in922 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 11: Amazon’s Cloud Platform: Amazon Web ServicesInfrastructure-as-a-ServiceProcessors & MemoryElastic Compute Cloud “EC2”StorageSimple Storage Service “S3”Elastic Block Store “EBS”SimpleDB database1022 June 2009Developing Cloud Computing Applications with Java by Shlomo SwidlerNetworkContent Delivery Network CloudFrontMessagingSimple Queue Service “SQS”
اسلاید 12: Amazon DashboardElasticFox Firefox plugin22 June 200911Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 13: Developing on Amazon’s CloudStandard stuff:LanguageLibrariesCommunicationsWeb ServersApplication ServersDatabases22 June 200912Developing Cloud Computing Applications with Java by Shlomo SwidlerChallenges:Scaling Suitable for existing applications
اسلاید 14: Google’s Cloud Platform: Google App Engine22 June 200913Developing Cloud Computing Applications with Java by Shlomo SwidlerPlatform-as-a-ServiceLanguagePythonJavaStorageJDO or JPA or Datastore APIsUser AccountsEmailImage TransformationMemcachedCron jobs
اسلاید 15: Google DashboardGoogle Administration Console22 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler14
اسلاید 16: Developing on Google’s CloudEasy stuff:Scaling22 June 200915Developing Cloud Computing Applications with Java by Shlomo SwidlerChallenges:LanguageLibrariesCommunicationsData Storage Suitable for new, lighter-weight applications
اسلاید 17: Application Development Challenges Posed by the CloudDeploying to the CloudDesigning for ScalabilityWeb TierApplication TierDatabase Tier22 June 200916Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 18: Application Development Challenges Posed by the CloudDeploying to the CloudDesigning for ScalabilityWeb TierApplication TierDatabase Tier22 June 200917Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 19: Deploying to the CloudIaaS platformsMostly the same as traditional deploymentPaaS & SaaS platformsCustom proceduresCustom configurationsCustom toolsGoogle App Engine: Eclipse plug-in22 June 200918Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 20: Deploying an Application to Google App Engine22 June 200919Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 21: Designing the Application Tier for Scalability22 June 200920Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 22: Designing the Application Tier for ScalabilityMake sure your Storage Tier is optimizedOptimize database queriesUse in-memory cachingParallelize operationsUse concurrent threadsUse the Service Pools design pattern22 June 200921Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 23: Parallelize with Concurrent ThreadsMotivationAllow long-running tasks to proceed without impacting performanceJava offers the java.util.concurrent packageExecutor interfaceFuture<T> interface22 June 200922Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 24: java.util.concurrent Example: In-Memory CacheExisting implementations such as memcachedCache shared by all application instancesAccess is via the networkApplication requests an Object from the cacheTime until response is received can varyTrue of any network operationDon’t let application code wait…22 June 200923Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 25: java.util.concurrent Example: In-Memory CacheString userId = visitor01;String memcachedKey = userId: + userId + .lastLoginDate;Future<Date> lastLoginDateGetter = MemcachedClient.get(memcachedKey, Date.class);// perform the rest of the request handling code here// then, at the end, get the users last login dateDate lastLoginDate = null;try { lastLoginDate = lastLoginDateGetter.get(50, TimeUnit.MILLISECONDS);} catch (InterruptedException e) { // someone interrupted the FutureTask} catch (ExecutionException e) { // the FutureTask threw an exception} catch (TimeoutException e) { // the FutureTask didnt complete within the 50ms time limit lastLoginDateGetter.cancel(false);}// return lastLoginDate to the presentation layer22 June 200924Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 26: java.util.concurrent Example: In-Memory Cacheimport java.util.concurrent.Callable;import java.util.concurrent.Executor;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;public class MemcachedClient { private static Executor executor = Executors.newFixedThreadPool(1); public static <T> Future<T> get(String objectKey, Class<T> type) { final String objectKeyFinal = objectKey; FutureTask<T> getFromCacheOperation = new FutureTask<T>( new Callable<T>() { public T call() { Object networkResponse = requestObjectOverNetwork(objectKeyFinal); return (T) networkResponse; } } ); executor.execute(getFromCacheOperation); return getFromCacheOperation; } private static Object requestObjectOverNetwork(String objectKey) { // network stuff goes in here }}22 June 200925Developing Cloud Computing Applications with Java by Shlomo Swidler
اسلاید 27: MsgParallelize with Service PoolsMotivationAllow services to scale according to demandScale up and down22 June 200926Developing Cloud Computing Applications with Java by Shlomo SwidlerApp CodeMsgMsgMsgMsgMsgRequest QueueMsgMsgMsgMsgMsgMsgResponse QueueStorageServiceServiceServiceServicePool Manager
اسلاید 28: Java Service Pool for Amazon Web Services: LifeguardOpen source Apache License Version 2.0http://code.google.com/p/lifeguard/22 June 200927Developing Cloud Computing Applications with Java by Shlomo SwidlerMsgApp CodeMsgMsgMsgMsgMsgRequest QueueMsgMsgMsgMsgMsgMsgResponse QueueStorageServiceServiceServiceServicePool Manager
اسلاید 29: Lifeguard FrameworkFramework provides:Message handlingFile handlingScaling logic22 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler28MsgApp CodeMsgMsgMsgMsgMsgRequest SQS QueueMsgMsgMsgMsgMsgMsgResponse SQS QueueS3 StorageServiceServiceServiceServiceEC2 InstancesPool ManagerIngestorListenerPool Mgr Config
اسلاید 30: Lifeguard FrameworkYou provide:IngestorServicePool Manager Configuration22 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler29MsgApp CodeMsgMsgMsgMsgMsgRequest SQS QueueMsgMsgMsgMsgMsgMsgResponse SQS QueueS3 StorageServiceServiceServiceServiceEC2 InstancesPool ManagerIngestorListenerPool Mgr Config
اسلاید 31: 22 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler30public class ResizeImageIngestor extends IngestorBase {private static final String ResizeImageWorkflowXML =<Workflow> +<Service> +<Name>ResizeImage</Name> +<WorkQueue>ResizeImage-input</WorkQueue> +</Service> +</Workflow>;public ResizeImageIngestor() {super(ResizeImageIngestorWorkflowXML);}public void ingest(File imageFile) { super.ingest(Collections.singletonList(imageFile));}}App CodeMsgIngestorS3 StorageImplement the Ingestor
اسلاید 32: 22 June 200931Developing Cloud Computing Applications with Java by Shlomo SwidlerMsgS3 StorageServiceImplement the Servicepublic class ResizeImageService extends AbstractBaseService {private static final String ServiceConfigXML =<ServiceConfig> +<ServiceName>ResizeImage</ServiceName> +<WorkQueue>ResizeImage-input</WorkQueue> +</ServiceConfig>;public ResizeImageService() {super(ServiceConfigXML);}public List<File> executeService(File imageFile) { Image origImage = new Image(imageFile);File resizedImageFile = resizeImageToFile(origImage);return Collections.singletonList(resizedImageFile);}}
اسلاید 33: 22 June 200932Developing Cloud Computing Applications with Java by Shlomo SwidlerConfigure the Pool ManagerPool ManagerPool Mgr Config<ServicePool><ServiceName>ResizeImage</ServiceName><VMImage>ami-39ba5df0</VMImage><WorkQueue>ResizeImage-input</WorkQueue><RampUpInterval>1</RampUpInterval><RampUpDelay>360</RampUpDelay><RampDownInterval>1</RampDownInterval><RampDownDelay>480</RampDownDelay><MinSize>0</MinSize><MaxSize>20</MaxSize><QueueSizeFactor>20000</QueueSizeFactor></ServicePool>This configuration defines the SLA for this serviceThat’s all there is to implementThe framework does all the rest
اسلاید 34: Service Pool22 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler33MsgApp CodeMsgMsgMsgMsgMsgRequest SQS QueueMsgMsgMsgMsgMsgMsgResponse SQS QueueS3 StorageServiceServiceServiceServiceEC2 InstancesPool ManagerIngestorListenerPool Mgr ConfigPool of service instances dynamically scales with load
اسلاید 35: Service PoolPool of service instances dynamically scales with load22 June 2009Developing Cloud Computing Applications with Java by Shlomo SwidlerApp CodeServiceServiceServiceServicePool Manager34
اسلاید 36: Service PoolMultiple service pools scale independently22 June 2009Developing Cloud Computing Applications with Java by Shlomo SwidlerApp CodeServiceServiceServiceService 1ServiceServiceService 2ServiceServiceServiceService 3etc.Pool Manager35
اسلاید 37: Service PoolWorkloads can follow different workflowsSpecify the Ingestor’s XML accordingly22 June 2009Developing Cloud Computing Applications with Java by Shlomo SwidlerApp CodeServiceServiceServiceService 1ServiceServiceService 2ServiceServiceServiceService 3Pool Manager36
اسلاید 38: Developing Cloud Computing Applications with Java22 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler37Q&A
اسلاید 39: Developing Cloud Computing Applications with Java22 June 2009Developing Cloud Computing Applications with Java by Shlomo Swidler38Shlomo Swidlershlomo.swidler@gmail.comThank you!
نقد و بررسی ها
هیچ نظری برای این پاورپوینت نوشته نشده است.