Tooling Matters
Development Tooling
Who am I?
Simon Dittlmann
at tado° since 2013
previous Payback, WISI, Mivitec...
Developer, DevOp
Preferred Language: JS
Contact
SimonDittlmann
github.com/Pindar
What’s tado°?
The app that controls your
heating and saves energy.
With a Connector kit for your home.
What are tools?
What are tools?
• a thing used to help perform a job:
computers are an essential tool | the ability
to write clearly is a tool of the trade.
What are tools?
• Computing:
a piece of software that carries out a
particular function, typically creating or
modifying another program.
Why tools?
efficiency
effectiveness
Where?
Everywhere!
To manage
● Ideas
● Feature Request
● Requirements
● Development
● Deployment
● Production
How to choose?
A tool should support the
optimal process.
A tool has to reduce the
overall lead time and not
just a single step.
A third party tool should be
backed by a big community
more details please!
From an idea to production
Requirements
Deployment
Development
natural
language,
charts
Puppet,
JS, Bash
Idea /
Feature
Request
Zendesk,
Sticky-Notes,
Paper Chart
Google Apps
deployJS,
Packer.io,
Jenkins,
AWS...
Production
Logstash,
Cloudwatch,
statsd,
AWS...
Java, Groovy,
JavaScript, C,
Python, PHP,
JSON, CoAP,
HTTP,
Cloudformation,
Puppet
Git / Github, Gradle
Grunt, Less-CLI,
IDEA-IntelliJ,
Vagrant, Rake, mvn,
npm, Jenkins, Gem,
Guard, Composer,
Sticky-Notes, task-
board, make,
hangouts...
natural
language
Let’s take a closer look at DevOps
Collaboration
● Google Hangout for quick chats
● Google Apps for documentation (Office Suite)
● Github to comment on Issues + Pull
Requests
○ Powerful collaboration, code review, and code
management
● Task Board
○ Sticky Notes
Development / Debugging
● Git for source code versioning
● Idea IntelliJ as an IDE
● Sublime / VI(M) / Textmate etc. as text editor
● Chrome Developer Tools for FE Debugging
● Spring Boot, Yeoman to speed up
development setup
● Vagrant to simulate environments and speed
up setups
Build
● Gradle/Maven for Java build automation
● Grunt for JS build automation
● Composer for PHP build auto/dep mgmt
● Rake for Puppet task management
● Jenkins for Continuous Integration (CI)
● Bower for Front End dependency mgmt
● LESS-CLI to transform less to CSS
Test / QA
● Spock-Specs to test Groovy/Java
● CodeNarc validates Groovy code
● Protractor to test AngularJS E2E
● karma + PhantomJS for JS unit testing
● JSHint validates JS code
Deployment
● Packer.io to create AMIs (Amazon Machine
Image) / Vagrant boxes
● AWS (Amazon Web Services)
Cloudformation to describe the infrastructure
● AWS SDK + Custom Software to do the
deployment
Production
● Logstash for log file monitoring
● Cloudwatch for performance monitoring
● statsd to aggregate data points
Logstash log shipping process
shipper
(instance)
shipper
(instance)
shipper
(instance)
Queue
(Redis)
indexing
(elastic
search)
processi
ng
(logstash)
kibana
(JS-view)
Backup
S3
Cluster
Logstash
Logstash
CloudWatch
Deployment Flow
Application
Infrastructure
Virtual Machine Deployment AWS
Grails,
Java
Puppet
Cloud
formation
deploy.js
aws
sdk/cli
packer.io
vagrant
jenkins
jenkins
CloudWatch
Logstash
Statsd
QA
ps: we’re hiring!
Links
https://flic.kr/p/5YWuWk
https://flic.kr/p/hKFpGE
https://flic.kr/p/nAMMGQ
https://flic.kr/p/eKZUN
https://flic.kr/p/cBM99w

Tooling Matters - Development tools