real world experiences with http/2 (michael gooding, javier garza from akamai)

67
HTTP/2 (h2) in the real world Michael Gooding @Michael_G_81 Javier Garza @jjaviergarza

Upload: javier-garza

Post on 15-Apr-2017

603 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

HTTP/2 (h2) in the real world

Michael Gooding@Michael_G_81

Javier Garza@jjaviergarza

Page 2: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

18Feb2015

Page 3: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

ConflictinUkrainecontinued

Picture:AFP/GettyImages

Page 4: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

HeavysnowinIstanbulcausesairportclosure

Picture:AFP/GettyImages

Page 5: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

RelativesofmissingflightMH370passengersprotestinMalaysia

Picture:AFP/GettyImages

Page 6: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

PeopleinFinlandcelebratedChineseNewYear

Picture:EPA

Page 7: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

InHollandaTigercubgoesoutsideforthefirsttime!

Picture:Europics

Page 8: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Page 9: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Page 10: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

MichaelGooding:PerformanceSpecialistJavierGarza:EnterpriseArchitect(h2evangelist)1. H2Performance

i. Measurementii. Renderingiii. Smallfilesiv. Sprites

2. Summary

Page 11: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Performancei. Measurementii. Renderingiii. Smallfilesiv. Sprites

Page 12: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

AkamaiRealUserMonitoring(RUM)1.Billionsbeaconscollectedperday2.Somesitesseegoodimprovements3.Somesitesdon’t!4.3rd Partycontentwatersdownbenefit5.A/Btesting6.Browsersbehavedifferently7.Networkconditionsvaryresults

Page 13: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Networkvariationsfornon-cellularconnections

seconds

%users

h1 h2

Page 14: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Networkvariationsforcellularconnections

seconds

%users

h1 h2

Page 15: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

ReallatencyvsSimulatedlatency,h1vsh2,ChromevsFirefox

1.Testrealcitieswithreallatency2.Testusingsyntheticlatencyfromdulles3.UsingChromeandFirefoxagents(h2on/off)4.TensofthousandsofWPTtests

UsingWebpagetest.org (WPT)tomeasureLatency

Page 16: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

UsingWPTtomeasure(RealvsSimulated)Latency

Lessonslearned:

• Can’ttrustsimulatedlatency

• Differencebetweenrealandsimulatedchangesbybrowsertoo

• BetterstickwithRUMtesting(moreworktocleanresults)

Page 17: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

UsingWPTtomeasurePacketLoss

Source: http://conferences.oreilly.com/velocity/devops-web-performance-ny/public/schedule/detail/51303 - https://goo.gl/MPndFs

h2performancesufferswithpacketloss

0%packetloss 2%packetloss h1 h2

0%packetloss 2%packetloss

Page 18: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Otherresearchstudiesonpacketloss

h2helpswithalotofsmallobjects TCPslowstartimpactsasingleconnectionwhendeliveringmorebytes

Source: https://www.akamai.com/us/en/multimedia/documents/technical-publication/http2-performance-in-cellular-networks.pdf > https://goo.gl/y0NYha

Page 19: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Performancei. Measurementii. Renderingiii. Smallfilesiv. Sprites

Page 20: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance- Rendering

h1

h2

h1

h2

4 sec

Page 21: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

What’stheproblem?Renderingwithdifferentprioritisation

Page 22: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance- Rendering:Sharding

h1

h2

1Domain

Allonsameconnection

2nd connectionopened

/js/css

www.website.com

/js/css

www.website.com

dns connection ssl ttfb d/load

Page 23: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance- Rendering:Sharding

cdn.website.com/jscdn.website.com/csswww.website.com

cdn.website.com/jscdn.website.com/csswww.website.com

h1

h2

2 Domains

h2

1Certificate

2Certificates

cdn.website.com/jscdn.website.com/csswww.website.com

dns connection ssl ttfb d/load

Page 24: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Rendering:Shardingexample

h2after

h2before

Simpleimprovementbynotmakingconnection

Page 25: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Rendering:Shardingexample

h2after

h2before

Page 26: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Rendering:Progressivejpegs

h2

normaljpeg

progressiveNormaljpegsjust60%loaded

Page 27: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Rendering:Progressivejpegexample

h2after

h2before

Page 28: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Rendering:DIYprioritisation

<imgonload="addImages();"src="tshirt12_thumb.jpg">

<script>functionaddImages(){;

var img=document.createElement("img");img.src="tshirt2.jpg";document.getElementById("imgholder").appendChild(img);

}</script>

Differentorderandloadedwithdependency

Page 29: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Renderingexample

Largeimagefillsbandwidth

Page 30: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Renderingexample

progjpg

h2before

jspriority

Page 31: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– RenderingexamplewithPush

2 sec1 sec

Push

progjpg

Page 32: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– RenderingexampleServerPush

h2push

progjpg

Page 33: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Rendering:Serverpushbadexample

h2push

h2before

Page 34: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

RenderingSummary1. Keepcriticalcontentonsamedomain2. Ifyouneedtoshardtobalanceh1usethesamecert3. Progressivejpgscanhelprendering4. UseJavaScriptifyouneedtodelayresources5. Useserverpushwhereyoucan

Page 35: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Performancei. Measurementii. Renderingiii. Smallfilesiv. Sprites

Page 36: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:CSSCSSbytesdownloaded(gzip off)

H2issmallerbecauseofheadercompression

h1 h2

#offiles

bytes

Page 37: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:CSSh2performancecomparison h

#offiles

time

Page 38: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:CSSh2performancecomparison- Chrome h

#offiles

time

h1 h2

H2isfaster,especiallyasyouincreasethenumberoffiles

Smallernumberoffilesisfastertoload

Page 39: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:CSSh2performancecomparison- Firefox h

#offiles

time

h1 h2

H2isslowerinFFafter~100files

Smallernumberoffilesisfastertoloadforh1andh2

Page 40: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:CSSh2performancecomparison– SafariMobile h

#offiles

time

h1 h2

H2isfaster,especiallyasyouincreasethenumberoffiles

Smallernumberoffilesisfastertoload

Page 41: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:CSSh2performancecomparison– ChromeMobile h

#offiles

time

h1 h2

H2isfaster,butstruggles>500files

Page 42: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:CSSToomanyfilescausesproblemsinChrome

???

Page 43: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfilesexample

Networknotmuchdifferent

h2after

h2before

Page 44: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfilesexample

h2after

h2before

Resultinbrowserisbig

Page 45: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:JSh2performancecomparison h

#offiles

time

Page 46: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:JSWhataboutrendering? h

h1 h2

Page 47: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:JSexample

Networkresultsprettysimilar

h2after

h2before

Page 48: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– Smallfiles:JSexample

Fasterrenderinginbrowser

h2after

h2before

Page 49: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

SmallfilesSummary1. h2ismoreefficientinmostbrowsers2. NOTfasterdealingwithmanyfiles3. Keepcombiningfiles,sameash14. 2or3isok,basedonfrequencyofchange

Page 50: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Performancei. Measurementii. Renderingiii. Smallfilesiv. Sprites

Page 51: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesh2performancecomparison h

#offiles

time

mob-SafariX

Page 52: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesh2performancecomparison- Chrome h

#offiles

time

h1 h2

Differencebetweenh1andh2isalmostnonexistentforimages

Smallernumberoffilesisfastertoloadforbothprotocols

Page 53: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesh2performancecomparison- Firefox h

#offiles

time

h1 h2

h2isonlyslightlyslowerinFF

Smallernumberoffilesisfastertoloadforh1andh2

Page 54: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesh2performancecomparison– SafariMobile h

#offiles

time

h1 h2

h2justbreaks>200files

Smallernumberoffilesisfastertoload

Page 55: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesh2performancecomparison– SafariMobile h h2

HardertodebugoniPhone,couldbe:1. Maxstreams2. Memory3. CPU

Page 56: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesh2performancecomparison– ChromeMobile h

#offiles

time

h1 h2

h2performanceismixedforChromeMobile

Page 57: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesVisualexperienceofloadingthepage

h1 h2

Page 58: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSprites

Otherconsiderations1. Managementcomplexity2. Caching3. Imagesusedinsprite

Page 59: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesexample

Page 60: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesexample

h2images

h2sprite

Loaddifferencemuchlesswithsprite

Page 61: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Performance– ImageSpritesexample

#ofimagesused

Load

time(m

s)

#sprite19{background:url('images/sprite.png')no-repeat-17px0;}

#image19{background:url('sprite/sprite19.png')no-repeat;}

0

70

140

sprite 1 5 10 20 30 40

code

imgused

Page 62: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

SpriteSummary1. Keepusingspritesforperformance,especiallymobile2. Ifyouareonlyusingafewimagesfilesareok3. Thinkaboutmanagementcost4. Thinkaboutfrequencyofchange5. Mobiledecodingtimescanbeslowandhasissueswith

largenumbersoffiles

Page 63: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Mostofthetimesh2improvesperformanceDon’tgiveupifitdoesn’tAnti-patternsaren’tanti-patterns

1. Don’tshardcriticalcontent2. Keepcombiningfiles3. Keepusingsprites(ifyouuseenoughimages)

EverythingisevolvingFAST(servers,browsers,QUIC)

Page 64: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

Avoid data theft and downtime by extending the security perimeter outside the data-center and protect from increasing frequency, scale and sophistication of web attacks.

Shamelessplug

https://goo.gl/3ZVNN8

Page 65: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

1. Turnh2on2. Measure3. Experiment4. Share

Whatifwecouldsave1secondoneverypagethiswomanviewsinaday?(50pageviews/day)

Page 66: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

©2016 AKAMAI | FASTER FORWARDTM

1sec/pagex50/dayx365=5hours/year

5 sec/page=25hours/year

Page 67: Real world experiences with HTTP/2 (Michael Gooding, Javier Garza from Akamai)

Questions?

Michael Gooding@Michael_G_81

uk.linkedin.com/in/mgooding1981

Javier Garza@jjaviergarza

www.linkedin.com/in/jjgarza