MBL203 Building a Mobile Application Platform on AWS - AWS re: Invent 2012

  • 903 views
Uploaded on

Get under the hood with Parse.com’s founder to see how they used AWS to build their mobile Platform as a Service. In this session, you learn how Parse is using a variety of AWS services including …

Get under the hood with Parse.com’s founder to see how they used AWS to build their mobile Platform as a Service. In this session, you learn how Parse is using a variety of AWS services including Amazon EC2, S3, ELB, EBS and Route53 to build data storage, push, and easy upload services for mobile developers.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
903
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Building Parse on AWSCloud Services for Mobile Developers
  • 2. Agenda• Why did we start?• What did we build?• How does it work?• What challenges did we face?
  • 3. What is Parse? A better way to build mobile applications.
  • 4. Why?• Mobile development is painful• Mobile development is repetitive• Mobile development is expensive
  • 5. Why?• Many devices• Many gatekeepers• Front end matters, backend - not as much.
  • 6. PFObject *score = [PFObject objectWithClassName:@"Score"];[score setObject:@1337 forKey:@"points"];[score setObject:@"Ilya" forKey:@"playerName"];[score saveInBackground];
  • 7. ParsePush push = new ParsePush();push.setMessage("The new Galaxy Nexus is out!");push.sendInBackground();
  • 8. PFUser *user = [PFUser user];user.username = @"mario";user.password = @"mushroomkingdom";[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {if (!error) { // Hooray! Let them use the app now.}}];
  • 9. Parse.Cloud.define("averageStars", function(request, response) { var query = new Parse.Query("Review"); query.equalTo("movie", request.params.movie); query.find({ success: function(results) { var sum = 0; for (var i = 0; i < results.length; ++i) { sum += results[i].get("stars"); } response.success(sum / results.length); }, error: function() { response.error("movie lookup failed"); } });});
  • 10. var twilio = require("twilio");twilio.initialize("twilioAccountSid", "twilioAuthToken");Parse.Cloud.define("myTwilioFunction", function(request, response) { twilio.sendSMS({ From: "+14151231234", To: "+14151234321", Body: "Hello from Cloud Code!" }, { success: function(httpResponse) { response.success("SMS sent!"); }, error: function(httpResponse) { response.error("Uh oh, something went wrong"); } });});
  • 11. Who’s using it?• 40,000+ apps• Billions of API requests per month• Hundreds of millions of pushes per month
  • 12. Who’s using it?• Home Depot• Tom’s Shoes• Food Network• Travel Channel• Green Bay Packers• Armani• many more mobile games, utilities, enterprises, etc.
  • 13. How does Parse Data work?PFObject *score = [PFObject objectWithClassName:@"Score"];[score setObject:@1337 forKey:@"points"];[score setObject:@"Ilya" forKey:@"playerName"];[score saveInBackground];
  • 14. How does Parse Push work? ParsePush push = new ParsePush(); push.setMessage("The new Galaxy Nexus is out!"); push.sendInBackground();
  • 15. How does Cloud Code work? Parse.Cloud.define("averageStars", function(request, response) { var query = new Parse.Query("Review"); query.equalTo("movie", request.params.movie); query.find({ success: function(results) { var sum = 0; for (var i = 0; i < results.length; ++i) { sum += results[i].get("stars"); } response.success(sum / results.length); }, error: function() { response.error("movie lookup failed"); } }); });
  • 16. AWS Challenges• Resiliency to zone failures• EBS performance• Visibility• Chef’ing everything
  • 17. Resiliency• Multi-zone everything• ELB everything• Moving to RDS for MySQL
  • 18. EBS Performance
  • 19. EBS Performance
  • 20. Visibility
  • 21. Visibility
  • 22. Chef’ing everything• Stamping images with every deploy.• Push button for increasing Mongo capacity.• Route53 API to auto-register DNS for every new node.
  • 23. Future Challenges More responsive autoscaling.
  • 24. Future ChallengesBalancing cost control vs. slack capacity.
  • 25. Future Challenges Going multi-region.
  • 26. Questions? ilya@parse.com