What is resin.io
• Deploys your application to your remote Linux-based devices
• Supports a dozen devices and any language/platform
• Enables fast code/push/deploy development cycle
Architecture Overview
• Service-oriented git, Dashboard, API, Builder, Registry, Proxy, Database
• Deployed in Docker containers on Amazon AWS
• Linux, Docker, Node.js, PostgreSQL
Architecture Overview
• git • Performs authentication • Receives your code
• Builder • Builds application image • Pushes to Registry • Notifies API
• API • Notifies devices via Proxy
• Resin Agent • Downloads new image • Kills previous container • Starts new container
$ git push resin master
Docker
• High-level API to underlying Linux technologycgroups, kernel namespaces, union filesystems (aufs, overlayfs, btrfs)
• Containers • Light-weight, self-contained “virtual-machines” • Contain application code and dependencies • Provide isolation and resource management • Deployed as images • Same image can be deployed anywhere • Transient, running instances of an image
Yocto Linux
• “Meta-Distribution”Set of tools to build Linux distributions
• Single Linux distribution for all our supported boards
• x86, x64, ARM architectures
• Configuration via Board Support Packages (BSP)kernel, modules, bootloader, etc.
Node.js
• Used for our CLI, API, Agent
• Write once, deploy everywhere
• Huge community and number of projects
• Fast enough
• Pyramid of dependencies
• Memory footprint
Go
• Used for our new Resin Agent
• No interpreter!Tiny memory footprint and fast
• Easy to cross-compile
• Verbose syntax
SBVR & OData
• SBVR“Semantics of Business Vocabulary and Business Rules”
• ODataProtocol for building RESTful APIs
• PineJS
SBVR & OData
Term: pilot Term: plane Fact type: pilot can fly plane Fact type: pilot is experienced Rule: It is obligatory that each pilot can fly at least 1 plane Rule: It is obligatory that each pilot that is experienced can fly at least 3 planes
SBVR & OData
// Get all experienced pilots GET http://api.example.com/pilot?↩ $filter=(is_experienced eq true)
We Work Remotely
• Distributed teamPeople work remotely from 10 different countries
• Offices in 3 countriesGreece, UK, US
• All-Resin call once a week
• Ad-hoc calls
• Summit once a year
Development Tools
• Flowdock
• Mumble
• Bitbucket
• Jira
• Confluence
• Vagrant + VirtualBoxfor our development environment
Development Workflow
• Ticket in Jira
• Branch in git
• Pull Request in Bitbucket
• Deployment to staging
• Test and refine
• Deployment to production
LinksResin.io https://resin.io/
Docker https://docker.com/
Yocto Project https://yoctoproject.org/
SBVR Spec http://www.omg.org/spec/SBVR/Current/
OData http://odata.org/
Flowdock https://flowdock.com/
Mumble http://mumble.info/
Vagrant https://vagrantup.com/
Jira https://atlassian.com/software/jira/
Confluence https://atlassian.com/software/confluence/
Top Related