Building Applications on Google Cloud Platform

Building Applications on Google Cloud Platform

This deck looks at how to build a mobile application and backend from Scratch on Google Cloud Platform and covers Wix Media Platform. This talk was first delivered at The WebSummit in Dublin 2014

42ff40d0d729d86739df5ede5591d4f1?s=128

GoogleCloudPlatform

November 11, 2014
Tweet

Transcript

  1. Building Applications on Google Cloud Platform

  2. Design considerations Where to run? Where to store? How to

    integrate? Alternate design options 1 2 3 Agenda 4 5
  3. Design considerations

  4. • Take pictures and share them with friends • Comment

    on your friends’ pictures • Let them know you like them! Abelana Photo Sharing
  5. Technical features • Android app • Multiple authentication providers •

    All image formats accepted • Only WEBP served • Fast, scalable, fun
  6. Abelana App Storage Image formatter Abelana Server Abelana architecture

  7. Abelana architecture Abelana App Storage Image formatter Abelana Server

  8. Abelana Server Requirements • Autoscale - Ready for success •

    Rapid development • Zero management • Allows for modular App design Abelana Server
  9. Google App Engine • Automatic resource provisioning and configuration •

    Fully Managed Platform & Services • Micro-services Framework • Just bring your application code / Dockerfile
  10. Factor large Apps into micro- services Modules within an App:

    • Can share state • Communicate Securely • Have individual performance settings and Versions • Can be written in different languages • Can be backed by Compute Engine VMs (Managed VMs) Module Module Module Version Version Version Version VM Instance Instance Version Version VM Instance App App Engine Modules
  11. Abelana App Storage Image formatter Abelana Server Abelana architecture

  12. • Create, edit, compose, or convert bitmap images • Supports

    multiple image formats • Available as a Library and command line tool • Written in C ImageMagick http://www.imagemagick.org/
  13. • App Engine productivity - on VMs ◦ More flexible,

    powerful • Bring your own ◦ Dependencies ◦ Runtime (Docker container) • What’s new? ◦ Load Balancing ◦ Autoscaling ◦ Cloud SDK Integration • … in Beta today (<add URL>) App Engine Managed VMs now in Beta
  14. Abelana App Storage Abelana Server Abelana architecture Image formatter

  15. Abelana Server Architecture Endpoints Timeline Manager Notice Abelana ImageMagick

  16. Abelana architecture Abelana App Storage Image formatter Abelana Server

  17. Storage Requirements • Storage for Image uploads and processed Images

    ◦ Storage Buckets ◦ Direct access from Mobile App ◦ Notification of new Images Storage
  18. • Bucket based Object store • Simple HTTP API •

    Object notifications Google Cloud Storage
  19. Abelana App Storage Image formatter Abelana Server Abelana architecture

  20. Storage Requirements • Storage for Image uploads and processing ◦

    Notification of new Images ◦ Direct access from Mobile App • Application Level Data: Users, Comments, Photos, etc ◦ Scalable, Managed, Easy to Use Storage
  21. • Managed NoSQL Datastore • Native access from App Engine

    • Built-in redundancy • Autoscale Google Cloud Datastore
  22. Abelana App Storage Image formatter Abelana Server Abelana architecture

  23. Storage Requirements • Storage for Image uploads and processing ◦

    Notification of new Images ◦ Direct access from Mobile App • Application Level Data: Users, Comments, Images, etc ◦ Scalable, managed, Easy of Use • Counter for Likes. Storage for generated timelines Storage
  24. Redis • Key-value cache and store ◦ Fast, in-memory access

    • Values can be rich data types ◦ lists, sets & sorted sets, etc ◦ Great for Counters • Click to Deploy on GCP https://redis.io
  25. Redis Click to Deploy • Configure a Redis Cluster in

    seconds • Specify ◦ Node count ◦ Virtual Machine type [Optional] ◦ Number of persistent nodes [Optional] https://cloud.google.com/solutions/redis/click-to-deploy
  26. Abelana App Storage Image formatter Abelana Server Abelana architecture

  27. How to integrate?

  28. Abelana App Storage Image formatter Abelana Server Abelana architecture

  29. • Simple API + Minimal Coding ◦ Client Library Support

    ◦ Authentication via different providers • Reliable and highly available • Scalable Application Backend Integration Abelana App Abelana Server
  30. iOS Cloud Endpoints • Create APIs for Mobile and Gaming

    Backends • Decorate client interface application code or generate Endpoint classes from Models • Discoverable, Restful APIs implemented on top of Google’s API Infrastructure • Tools for generating mobile optimized Client Libraries for Android, iOS and Web • OAuth 2.0 support and client key management Cloud Endpoints Abelana Server
  31. Java - App Engine @Api(name=”comment” version=”v1”) public class CommentsEndpoint @ApiMethod(httpMethod

    = "GET", path = "{personid}/{photoid}") public List<Comment> getComments( @Named("photoid") long photoId, @Named(“personid”) long personId) throws UnauthorizedException, NotFoundException { List<Comment> results = comments.query(personId, photoId); return results; } } // REST call = /comment/v1/{userid}/{photoid} public class CommentsTask extends ServiceTask<Void> { protected void executeEndpointCall() { service.commentsEndpoint().getComments(photoId, personId).execute(); } Android App
  32. Firebase: Realtime Application Platform Realtime Database User Management Hosting

  33. Abelana App Storage Image formatter Abelana Server Abelana architecture

  34. • Automatic notification of new images • Background Processing -

    Outside of User Request • Queue based system ◦ Auto retry ◦ Rate configurable • Minimal configuration and management Image Formatter / Storage Integration Storage Image formatter Abelana Server
  35. • Allow work to be performed outside of a user

    request • Push or Pull based queueing system • Automatic Retries + Exponential backoff • Close to zero configuration App Engine Task queues
  36. Image Processing Flow Worker Task Queue /process_image?url=http://storage.googleapis.com/images-in/... Abelana Server Uploaded

    Images Bucket Object Notifications Processed Images Bucket
  37. Abelana App Storage Image formatter Abelana Server Abelana architecture VM

    VM VM Instance Group
  38. Alternate Design Options Wix Media Platform http://wixmp.com/google

  39. Abelana App Storage Image formatter Abelana Server Abelana architecture VM

    VM VM Instance Group
  40. Abelana Server Abelana architecture Abelana App Wix Media Platform

  41. None
  42. Wix Media by the Numbers 55 million 1.5 TB 1.5

    billion 35 TB Users Daily Uploads Daily Requests Daily Bandwidth
  43. Wix Media Platform • Real-time Image Manipulation • Audio and

    Video transcoding • CDN • Media Manager and Playground • SDKs
  44. App Engine Media Manager Compute Engine Runtime App Transcoders NORM

    Workers Rembrandt Workers Cloud Storage Memcache Task Queue PubSub Datastore Metadata APIs GLB CDN
  45. The world’s fastest, most reliable media management system Available today

    for GCP
  46. Primary Design Considerations: • Where best to run your application

    components • Where to store various types of data • How to effectively integrate the various components of your app Use a Modular Design for flexibility, use Managed Services where possible Wix Media Platform is a collection of services for storing, serving, uploading, and managing image, audio, and video files. Google Cloud Platform has everything you need to design and build applications Key Takeaways
  47. Thanks! cloud.google.com