Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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


November 11, 2014

More Decks by GoogleCloudPlatform

Other Decks in Technology


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

    integrate? Alternate design options 1 2 3 Agenda 4 5
  2. • Take pictures and share them with friends • Comment

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

    All image formats accepted • Only WEBP served • Fast, scalable, fun
  4. Abelana Server Requirements • Autoscale - Ready for success •

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

    Fully Managed Platform & Services • Micro-services Framework • Just bring your application code / Dockerfile
  6. 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
  7. • 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/
  8. • 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
  9. Storage Requirements • Storage for Image uploads and processed Images

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

    Object notifications Google Cloud Storage
  11. 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
  12. • Managed NoSQL Datastore • Native access from App Engine

    • Built-in redundancy • Autoscale Google Cloud Datastore
  13. 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
  14. 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
  15. 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
  16. • Simple API + Minimal Coding ◦ Client Library Support

    ◦ Authentication via different providers • Reliable and highly available • Scalable Application Backend Integration Abelana App Abelana Server
  17. 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
  18. 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
  19. • 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
  20. • 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
  21. Wix Media by the Numbers 55 million 1.5 TB 1.5

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

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

    Workers Rembrandt Workers Cloud Storage Memcache Task Queue PubSub Datastore Metadata APIs GLB CDN
  24. 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