When a homeworkassignmentwasdo, however, therewasnotwithoutcosts.
Infact, I thinkweappreciateit a littletoolongintheprocessthatthewonderfulthingHarvardwasprovidingwassystemadministratorswhousedtorunallofthisforus.
Soallof a sudden, nowitwasusworkingnotonly 9 to 5 duringbusinesshours, butalso 5 to 9 whenthestudentswereactuallyonthesesystemsdoingtheirwork, particularlylateintothenight.
Forthoseunfamiliar, thisis a screenshotofcloudnineorspecificallyseeitsfiftiesincarnationthereofwithsomepedagogicalsimplificationsandyoumymodifications.
Itprovidesstudentswith a familiartabbasedcodeeditorlikeyouwouldfindonanymodernsystemprovidesthemostimportantlywith a terminalwindow, sotheyhavefullfledgedaccesstotheunderlyingsystem.
Ah, filebrowser A topleft, butthenalsosomeorteacherfriendlyandprogrammerfriendlyfeaturesliketheabilitytochatinrealtimewithsomeonewithwhom I metPierreprogrammingor a teacherwhomightwanttohelpthemremotely.
Itprovidesthemwithaninteractivegraphicaldobuggerthatprovidesthemwiththeabilitytostepthroughtheircodelinebyline, theabilitytorollbackintimeon a versioncontrolbutthistimegraphicallysostudentscanseewheretheyleftoffjustminutesago.
Andultimately, here's a screenshotofthatsametobuggerthatallowsthemstepstepthroughstackframesandthelike.
Sowetried a numberofversionsoffsolutionstothistobuildout a cloudbasedbackendforAmazon's frontend, includingeasytofour, computean s3 forstorage, then s3 aloneorDBSforstorage, thenasthreealoneforpersistentstorage.
Andthenthere's thecomputeresourcethatthisyou I connectstowheretheactualprogramsarerunning, wheretheactualfilesourstoreandthisconnectionhappenstobein a stageconnectioncoursebydefaultincaseofcloudnineThisconnection.
Well, firstofall, wehadtomaintain a poolofeasytwoinstancesacrossdifferentavailabilityzonesacrossdifferentregions, whichinwhichwasn't quiteeasytodolikewehavetomaintainthestateonsomeidiotaboutthispoolofinstitutedsincewehavetogetdowntoleveloffrunningcommandsontheeasytoinnocenceisdirectlyto, um, startthecontainerstoauthorizethepublic a cityusinganotherAmazonWebservicecall.
Thisishim, whichwasn't quiteabstractenough.
Wehadtoallocateanentireeasytoinnocentsforeachstudentforeachcloudnineenvironment, evenifthey'renotusingtheentire 82 instancesintermsoffreesources, CPUandmemoryandsuchon, then, attheendoftheusersession, wehadtoterminatetheeasytwoinstanceswhichwas a bittimeconsumingbecausewehavetoalsowaitfortheEBSvolumetobedetached.
Andanotherchallengewiththatisthatwhentheusercomesinnexttimefor a newsessiontheywouldget a differenthostname, whichwasquiteannoying, maybeforstudentswhowereworkingontherightprojectgetting a differenthostnameeverytime.
AnditwasalsoquitechallengingforusbecausetheCloudnineenvironmentnowneeds a differentparametersforthisis a connection.
Umandsothefinalfinalthingisthatwehadtoremovethatyouseetwoinstancestemporarilyfromthepooltoupdatethedoctorimagesthatarebackinthe I d.
Okay, whataresomechallengesthatwehadwiththe B s forstores?
Soagain, weuse a B s forpersistingstudentsfilesandthe i d.
Andwehavetoassigneveryuser a singleavailabilityzonewhichwasquitelimitingbecausethatmeansthatevenifinthepoolsomewhereelseandsomeotheravailabilityzonetherewasaninnocentsavailable.
Wecouldn't assignthisinnocencetotheuserbecauseithadtobeinthesameavailabilityzoneasthebaby s William.
Andsoweinanattempttoresolvethestorechallenge, wemoveto s threeforstorageinstead.
Soatthispoint, westartedconsideringotherserviceisforforourimplementationandallwereallywantedis a servicethatwecouldasktogiveussomecontainerthatideallyhasahfixedhostnamethatwecanusethathaspersistentstoragethat's reachablefromtheInternet.
Soif a notecomesdown, ifaneasytoinnocencecomesdown, itwillbringitbackupautomatically, whichisquitenice.
Well, previously, wehavetogodowntotheleveloff.
Runningcommandsoneacheasytoinnocenceiswedon't reallyhavetodothatanymorebecauseyouusethecommunity's a p I toaskfor a container, anditjustwedon't worryabouthowthiscontaineriscreatedatall, howthevolumesaremountedandsoonandsoforth.
ResourceisultimatelyAndattheendofthesession, weusedtoterminateeacheasytowitnesses, um, forEBSvolumeandget a differenthostnamenexttimeandeverything.
Andrightnowweactuallyhavesomedetermineitsthathostnameperuser, nomatterwhatcontainertheusethankstosomereverseproxythat's implementedanapplicationrunninginthesameCubansclusterandtheclusters, theNSSwell, andfinallyweusedtoremove a C twoinnocentstoupdatethedoctorimageofremovethiseasytonursesfromthepooltowhat?
Thedoctorimage?
Well, nowwecandothatveryeasily, usingsomethingcalledthemensitincommunities, whichisessentially a containerthatrunsoneveryinnocents.
Here's a diagramofhowthisisimplementedonthecommunitiesCloserwehavethecloudnineenvironment, likebefore, connectsto a containerandseesyouin a sense, by S H, exceptthatwehave a proxyrightnowinthemiddlethathelpsresolvethis V Anishissueandallowustohave a deterministiccoastnameforeachuser, nomatterwhatcontainerthey'reusing.
Andthenthisis, ofcourse, allpartof a cluster.
Andthenweuseportworksforstorage.
Allright, so I guessonemaintakeawayherefromfromthistalkisthatwearekindofusingcommunitiesin a waythat's not, um, that's notusuallythatit's notusuallyusedfor, butit's lendingitselfreallynicelytoourimplementations.
Soitturnsoutthatsomeusers, somebadpeopleoutthereintheworld, usedthe I d forthingsthatit's notmeanttobeused, forexample, toBethCoalmineortwo D lost a serversomewhere.