kill the spinning wheel with golgi - up to 20x faster loading and startup times for apps
TRANSCRIPT
Kill theSpinningWheel20x acceleration in loading and startup times of Apps
Golgi accelerates app startup and loading times by up to 20x by managing the complete process of data transport between apps and between apps and servers
• Golgi apps have no spinning wheel because Golgi pushes content to apps in the background and when users startup a Golgi app the content is fresh. Golgi apps are unlike other apps which download their new content on app startup and show the spinning wheel while downloading. This spinning wheel can take many seconds to a minute depending on wireless bandwidth and the size of content being retrieved.
• With changes in connection types and speeds and even broken connections Golgi’s layer ensures app contentisdeliveredbyacombinationofretryandpushnotification,againeliminatingtheloadingtime
• TheGolgiserverfarmisspreadacrossUSA,EuropeandAsia.Thisoffersmaximumspeedinapp-to-appandapp-to-severtransportandensurestheshortestroutebetweenappsandapps/seversisalwaystaken.Thisgeo-basedroutingalsodeliversredundancyandreliability.
• TheGolgiplatformishighlyscalable,withelasticityondemandprocessing.Golgiisbuiltuponaplatform that is already processing over 1B mobile moments every day
Additionaldifferentiatorsaboutourservice:
• GolgiimplementsprogrammerdefineddatatypesandfunctionsbyenablingDeveloperstospecifytheirownservicesusingtheGolgiDefinitionFile(Thriftbased).Golgialsoallowsdeveloperstoupdatetheservicedefinitionwithoutbreakingalreadydeployedapps.Deep-linking:deliveringyourdevelopersspecificcontentintotheirapps
• FlexiblecodeusingGolgiDefinitionFile(Thriftbased)sothatdeveloperscanaddspecificcalls(suchaslocation)totheirupdateswithoutbreakingalreadydeployedapps
• ProvidenativecodegenerationforAndroid,iOSandJavaServers
• ProvideshigherlevelofsecuritywithTSL,compared to the standard SSL standard method that is often used
struct Message{ // options of bool, byte, i16, i32 1:required string myMsg // i64, double, string} // easily extensible with backward compatibility service golgiExample{ Message Chat(1:Message myMsg2u)}
Golgi Definition File (Thrift based)
Message myMsg2u = new Message(); // creating new Message ObjectmyMsg2u.setMyMsg(“Hello World”); // setting content of messageString myFriend = “+16501234567”; // developer defined namespaceChat.sendTo(myChatReplyHandler, myFriend, myMsg2u); // Void with Asynchronous Response
Use of Class in Sender (Android Java)
Chat.RequestReceiver myChatHandler = new Chat.RequestReceiver(){ @Override public void receiveFrom(Chat.ResultSender resultSender, Message rxMsg) { System.out.println(rxMsg); // Print out received message Message myReply = new Message(); // Create reply myReply.setMyMsg(“Hello you!”); // Populate reply resultSender.success(myReply); // Send Reply with Success }};Chat.registerReceiver(myChatHandler()); // Register Handler with Golgi
Use of Class in Receiver (Android Java)
Asadeveloper,defineyourdataserviceusingtheGolgiDefinitionFile,whichisbasedonThrift.Thisis a fast and easy way to tell Golgi what you want tocommunicate.GolgiusesthisDefinitionFiletogeneratetype-safenativeAPIcodeforAndroidandiOSenvironmentsforeasyimplementation.SimplyincorporatethesesimpleAPIfunctioncallsintoyourapp and enable Golgi to manage the transportation of your data.
Inamobile-to-mobilescenario,theAppwillmakeaconnection to the Golgi platform and then send the payload. The Golgi platform determines whether theenddeviceisAndroidoriOSandsendsthecorrespondingpushnotificationtowakeitup.TherecipientdevicethenconnectstotheGolgiplatform,receives its data and returns a response. The Golgi
ExampleGolgiCode:
How does it Work?
TheGolgiDefinitionFilespecifiesaservicecalled“Chat”forsendingandreceiving“Messages”betweenappsandserv-ers.TheSendercallsChat.sentTo()tosendthemessageandthereceiversetsupareceiveFrom()inregisterReceiver()toreceivethe“Message”.
InthisspecificexampletheSendersends“HelloWorld”to“+1650123457”,whichisreceivedbythereceiverandthereceiversends“Helloyou!”backtothesender.
platform then connects to the original device and sends it theresult.Amobiletoserverscenarioisverysimilar,butwithapersistentIPconnectionbetweentheGolgiplatformand the external server.
AlltransactionsuseTLSandend-to-endencryptionproviding the highest level of security to safeguard your data. The Golgi server farm is spread across three geographicregions–USA,EuropeandAsiaformaximumredundancy and reliability and App data transport speed andefficiency.
Golgi manages all of the orchestration of data transport and exchange,thepushnotificationsandeverythingneededtogetdatafromoneendpointtoanother,includinghandlingall of the real world problems that may happen in a mobile context–connectionfailure,lackofresponses,etc.
GolgiFrontend
USA
Golgi Server Farm
Europe
Geo-based Routing
Golgi
Asia
GolgiFrontend
GolgiFrontend
GolgiServer
GolgiServer
GolgiServer
About Golgi
Golgi(pronouncedGol-G)wasestablishedinJanuary2014,fundedwith$5millionbyOpenmind(www.openmindnetworks.com),aleadingplayerinthemobilecommunicationspace.AtOpenmind,theteamspentover10yearsdeliveringbillionsofmobilemomentstodeviceseveryday,ofteninchallengingwirelessenvironments.Duringaseriesofappdevelopmentprojectsstartingin2010,Openmindrealizedthathavingtore-writeandfine-tunecustomdatatransfercodeforeachappwasfrustrating,timeconsuming,errorproneandlackedextensibility.
Golgi Solution Architecture
GolgiServerFarm
How are we different?
Golgi is unique. We manage data transport for your Apps. We are different because we:
• Implementprogrammerdefineddatatypesandfunctions• Offerdeep-linking;deliveringyourcontentintospecificareas
of your apps • EasilyExtensibleusingGolgiDefinitionFile(Thriftbased)• ProvidenativecodegenerationforAndroid,iOS
andJavaServers• Includestoreandforwardfunctionalityinsteadofpublish/
subscribe as utilized by other toolkits available today
www.golgi.io©CopyrightOpenmindNetworks2014