DevOps for the Internet of Things
Senior Software Engineer

Experience Team @ resin.io
Akis Kesoglou
The tools and technologies
behind resin.io
What’s in for today
• Architecture Overview
• Core Technologies
• Development Tools and Processes
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
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
Core Technologies
Core Technologies
• git
• Docker
• Yocto Linux
• Node.js
• Go
• SBVR & OData
• Entry-point to resin.io
• Orchestration via hooks

Authentication, progress report, etc.
git
Docker
• High-level API to underlying Linux technology

cgroups, 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”
• OData

Protocol 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)
Development Tools and

Processes
We Work Remotely
• Distributed team

People work remotely from 10 different countries
• Offices in 3 countries

Greece, UK, US
• All-Resin call once a week
• Ad-hoc calls
• Summit once a year
Development Tools
• Flowdock
• Mumble
• Bitbucket
• Jira
• Confluence
• Vagrant + VirtualBox

for our development environment
Development Workflow
• Ticket in Jira
• Branch in git
• Pull Request in Bitbucket
• Deployment to staging
• Test and refine
• Deployment to production
Links
Resin.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/
Thank you!
The tools and technologies behind resin.io
Questions?

The tools & technologies behind Resin.io

  • 1.
    DevOps for theInternet of Things
  • 2.
    Senior Software Engineer
 ExperienceTeam @ resin.io Akis Kesoglou
  • 3.
    The tools andtechnologies behind resin.io
  • 4.
    What’s in fortoday • Architecture Overview • Core Technologies • Development Tools and Processes
  • 5.
    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
  • 6.
  • 7.
    Architecture Overview • Service-oriented
 git,Dashboard, API, Builder, Registry, Proxy, Database • Deployed in Docker containers
 on Amazon AWS • Linux, Docker, Node.js, PostgreSQL
  • 8.
    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
  • 9.
  • 10.
    Core Technologies • git •Docker • Yocto Linux • Node.js • Go • SBVR & OData
  • 11.
    • Entry-point toresin.io • Orchestration via hooks
 Authentication, progress report, etc. git
  • 12.
    Docker • High-level APIto underlying Linux technology
 cgroups, 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
  • 13.
    Yocto Linux • “Meta-Distribution”
 Setof 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.
  • 14.
    Node.js • Used forour CLI, API, Agent • Write once, deploy everywhere • Huge community and number of projects • Fast enough • Pyramid of dependencies • Memory footprint
  • 15.
    Go • Used forour new Resin Agent • No interpreter!
 Tiny memory footprint and fast • Easy to cross-compile • Verbose syntax
  • 16.
    SBVR & OData •SBVR
 “Semantics of Business Vocabulary and Business Rules” • OData
 Protocol for building RESTful APIs • PineJS
  • 17.
    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
  • 18.
    SBVR & OData //Get all experienced pilots GET http://api.example.com/pilot?↩ 
 $filter=(is_experienced eq true)
  • 19.
  • 20.
    We Work Remotely •Distributed team
 People work remotely from 10 different countries • Offices in 3 countries
 Greece, UK, US • All-Resin call once a week • Ad-hoc calls • Summit once a year
  • 21.
    Development Tools • Flowdock •Mumble • Bitbucket • Jira • Confluence • Vagrant + VirtualBox
 for our development environment
  • 22.
    Development Workflow • Ticketin Jira • Branch in git • Pull Request in Bitbucket • Deployment to staging • Test and refine • Deployment to production
  • 23.
    Links Resin.io https://resin.io/ Docker https://docker.com/ YoctoProject 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/
  • 24.
  • 25.
    The tools andtechnologies behind resin.io Questions?