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

Building Blocks for Product Development

Building Blocks for Product Development

The frontend frameworks and libraries have taken huge leaps forward. But to unleash our full potential to build great products, we must also upgrade the supporting stack below to better serve our needs.

Presented at Frontend.fi February Meetup.

Ville Immonen

February 15, 2016
Tweet

More Decks by Ville Immonen

Other Decks in Programming

Transcript

  1. isomorphic universal
 cross-platform
 hot-reloadable
 functional reactive predictable
 JavaScript Frontend Backend

    RESTful, Nginx, Node.js, Ruby, Python, Java, Scala, Clojure, Go, PostgresSQL, MySQL, MongoDB, Cassandra, Redis, RabbitMQ, CoreOS, Ansible, Docker
 microservices Here be dragons
  2. 2011 2016 Spin up a server
 Install Linux Install NGINX


    Configure NGINX
 Deploy code/assets
 Maintain, monitor Surge
  3. > surge Surge - surge.sh email: [email protected] token: ***************** project

    path: /Users/ville/Projects/reindex- starter-kit/public size: 3 files, 4.3 MB domain: squealing-land.surge.sh upload: [====================] 100% propagate on CDN: [====================] 100% plan: Free users: [email protected] IP address: 192.241.214.148 Success! Project is published and running at squealing-land.surge.sh > npm install -g surge
  4. 2011 2016 Code signup, login &
 reset password pages
 


    Code password storage (secure!),
 email sending, API…
 
 Deploy, maintain, monitor
  5. 2011 2016 Code a backend with Rails/Node.js/Clojure/ Java… Deploy the

    backend
 
 Deploy a database
 
 Maintain, monitor, administer
  6. 2011 2016 Code a backend with Rails/Node.js/Clojure/ Java… Deploy the

    backend
 
 Deploy a database
 
 Maintain, monitor, administer
  7. API

  8. 2011 2016 Design a RESTful API Build the endpoints using

    a web framework
 
 Write a client library, client-side cache and plumbing GraphQL
  9. JSON { “speaker”: { “id”: 3, “name”: “Ville” “handle”: “@VilleImmonen”,

    “talks”: [{ “title”: “Building Blocks”, “event”: { “date”: “2016-02-15” } }] } }
  10. JSON { “speaker”: { “id”: 3, “name”: “Ville” “handle”: “@VilleImmonen”,

    “talks”: [{ “title”: “Building Blocks”, “event”: { “date”: “2016-02-15” } }] } }
  11. JSON { “speaker”: { “id”: 3, “name”: “Ville” “handle”: “@VilleImmonen”,

    “talks”: [{ “title”: “Building Blocks”, “event”: { “date”: “2016-02-15” } }] } }
  12. 2011 2016 Client-side: preview, cropping, iframes/Flash for cross-domain… Server-side: queue/handle

    uploads,
 process with ImageMagick,
 store to S3 CDN for efficient delivery
  13. 2011 2016 Install Elasticsearch Implement indexing, client-facing API,
 API client

    and client-side cache Try to make it fast Deploy, maintain and monitor