Tooling Matters - Development tools

Preview:

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!

Recommended