Dojo4:s sista projekt med Stand Up to Cancer (SU2C) hjälpte dem att samla in över 100 miljoner dollar på en telethon. En månad senare arbetar vi återigen med SU2C; den här gången samarbetar de med Major League Baseball för att samla in pengar under World Series!
SU2C kom till oss med ett problem - MLB presenterar SU2C och kampen mot cancer under Match 3 av World Series (imorgon - fredag, 24 okt)! De ville förbättra en app som vi byggde för dem för några månader sedan som låter människor göra en hyllning till en kär anhörig som drabbats av cancer: #istandupfor.
Vi byggde ursprungligen appen som en responsiv webbplats där människor kunde ladda upp en bild, skriva en tillägnan, dela sin hyllning på sociala medier och presenteras i SU2C:s galleri. Med den nya synligheten från Major League Baseball ville SU2C ta appen till en helt ny nivå. Så vi gick tillbaka till ritbordet.
Här är kraven:
- hantera massor av trafik! MLB World Series är en internationell händelse med miljoner av tittare. När de nämner #istandupfor-rörelsen kommer vi att se en stor trafikhöjning.
- ha ett inbyggt app-närvaro! Det fanns en äldre version av #istandupfor i iOS App Store, men den behövde uppdateras och det fanns ingen Android-applikation. Vi behövde låta människor hedra sina kära och dela sin hyllning på sina mobila enheter också.
- hålla underhållet till ett minimum SU2C:s mål är att samla in pengar till cancerforskning, inte att ha 3 olika appar att underhålla för samma #istandupfor-rörelse.
Så här gjorde vi:
låt skalningen till experterna
Att försöka hantera belastningen av en enorm mängd trafik direkt på våra servrar är en direkt biljett till stressade utvecklare som desperat fixar buggar och låter användare hänga när de försöker bidra till den fantastiska SU2C-gemenskapen. Vem är bra på att hantera enorma mängder uppladdningar? Amazon S3.
Så istället för att kräva att en av våra EC2 webbservrar är uppe och fungerar, laddar appar upp bilder och all nödvändig information om en hyllning (tillägnan, e-post, osv i en liten json-fil) direkt till AWS S3. Webbversionen av #istandupfor laddade redan upp bilder till S3, så refactoringen var minimal. Amazon har även inbyggt stöd för mobila appar för S3-uppladdningar med SDK:er för iOS och Android.
Därefter kontrollerar våra EC2-servrar bara periodiskt S3 för nya hyllningsuppladdningar och bearbetar dem i vår centrala databas för att visa enskilda hyllningar online (tänk på delning på sociala medier) och för SU2C att godkänna och lägga till i galleriet. Våra användare kommer alltid kunna skapa hyllningar oavsett vilken plattform de använder (webb, iOS eller android), tack vare S3 & CloudFront.
Vi hade en konferens med AWS (tack till David och Nathaniel!) för att säkerställa att vår plan var solid och de var eniga om att det var den bästa lösningen. Ingenjörerna på AWS vet exakt hur man hanterar tusentals förfrågningar per sekund utan att något går sönder, så vi lät dem.
hybrida inbyggda appar
SU2C ville ha ett inbyggt app-närvaro, men ville även undvika mycket underhåll framöver. Appbutikerna är fantastiska distributionsmekanismer, men innehåller många hinder att hoppa över. Att gå igenom dessa hinder en gång är mycket lättare att hantera än att behöva gå igenom dem varje gång en ändring krävs i applikationerna.
Så vi använde våra iOS & Android-startpunkter, Imbed, för att skapa inbyggda iOS- och Android-applikationer som använder en webbvy för att ladda applikationen. De inbyggda wrapparna tillhandahåller JavaScript-hanterare som utlöser inbyggd kod, så vi kan skapa vilken inbyggd kod vi behöver (i det här fallet var majoriteten av den inbyggda koden att välja en bild från enheten och ladda upp den till AWS S3 via AWS SDK:er) och sedan anropa den inbyggda koden via en webbsida som laddats inom appen. Den webbsidan är fortfarande en webbsida, så vi kan göra uppdateringar av den, publicera den live och appen kommer att uppdateras utan att någonsin behöva hoppa över appbutikshinder igen.
Kolla in Android-appen på Google Play och iOS-appen i Apple App Store!
Vi älskar att arbeta med SU2C. Inte bara samlar de in bajiljoner för att bekämpa cancer, de är också supertrevliga och fantastiska att arbeta med. Vi kan inte vänta på att se resultaten av imorgons match - ladda ner appen och donera!