4. What’s in for today
• 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
11. • Entry-point to resin.io
• Orchestration via hooks
Authentication, progress report, etc.
git
12. 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
13. 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.
14. 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
15. Go
• Used for our 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)
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
• Ticket in Jira
• Branch in git
• Pull Request in Bitbucket
• Deployment to staging
• Test and refine
• Deployment to production