devops - retour d’expérience - rivieradev du 20 octobre 2011
DESCRIPTION
Slides de la présentation DevOps - Retour d'expérience, au RivieraDev le 20 Octobre 2011TRANSCRIPT
![Page 1: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/1.jpg)
Devops Retour d’experience
RivieraDev 2011 Jeudi 20 Octobre 2011
![Page 2: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/2.jpg)
2
Henri Gomez
• OpenSource Activiste » Commiteur Apache Tomcat depuis 2001
» Co-fondateur du projet JPackage » Projet OpenJDK OS/X Build
• Me contacter » Mail: [email protected]
» Twitter : @hgomez
» Skype : gomezhe » Blog : http://blog.hgomez.net
• Pre eXo » +20 ans de développement
» Architecte Java » Finance/Bourse, Middle&Back
• eXo – Senior Director of IT Operations » Infrastructure locale (TN/UA/VN)
» Infrastructure dédiée sur OVH
» Infrastructure Cloud sur AWS
• eXo – QA Tech Lead
» QAF – QA Factory
» Benchmarks » Performance Analysis
![Page 3: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/3.jpg)
3
Devops – DevOps ?
Mais c’est quoi DevOps ?
![Page 4: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/4.jpg)
4
Devops : En une image
![Page 5: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/5.jpg)
5
Devops : Allo ?
Courtesy @builddoctor
![Page 6: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/6.jpg)
6
Devops - Kesako
• Ce que n’est pas DevOps
» Un produit (même si…) » Une personne ou équipe » Une méthodologie stricte » Une recette miracle
![Page 7: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/7.jpg)
7
Devops - Kesako
• Ce qu’est DevOps
» Un mouvement » Un mode agile sur l’ensemble de la chaine » Une nouvelle donne technique » Une autre approche humaine
![Page 8: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/8.jpg)
8
Devops - Mouvement
• Initié fin 2009 par des acteurs du monde Web » Google, Amazon, Yahoo, LinkedIn, Netflix » Des décideurs qui sont des technophiles
• Réponses à de nouvelles problématiques
» Déploiement massif » Déploiement régulier » PRA, continuité et Cloud
![Page 9: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/9.jpg)
9
Devops – Agile sur toute la chaine
• Ne pas réduire l’Agile au développement » Les méthodes agiles ont fait leur preuve en DEV » Applicables sous condition en QA et Production » Inscrire les opérations de Prod dans le processus
![Page 10: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/10.jpg)
10
Devops – Mode Agile
• Déploiement fréquent » Rassure l’ensemble des acteurs (Dev/QA/Prod) » Rode la mécanique de mise en production » Réduit les risques de découvertes tardives » Mode itératif avec retours de QA/Prod » Infra et code dans le cycle de déploiement continu
![Page 11: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/11.jpg)
11
Devops – Nouvelle Donne Tech
• Un mode de pensée différent » Scale out plutôt que Scale in » Couplages légers » Cloud aware » Une touche de Dev pour les Ops » Une pincée d’Ops dans les Dev
![Page 12: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/12.jpg)
12
Devops – IT Ops comme Dev
• Une nouvelle approche des opérations IT » Infrastructure As Code (Chef, Puppet, Vagrant…) » Des Ops qui codent (Bash, Python, Ruby) » Et utilisent des outils du Dev (SVN/Mercurial/GIT)
• Automatisation » Pour réduire les erreurs » Pour gérer un nombre importants de machines
![Page 13: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/13.jpg)
13
DevOps – De l’humain
• Constats » Opposer les équipes mène à l’échec
• Gains » Lever au plus tôt les incompréhensions et
inquiétudes » Responsabiliser chacun sur l’ensemble du cycle
de vie
![Page 14: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/14.jpg)
14
Devops – Connaître l’autre
![Page 15: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/15.jpg)
15
Devops – Connaître l’autre
• Le vocabulaire » OOM, jar, war, Maven, CI » Jmeter, SmokeTests, Selenium » SLA, PRA, SNMP, JRMP
![Page 16: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/16.jpg)
16
Devops – Connaître l’autre
• L’environnement et les contraintes » Collocation et mutualisation » Monitoring » Sécurité » Backups
![Page 17: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/17.jpg)
17
Devops – Connaître l’autre
• Les peurs » Boites noires » Performances » Effet de bord » Reprise d’activité » Plans de test tardif
![Page 18: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/18.jpg)
18
Devops – Travaillons ensemble
• Tous ensemble, tous ensemble » En finir avec la patate chaude » Analyse commune des besoins » Définir des livrables clairs » Tordre le coup aux procédures lourdes (et
protectrices)
![Page 19: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/19.jpg)
Retour d’expérience eXo Platform
![Page 20: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/20.jpg)
20
Devops – eXo Platform
• Editeur logiciel • ~160 employés dans le monde • Une culture OpenSource • Historique JEE/Portal mergé avec JBoss GateIn
Vietnam: (~70)
Tunisia: (~30)
Ukraine: (~30)
France: (~20)
USA: (~10)
![Page 21: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/21.jpg)
21
Devops – eXo Platform
• Applications Java » AIO, PLF, Cloud IDE
• Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS)
![Page 22: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/22.jpg)
22
Devops – eXo Platform
• Des équipes dans 5 pays et 4 continents » Dev, Support, QA, Ops (production)
• Un outillage classique » Subversion & GIT » Maven, Nexus » Jenkins, Sonar » JIRA, Confluence, Fisheye
![Page 23: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/23.jpg)
23
Devops – Outils communs
• JIRA • Subversion/Git • Repository Nexus • Support documentaire Wiki • Des Jenkins
Capitalisation des connaissances et suppression des réticences aux « outils des
autres »
![Page 24: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/24.jpg)
24
Devops – JIRA
• Des projets JIRA » Par projets Dev » Par projets QA » Pour l’activité Prod » Mode sprint sur 2 semaines pour Dev » Mode sprint sur une semaine pour Prod
Chaque équipe peut voir et alimenter les projets d’autres équipes.
![Page 25: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/25.jpg)
25
Devops – JIRA en PROD #1
• Une demande de déploiement est un ticket Ops » Planification JIRA » Description des opérations en cours » Retours suite aux opérations
• Les incidents de production sont des tickets » Collecte des éléments en pièces attachés ou liens » Qualification puis ouverture d’un ticket produit lié » Suivi de l’incident à la résolution produit
![Page 26: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/26.jpg)
26
Devops – SCM pour tous
• SVN / Git » Les sources des applications - Dev » Les sources de tests Selenium/JMeter - QA » Les sources du packaging natifs - Prod » Les sources de manifest Puppet – Prod » Les sources des jobs Jenkins – Tous
Les sources, les tests et les process de production sont accessibles à chacun.
![Page 27: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/27.jpg)
27
Devops – Nexus
• Entrepôt de livrables » Réduction des erreurs sur des jars/wars
‘customisés’ ou ‘déviants’ » Une source connue et unique contrôlée par le
Software Factory Manager » Renforce la nécessité de livraison par le Dev » Rassure les équipes de QA et Prod Tous les acteurs partagent les mêmes livrables
![Page 28: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/28.jpg)
28
Devops – Documentations
• Wiki » Des espaces par équipes ou sujets » Liens avec les projets JIRA » Cycle de publication simple » Mise à jour quotidienne » Participatif via les commentaires sur les articles Une source unique de documentation réactive
et sociale.
![Page 29: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/29.jpg)
29
DevOps – Des Jenkins
Jenkins, what’s else ?
![Page 30: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/30.jpg)
30
DevOps – Rappels sur Jenkins
» Jenkins gère des jobs
» Déclenchés sur horaires ou évènements
» C’est un enchaineur
» Il peut contrôler des instances esclaves
» C’est donc un enchaineur multi-sites
» Les résultats d’opérations remontent vers le Maitre
» Jenkins est en prime une console de supervision
![Page 31: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/31.jpg)
31
Devops – La bande à Jenkins
• Jenkins d’intégration continue (SWF-CI) » Intégration continue et packaging d’applications
• Jenkins déploiement continu (SWF-CD) » Déploiement continu vers la pre-prod
• Jenkins de QA (QAF) » Test de performances et conformité
• Jenkins de Prod (ITOP) » Production des packages natifs (RPM/DEB)
![Page 32: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/32.jpg)
32
Devops – Règles Jenkins
• Maitres » Coordinateurs » Authentification via Crowd/LDAP
• Agents » Producteurs » Mode SSH Slave & clés privées
• SCM encore » Les taches dans le SCM
![Page 33: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/33.jpg)
33
DevOps – Jenkins SWF-CI
Jenkins pour le CI
![Page 34: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/34.jpg)
34
DevOps – Jenkins SWF-CI
• Construction » Depuis les SCM Subversion et Git
• Tests » Junit
• Macro Packaging » Zip via Maven-Assembly
• Deploiement Nexus » Release, Snapshot et Stagging
![Page 35: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/35.jpg)
35
DevOps – Jenkins SWF-CI
![Page 36: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/36.jpg)
36
DevOps – Jenkins SWF-CD
Jenkins en déploiement continu
![Page 37: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/37.jpg)
37
DevOps – Jenkins SWF-CD
• Déploiement en pre-production » Jobs free style » Free style ? » donc Ant, Maven mais aussi Bash, Python, Ruby, Perl » Les Ops peuvent entrer dans la danse
![Page 38: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/38.jpg)
38
DevOps – Jenkins SWF-CD
![Page 39: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/39.jpg)
39
DevOps – Jenkins SWF-CD
![Page 40: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/40.jpg)
40
DevOps – Jenkins SWF-CD
![Page 41: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/41.jpg)
41
DevOps – Jenkins QAF
Jenkins pour la QA
![Page 42: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/42.jpg)
42
DevOps – Jenkins QAF
» Jenkins effectue de nuit les tests fonctionnels long » Et les tirs de performances » Les taches rébarbatives pour la machine » Analyse des résultats le lendemain matin avec le
café et les croissants » L’équipe QA se focalise sur l’analyse » La console Jenkins est aussi utilisable par les Dev
ou Ops
![Page 43: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/43.jpg)
43
DevOps – Jenkins QAF
![Page 44: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/44.jpg)
44
DevOps – Jenkins QAF
Schéma d’un scénario
![Page 45: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/45.jpg)
45
DevOps – Jenkins QAF
Jenkins Master
Jenkins Agent
SQL Engine Jenkins Agent
App Server
Jenkins Agent
Injector
Pilotage des différents composants
![Page 46: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/46.jpg)
46
DevOps – Jenkins QAF
Définition des jobs
![Page 47: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/47.jpg)
47
DevOps – Jenkins QAF
Tests de performances et résultats
![Page 48: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/48.jpg)
48
DevOps – Jenkins QAF
Historiques et tendances sur les performances
![Page 49: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/49.jpg)
49
DevOps – Jenkins ITOP
Jenkins pour la Prod
![Page 50: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/50.jpg)
50
DevOps – Jenkins ITOP
• Construction de packages natifs » Sources du packaging dans SVN » Binaires de références dans Nexus » RPM via agents Fedora & CentOS » DEB via agent Ubuntu
• Mise à jour des repos package » RPM Fedora & CentOS » DEB pour Ubuntu
![Page 51: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/51.jpg)
51
DevOps – Jenkins ITOP
Jenkins Master
Jenkins Agent
Fedora 15 Jenkins Agent
CentOS 6
Jenkins Agent
Ubuntu 11.04
Pilotage multi-instances
![Page 52: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/52.jpg)
52
DevOps – Jenkins ITOP
Jenkins Master
SCMs
Subversion
GIT Native Repositories
Maven Repository
Construction
![Page 53: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/53.jpg)
53
DevOps – Jenkins ITOP
RPM
![Page 54: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/54.jpg)
54
DevOps – Jenkins ITOP
DEB
![Page 55: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/55.jpg)
55
DevOps – Conclusions
Conclusions
![Page 56: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/56.jpg)
56
DevOps – Pratiques eXo
• Pas de cloisonnement » Chacun peut accéder à l’ensemble de l’information » Participation et échanges encouragés
• Outillage commun
» Facilite la communication » Permet l’échange des bonnes pratiques » Favorise le partage des compétences
![Page 57: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/57.jpg)
57
Devops – Quelques pré-requis
• Ouverture d’esprit » Pouvoir sortir des vieux schémas » Savoir écouter les autres » Vouloir échanger avec les autres
• Une gouvernance adaptée » Promouvoir l’échange entre les équipes
pluridisciplinaires » Accepter une ‘démocratie’ plus directe
![Page 58: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/58.jpg)
58
DevOps – Final
DevOps, c’est avant tout une culture de la communication.
Il ne doit pas rester cantonné à une
élite mais inclure l’ensemble des acteurs.
![Page 59: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/59.jpg)
59
Et voici le moment des questions et réponses …
si vous avez été sages
![Page 60: DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011](https://reader033.vdocuments.pub/reader033/viewer/2022051818/54b3766d4a79594b608b4593/html5/thumbnails/60.jpg)
60
Licence et copyrights
• Photos et logos appartiennent à leur auteurs/propriétaires respectifs.
• Contenu sous Creative Commons 3.0 • http://creativecommons.org/licenses/by-nc-sa/3.0/us/