"building high performance search feature" by setyo legowo (urbanindo)
TRANSCRIPT
BuildingHighPerformanceSearchFeatureMobileDevelopmentStageTechinAsiaProductDevelopmentConference2017
August10th,2017
WhoamI?
• SetyoLegowo (@setyolegowo)
• CurrentlyworkasSoftwareEngineerinUrbanindo
• InformaticsgraduatefromInstitut Teknologi Bandung(ITB)
TechinAsia- PDC17,MobileDevStage
Outline
• Whysearchfeaturematter
• Allaboutapplicationperformance
• Performancetesting
• Tipsforoptimizations
TechinAsia- PDC17,MobileDevStage
TechinAsia- PDC17,MobileDevStage
Product NameKey / Terms Driver
List of ProductRelevance sites Closest driver
TechinAsia- PDC17,MobileDevStage
Input
Search result
Challenges
• Use-casesvariation
• Bugs
• Missioncriticalfeature
TechinAsia- PDC17,MobileDevStage
“3”PerformanceIndicators
Memory
TechinAsia- PDC17,MobileDevStage
Processor
I/Oo Loadsearchresultand
assetstomemoryo Cachingo Compression
o Queryo Context
o Renderassetso CPUutilizationo Concurrency
Relevance
o Serverresponsetimeo Datausageo Offline
LazyLoad
• Loadorrenderwhatneededtobeappearedonthescreen
• Mostlydelayloadingonassetsimage;pagingsearchresult(occasionally)
TechinAsia- PDC17,MobileDevStage
Cache(Client)
• Saveassetsintoapplocalstorage,butdonotsaveallofit
• Veryusefulwhenoffline
• “Garbagecollection”strategy• Reusehighfrequencyloadedassets
• Specificcachestrategywhichparallelwithbusiness
TechinAsia- PDC17,MobileDevStage
Cache(Server)
• UseContentDeliveryNetwork(CDN)• Lowbandwidthand/orCPUusagetoserver
• Cachehighfrequencyqueryanditsresultset• Cachemustbefasterthandatabase
• Easytomaintainifthecachedatabasecomplementwithusecase
TechinAsia- PDC17,MobileDevStage
Concurrency
• Process/renderin“parallel”
• Pooltheprocessorthethreads• Betterifusethrottlingorqueuemechanism
• ThinktheprocessinDirectedAcyclicGraph
TechinAsia- PDC17,MobileDevStage
TechinAsia- PDC17,MobileDevStage
Source:https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Directed_acyclic_graph.svg/800px-Directed_acyclic_graph.svg.png
Compression
• Compressassetsasmuchasyoucan
• Minimizestoragespaceusage
• Reducedatatransfercost
• Usebinarydatatransfer insteadofalphabetbase
• Disadvantages:usemoreCPU
TechinAsia- PDC17,MobileDevStage
SearchResultRelevance
• Usequerylanguage
• Pronetoambiguous
• Advance:Usetextsimilarityalgorithm
TechinAsia- PDC17,MobileDevStage
Thereareanydrawbacks?
• Architecturetendtobemorecomplex
• Optimizationtendstomakecodehardertounderstandand
maintain
• Overfocusoninsignificantperformanceimprovement
TechinAsia- PDC17,MobileDevStage
PerformanceTesting
• Definethemetrics(e.g.SLA)andobeytoit
• Applicationprofiling
• Findbottleneckorhotspot
TechinAsia- PDC17,MobileDevStage
TipsforOptimization(ingeneral)
• Findthebottleneck/hotspotasearlyaspossible
• Follow80/20rules
• Definemetrics• Numberof search,uniquesearch,result,…
• Measuretherightloadbetweenmemory,CPU,andI/O
• Cleancode
TechinAsia- PDC17,MobileDevStage
TipsforOptimization(searchfeature)
• Progressiveupdate• Rendersearchresulteagerly“only”theappearedcontentorpanel
• Cacheasmuchaspossible
• Abletoruninofflinemode
TechinAsia- PDC17,MobileDevStage
Anyquestion?
TechinAsia- PDC17,MobileDevStage
ThankYou
TechinAsia- PDC17,MobileDevStage