continuous delivery e ferramentas javascript
TRANSCRIPT
B r u n o Ta v a r e s , M a r c o s V i n i c i u s
FERRAMENTAS JAVASCRIPT E CONTINUOUS DELIVERY
Programando, automatizando e distribuindo aplicações no mundo JS
2
@bltavares
@bymarkone
AGENDA
▫︎UM POUCO SOBRE O CONTEXTO
▫︎ FUNDAMENTOS
▫︎CONTINUOUS DELIVERY
▫︎ POSSIBILIDADES DO MUNDO JAVASCRIPT
▫︎ SERÁ QUE EU DEVERIA COMPRAR UM CARRO
▫︎ FERRAMENTAS JAVASCRIPT
▫︎ * EXEMPLOS E MAIS EXEMPLO
▫︎ * PALESTRAS E LIVROS
3
UM POUCO SOBRE O CONTEXTOPor que desenvolvedores têm que se preocupar com automatização, testes, qualidade, integração e entrega contínua?
4
CONTEXTO
5
Design Thinking
Lean Startup Agile
DESIGN THINKING
6
“Innovation powered by… direct observation of what people want and need in their lives and what they like or dislike about the way particular products are made, package, marketed, sold and
supported… [It’s] a discipline that uses the designer’s sensibility and methods to match people’s needs with what is technologically
feasible and what viable business strategy can convert into customer value and market
opportunity.” (Tim Brown, IDEO)
LEAN STARTUP
7
“Lean Startup initially advocates the creation of rapid prototypes designed to test market
assumptions and uses costumer feedback to evolve them much faster than more traditional
software then more traditional software engineering practices… Lean Startup processes
reduce waste by increasing frequency of contact with real costumers, therefore testing and
avoiding incorrect market assumptions as early as possible” (Eric Ries)
AGILE SOFTWARE DEVELOPMENT
8
CONTINUOUSDELIVERYA resposta técnica para as necessidades de processo, produto e mercado.
9
3 PRINCÍPIOS DE CONTINUOUS DELIVERY
▫︎Cada mudança deve iniciar um processo de feedback
▫︎O feedback deve ser recebido o mais rápido o possível
▫︎O time de entrega deve receber feedback e então atuar nisto
10
11
At an abstract level, a deployment pipeline is an automated manifestation of your process of getting software from version control into the
hands of your users. ( Jez Humble)
CONTINUOUS DELIVERY
12
Padrões e anti-padrões na automação
de infraestrutura
Quarta - 2:15 - 3:05
P a l e s t r a - Q C O N 2 0 1 5
Ballroom 4
Jeferson Girão & Fábio Santos
POSSIBILIDADES DO MUNDO JAVASCRIPTQuando o NodeJS chegou ele mudou tudo
13
14
https://www.google.com/trends/explore#q=single%20page%20applications%2C%20single%20page%20apps&cmpt=q
15
SHOULD I EVER BUY A CAR?Uma aplicação para descobrir se vale a pena ter um carro ou não
16
17
18
19
THE JAVASCRIPT TOOLKIT
An attempt to organize the recent explosion of Javascript based technologies and frameworks into a coherent toolkit to be used by a web application developer.
20
2.1
Let’s talk about this needs,
And take a look at some tools
22
BASIC BLOCKS OF THE TOOLKIT
▫︎ Infrastructure & Development
▫︎ Testing
▫︎Application & Product
▫︎Utilities & Support
23
INFRASTRUCTURE & DEVELOPMENT
24
SCAFFOLD
25
Several tools. Several ways.
Several Practices. Need to
organize, and give some good
foundation - best practices,
good design.
26
bootstraps seed projects
AUTOMATION
27
Lots of tasks to execute. Compile. Test. Minify. Concat. Uglify. Etc.
28
github.com/broccolijs/broccoli
…ake’s (Make, Rake, etc)
AUTOMATION UTILITIES
29
Tasks that can be put in the build pipeline.
30
minify-tools
concat-tools watch
DEPENDENCY MANAGEMENT
31
Applications are getting complex. They rely on several other libraries and
frameworks.
32
JAVASCRIPT PREPROCESSOR
33
The way you organize code in development time is different the way
you publish your code. Need to do some processing in your javascript files before
using them.
34
github.com/webpack/webpack
OTHER LANGUAGES
35
Have a syntactic sugar element, or even completely different syntax (that in the end turn into javascript to run in the
browser)
36
github.com/clojure/clojurescript
TESTING
37
TEST RUNNER
38
Execute and visualize test results
39
TEST FRAMEWORKS
40
Write tests
41
TESTING END TO END
42
Write tests for the whole application flow
43
github.com/angular/protractor
TEST SUPPORT
44
Support for tests and others helpers
45
APPLICATION & PRODUCT
46
APPLICATION FRAMEWORKS
47
Applications on web are getting complex, need for frameworks that
support app development.
48
Google Closure Tools
APPLICATION UTILITIES
49
Several application features that can be necessary (e.g. routing)
50
DYNAMIC LOADING
51
Big projects are split among several pieces of javascript for the sake of
modularisation. No all of them should be loaded at the same time.
52
github.com/cujojs/curl
github.com/amdjs/amdjs-api
github.com/amdjs/caolan/async
UTILITIES & SUPPORT
53
DOM UTILITIES
54
DOM selection and manipulation, some auxiliary functions, need for utilities that make work simple (and cross-browser)
55
JS UTILITIES
56
Clean code, functional programming style, reactive programming features,
helpers and utilities
58
Microservices, an unexpected journey: where they came from,
where they're going
Sexta - Keynote
P a l e s t r a - Q C O N 2 0 1 5
Ballroom 1-4
Sam Newman