31
Tooling Matters Development Tooling

Tooling Matters - Development tools

Embed Size (px)

DESCRIPTION

Guest talk at the University Passau about some development tools used at tado° and in general.

Citation preview

Page 1: Tooling Matters - Development tools

Tooling MattersDevelopment Tooling

Page 2: Tooling Matters - Development tools

Who am I?

Simon Dittlmannat tado° since 2013previous Payback, WISI, Mivitec...

Developer, DevOpPreferred Language: JS

Contact SimonDittlmann github.com/Pindar

Page 3: Tooling Matters - Development tools

What’s tado°?

The app that controls your heating and saves energy.

With a Connector kit for your home.

Page 4: Tooling Matters - Development tools

What are tools?

Page 5: Tooling Matters - Development 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.

Page 6: Tooling Matters - Development tools

What are tools?• Computing:a piece of software that carries out a particular function, typically creating or modifying another program.

Page 7: Tooling Matters - Development tools

Why tools?

Page 8: Tooling Matters - Development tools

efficiency

Page 9: Tooling Matters - Development tools

effectiveness

Page 10: Tooling Matters - Development tools

Where?

Page 11: Tooling Matters - Development tools

Everywhere!

To manage● Ideas● Feature Request● Requirements● Development● Deployment● Production

Page 12: Tooling Matters - Development tools

How to choose?

Page 13: Tooling Matters - Development tools

A tool should support the optimal process.

Page 14: Tooling Matters - Development tools

A tool has to reduce the overall lead time and not

just a single step.

Page 15: Tooling Matters - Development tools

A third party tool should be backed by a big community

Page 16: Tooling Matters - Development tools

more details please!

Page 17: Tooling Matters - Development tools

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

Page 18: Tooling Matters - Development tools

Let’s take a closer look at DevOps

Page 19: Tooling Matters - Development tools

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

Page 20: Tooling Matters - Development tools

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

Page 21: Tooling Matters - Development tools

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

Page 22: Tooling Matters - Development tools

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

Page 23: Tooling Matters - Development tools

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

Page 24: Tooling Matters - Development tools

Production

● Logstash for log file monitoring● Cloudwatch for performance monitoring● statsd to aggregate data points

Page 25: Tooling Matters - Development tools

Logstash log shipping process

shipper(instance)

shipper (instance)

shipper(instance)

Queue(Redis)

indexing (elastic search)

processing (logstash)

kibana (JS-view)

Backup S3

Cluster

Page 26: Tooling Matters - Development tools

Logstash

Page 27: Tooling Matters - Development tools

Logstash

Page 28: Tooling Matters - Development tools

CloudWatch

Page 29: Tooling Matters - Development tools

Deployment Flow

Application

Infrastructure

Virtual Machine Deployment AWS

Grails, Java

Puppet

Cloudformation

deploy.js

aws sdk/cli

packer.iovagrant

jenkins

jenkins

CloudWatchLogstashStatsd

Page 30: Tooling Matters - Development tools

QAps: we’re hiring!