Sie sind auf Seite 1von 3

Google Cloud Platform Blog

Productupdates,customerstories,andtipsandtricksonGoogleCloudPlatform

Kaplan builds online education platform KAPx with Google App Engine
Posted:Friday,November1,2013

Today'sguestpostisfromCharlieWard,VPofPlatformDevelopmentatKaplanInc.,aglobaleducational servicescompanythatoperatesin170countriesandservesonemillionstudentsannually.Charliedescribes whyKaplanchoseGoogleAppEngineasthefoundationforascalable,flexible,androbusteducationplatform thatallowsanyonetoeasilydeliverlearningcontentinbothliveandrecordedformats. TheDriversforChange OngoingdisruptionsintheHigherEducationspaceincludingopencourses,freecontent,regulatorypressures andprotestsovertheincreasingcostofeducationhavespurredstudentstolookforalternativepathsto achievingtheireducationandcareergoalsandhavedriveninstitutionstolookforinnovativewaystolowerthe costofeducation. Inresponse,KaplanlaunchedtheKAPxinitiative,whoseoriginalobjectivewastodevelopascalableandrobust platformfordeliveringcontenteffectivelytolargeaudiences,usingonlylowcostandopencomponents.Initial prototypesreliedontraditionaldevelopmenttechnologiesorrequiredsignificantinvestmentsininfrastructure. Whendevelopersbegantoloadtesttheseprototypes,theteamrecognizedthatGoogleAppEnginecouldscale fasterandfurtherthantheotherproductsbeingused.Sothedecisionwasmadetoportthewholethingto GoogleAppEngine. FirstimpressionswithGoogleAppEngine OurinitialintroductiontoGoogleAppEnginewasarealtimecommentingservicethatwedesignedaroundthe ChannelAPI.Whileloadtestingourprototypes,weimmediatelysawthatGoogleAppEnginecouldscalefaster andfurtherthantherestofoursolution.AtthatpointwedecidedtoporttheentireapplicationtotheGoogleApp Engineplatform. UsingHTMLtemplates,theNoSQLdatastore,andmemcachefordynamicwebcontent,threeengineerswith zeropythonexperiencewereabletoporttheapplicationandgofromprototypetoproductioninjustthreeweeks. TheteamalsoleveragedtaskqueuestomanagemessagedistributionandthechannelAPIforrealtime messagedelivery.ItwasAppEnginestightintegrationofthesecomponentsandassociatedPythonlibraries thatsimplifiedtypicallytedioustasksandallowedustoflattenoutthelearningcurve.

AddingonGoogleHangouts&GoogleApps WithGoogleAppEnginepoweringthescalablefoundationforKAPx,weleveragedGoogleHangoutsonAirfor livestreamingvideoandbuiltaHangoutsAppforthepresentertointeractwithparticipants.Wealsoturnedto GoogleAppsDocs,Presentations,andDrawingsandtheGoogleDrivePickerAPItoallowthepresenterto select,share,andincorporatelecturematerialsintotheliveexperience AppEngineprovideduswiththetoolstorapidlygofromconcepttoproductionatlightningspeed,withoutthe overheadofmanagingatraditionalinfrastructureortheneedtowireupdisparatetechnologies.Afterstartingout withlivelecturedeliveryonKAPx,theflexibilityandeaseofdevelopmentonGoogleAppEnginehasallowedus toexpandquickly,tacklingstructuredlearningwithourfirstsetofopencoursesforKaplanUniversityanda completelynewonlineinstitution,MountWashingtonCollege.

TipsforgettingstartedwithGoogleAppEngine

1. TherearemanyexcellentexamplesofAppEnginesolutionsintheGoogleCloudPlatformrepositoryon GitHubtogetyoustarted. 2. Usewebapp2andthejinja2templateengineforservingupcontentunlessyouneedsomethingheavier. ThislightweightbutflexiblecombinationissimpletouseandprovidesaneasywaytodeliverMVCstyle HTMLtemplatesaswellasrawdataforRESTfulAPIs. 3. UsetheNDBdatastorelibrariestogetmemcacheforfree.NDBwasexperimentalwhenwefirstlaunched ourplatform,sowewentwithGAEsDBdatastorehavingtowriteourownhandlersforfrontloadingDB querieswithmemcache.WithNDB,thisisprovidedforyou,dramaticallyimprovingperformanceand shorteningdevelopmenttime. 4. Planaheadifyouaregoingtoneedtoaggregatedata(join,counts,etc).Operationsthatyouwould typicallyrelyoninarelationaldatabase(joins,groupingsandaggregatefunctions)arenotas straightforwardwhenworkingwiththeNoSQLDBorNDBdatastore.Youllwanttoplanoutyourmodels withtheappropriatekeys/propertiestosupportaggregationincodeforegoingjoinsandgroupingwhen possible. 5. Whenrelyingheavilyonthebuiltindatastoreandmemcacheimplementations,youllwanttounderstand theirupperlimitsanddesignaroundthem.Thereareexcellentarticlesavailableoneventualconsistency, shardingdata,reducingdatastorecontention,asynctaskqueues,andMapReduceinthe developers.google.com/appenginesitethatcanprovideyouwithtechniquestoworkwithintheboundries ofservicequotasandtheconstraintsofahighlyscalableenvironment. 6. InvesttimeupfronttosetupautomatedextractsofyourlogdatatoGoogleBigQueryonaregularbasis. Thiswillpayhugedividendsthefirsttimeyouneedtotrackdownabuginproduction,asthedashboard toolsoutoftheboxarecumbersometoworkwithatscale. 7. Usethedatastore_consistency_policy=randomoptionondev_appserver.pywhendevelopinglocallyto identifypotentialproblemswithdelayeddatastorewritesbeforedeploying.

ContributedbyCharlieWard,VPofPlatformDevelopment,Kaplan
Labels:appengine,customer

Das könnte Ihnen auch gefallen