Upload
simon-dittlmann
View
112
Download
7
Tags:
Embed Size (px)
DESCRIPTION
Guest talk at the University Passau about some development tools used at tado° and in general.
Citation preview
Tooling MattersDevelopment Tooling
Who am I?
Simon Dittlmannat tado° since 2013previous Payback, WISI, Mivitec...
Developer, DevOpPreferred 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)
processing (logstash)
kibana (JS-view)
Backup S3
Cluster
Logstash
Logstash
CloudWatch
Deployment Flow
Application
Infrastructure
Virtual Machine Deployment AWS
Grails, Java
Puppet
Cloudformation
deploy.js
aws sdk/cli
packer.iovagrant
jenkins
jenkins
CloudWatchLogstashStatsd
QAps: we’re hiring!
Linkshttps://flic.kr/p/5YWuWkhttps://flic.kr/p/hKFpGEhttps://flic.kr/p/nAMMGQhttps://flic.kr/p/eKZUNhttps://flic.kr/p/cBM99w