Giter Site home page Giter Site logo

gobin's Introduction

gobin - Programming in the age of cloud

Use your favourite device, OS, IDE, and other tools for your code editing. Compile and execute the code and tests in the cloud, in realtime, as if it would all happen in locally.

Why gobin

TODO laptop price <-> power, laptop weight, cloud instances, shutdown when not in use, separate instances for separate clients,

What gobin does?

In your local development environment you run your development IDE. When you hit save on your IDE gobin will detect changes on filesystem, send the changes to your cloud instance, save them on filesystem at the cloud, and respawn the application.

Why would I want to develop in the cloud

Running your code (and test, coverage tools, documentation generators, what ever) on the cloud has several benefits.

Firstly, your laptop does not need to be super expensive monster with latest CPU's and 64GB RAM. It's enough to be able to run your IDE (not a minor task itself). So you can use a laptop that meets your budget. Also, you can focus on laptops that are light weight and portable.

Secondly, cloud instances are cheap. They can be as powerful as you want (would 1 vCPU with 512MB RAM be enough, or would you like to have 92 vCPU's with 192GB RAM?). When your are not using it, you can turn it off. You can have separate instances for separate projects or clients. You can upgrade (or downgrade) with just a few clicks to meet the changed needs. No need to buy new laptop every year.

Third, when your application runs in full load, your laptop runs coolly with fans off. You can leave long running tests to run while your laptop is sleeping.

Finally, your application can access cloud services (database, event service, logging, monitoring, ...) exactly the same way in development as it does in production. You don't need to have local simulators to emulate client services, nor do you need SSH or VPN tunnels opened to services, or special access rules for locally running applications. Just assign the same IAM roles and security groups to your remote development host as you give your production instances. This ensures that if it works on your development instance, it will work on production as well.

Requirements

Requirements for your local development host:

  • Facebook Watchman installed on your local host
  • gobin installed (TODO: link to installation) (TODO: run local gobin in container)

Requirements for your cloud instance:

  • Cloud computing instance, for example from AWS, Google, UpCloud, DigitalOcean, or what ever you prefer
  • Docker installed, configured and running
  • Working SSH connectivity to your cloud instance, refer your cloud provider documentation

Watchman is required to do the surprisingly difficult task of detecting the changes on your files system reliably, fast, and with little load on CPU. Facebook has done excellent job with Watchman, it is extremely reliable and fast, and it does not use polling, saving your from working with hot laptop.

Usage

TODO: this section is under development

  • auth to cloud
  • start cloud instance, or use AWS or Google integration to manage instance
  • ensure SSH is working
gobin [-h ssh-host] 
      [-u ssh-user] 
      [-i ssh-identity-file]
      [-s source-dir]
      [-r remote-cmd]
      [-d docker-image] 

TODO

  • Docker API integration ** ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -i ~/path/to/key.pem -NL localhost:2377:/var/run/docker.sock [email protected]

  • Google integration

  • AWS integration

  • UpCloud integration

gobin's People

Contributors

jarppe avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.