Continuous Delivery e Ferramentas Javascript

Preview:

Citation preview

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

PREVIEW… SÓ NA QCON

21

http://javascript-toolkit.com/

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

57

lodash.com

github.com/kriskowal/q

baconjs sugarjs chancejs microjs

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

Dúvidas e sugestões: @bltavares

@bymarkone

btavare@thoughtworks.com bymarkone@thoughtworks.com

MUITO OBRIGADO

Recommended