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

Technologies to build Successful Products

Technologies to build Successful Products

Presentation slides for UNICON at NUS in Singapore, Feb 24th 2018.

Jacopo Daeli

February 24, 2018
Tweet

More Decks by Jacopo Daeli

Other Decks in Technology

Transcript

  1. Technologies to build successful (web) products Jacopo Daeli Lead Software

    Engineer @ GoDaddy UNICON, NUS Singapore, Feb 24th 2018
  2. Summary š Technologies to quickly build and easily maintain your

    product š Technologies to run and scale your product to millions of users
  3. Node.js š Node.js is a runtime for JavaScript š With

    Node you can run JS code server side š It has non-blocking I/O operations (Asynchronous) š It is event driven (Event Loop) š Event Loop is single threaded
  4. Node.js Event Loop š It allows Node to perform non-blocking

    I/O operations š It offloads operations to the System Kernel whenever possible š Modern Kernels are multi-threaded and they can handle multiple operations in background š When an operation completes, the Kernel tells Node so that the appropriate callback is added to the Poll Event Loop queue to be executed
  5. Node.js š It is the fastest growing open source platform

    in the world š Currently Node counts more than twice modules than is next competitor (Java) š Node.js has more than half million modules published š More than 450 new packages are published everyday Number of modules Source: http://www.modulecounts.com
  6. Node.js Node has an estimated 7M users and is consistently

    growing at 100% per year. Source: https://nodejs.org/metrics
  7. Node.js 81% (estimated) of the Node.js users have 3 years

    or less experience with Node. Source: https://nodejs.org/metrics
  8. Node.js is a Full Stack ecosystem š Web Frontend š

    Mobile & Tablets š Desktop š Cloud Backend š IoT Devices š 3rd Party API & SOA
  9. Node.js is a Full Stack ecosystem š Node is the

    perfect platform to deal with all these components š Node brings the accessibility and ubiquity of the web platform and of JavaScript to all these different areas š You can use Node in a variety of different places among relatively small teams
  10. Web Frontend š Web Frontend development has changed drastically in

    the past 20 years š The community developed amazing tools in Node.js and JavaScript to help developers build front-end applications
  11. Web Frontend š Babel for transpiling your JavaScript code š

    Standard and ESLint to maintain your code quality with ease š JSHint to help detecting errors and potential problems in your JavaScript code š Stylus, LESS, ect. for better writing CSS
  12. Web Frontend š There are so many tools, that the

    community wrote more tools to help you manage all these tools š Examples: Gulp, Browserify, WebPack, etc.
  13. React.js š It rethought about front-end framework very differently š

    The main idea is that a web framework should exists in this compiled chain where we have access to Node.js
  14. Mobile & Tablets š Apache Cordova, previously known as PhoneGap

    š Cordova brings the entire Web platform to iOS, Android and Windows Phone using Node š It is a Node tool chain that brings the entire Node ecosystem across all these different devices
  15. Desktop š Desktop Development is not dead š People still

    want to build Desktop applications š Github built Electron (ex- Atom Shell)
  16. Electron š Electron “merges” Chromium with Node.js š It brings

    the Web Platform and the entire Node ecosystem to Desktop Development š It allows developers to build cross-platform (Mac OS, Linux and Windows ) Desktop applications using HTML, JavaScript and CSS
  17. Cloud Backend š Node was built for Cloud Services š

    It always had a great Cloud story š Every well-known Cloud Provider supports Node out of the box and have a pretty good Node support š Example: Google App Engine, AWS Elastic Beanstalk, Heroku, etc.
  18. Serverless and Function as a Service š Nowadays we are

    moving into the Function as a Service (or Serverless) space š Developers can build their applications out of these discrete functions š Disclaimer !: these functions run on servers, but developers don’t have to worry about it
  19. Serverless and Function as a Service š Node has been

    supported since the beginning (Functions can be written in Node) by Cloud vendors because Node is optimized to run in a single process, with a limited memory space, and it is great to handle a lot of I/O operations š Node starts up quickly š These are very important requirements to successfully running in these Cloud Function services š Indeed, we need a really fast startup timing to be really efficient in a space with very limited resources š Moore’s Law still making computers faster, but we are keeping optimizing resources using less and less of a slice of that computer to run our applications
  20. IoT Devices š Everyone wants a button to do everything

    ! š Starting in 2012 the Node ecosystem started to see a big rise in Robots š People working at jQuery built a framework to build Robots in JS called “johnny-five” š Over 75 developers contributed to the project
  21. IoT Devices š IoT manufactures started to support Node natively

    on their products š Basically today, every new board that’s coming out as an integrated circuit for people’s IoT devices has first-class Node support š IoT manufactures know that the best way to bring developers to their platform is to bring the entire Node ecosystem to their platform as well
  22. 3rd Party API & SOA š Everyone uses APIs to

    build their applications today š For example, Twilio for Text Messages, Mixpanel for Analytics, Google Speech for Speech Recognition, etc. š Most of these API have Node support (SDK)
  23. Why I love working with Node š Node doesn’t simply

    making programming easier š Node drastically reduces the entry barrier for new developers to come into all these different spaces
  24. Docker š Docker is a Linux virtualization technology. It lets

    us package and ship our applications and everything it needs to execute into a standard format š Docker containers are similar to VMs. Our apps run on what seems to be a dedicated hardware instance. š Each container has its own virtualized Filesystem, Memory, Storage, CPU cycles, etc. š Each container is completely isolated from the other containers running on the same machine
  25. Docker š Docker, in contrast with classic VMs, virtualizes the

    Operating System Kernel, not the hardware. Therefore containers must run Linux. š Docker starts with a Linux Kernel that all containers use. Then it layers all the differences on top of the Kernel. Therefore containers do not run the entire operating system. This makes containers lean.
  26. Docker š Dockerfiles are like stackable bricks š We begin

    by saying what we we’re starting with, and then we describe only what’s different š Packaging apps in Docker containers allows your application to run the same in all your environments: development, staging, production, etc.
  27. Node+Docker Step 1. Write the Dockerfile Step 2. Build the

    Docker image Step 3. Run the Docker container
  28. Node+Docker Start with Node 8.x (Carbon) – It refers to

    another Dockerfile Install dependencies
  29. Node+Docker Start with Node 8.x (Carbon) – It refers to

    another Dockerfile Install dependencies Expose TCP port
  30. Node+Docker Start with Node 8.x (Carbon) – It refers to

    another Dockerfile Install dependencies Expose TCP port Provide defaults for executing the container
  31. Docker Hub š Docker Hub is a public Dockerfile registry

    š Like NPM (Node.js modules) but for Dockerfiles
  32. Kubernetes š Open-source system for automatic deployment, scaling and management

    of containerized applications š Project started at Google to run billions of containers a week š Kubernetes is great to run your app containers in production, because it can scale without requiring any extra Ops efforts š It gives you freedom to run it anywhere, hybrid or public cloud š Both Google Cloud Platform and Amazon Web Services also offer Kubernetes as a Service (Google Container Engine, Amazon Elastic Container Service) š Managed K8S make it easy for you to run K8S in the cloud without needing to install and operate your own clusters
  33. Kubernetes Features š Automatic binpacking š Self-healing š Horizontal Scaling

    š Service Discovering and Load Balancing š Automated rollouts and rollbacks š Secret and configuration management
  34. Appendix 2 – React Native š React Native lets you

    build Native apps with only JavaScript With React Native, you don't build a "mobile web app", an "HTML5 app", or a "hybrid app". You build a real mobile app that's indistinguishable from an app built using Objective-C or Java. React Native uses the same fundamental UI building blocks as regular iOS and Android apps. You just put those building blocks together using JavaScript and React.