Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous Delivery med Tutum och Docker

312 views

Published on

Continuous Delivery med Tutum och Docker i molnet.
Code Night #4 - 2016-02-11

Om man vill ställa om en befintlig utvecklingsverksamhet till Continuous Delivery gör man klokt i att införa förändringen stegvis, i en kontinuerlig förbättringsprocess. Det ger de bästa chanserna att lyckas. Men det är normalt en lång process eftersom många människor är inblandade och att vi under tiden måste upprätthålla leveranser till produktion.

Men, om vi för ett ögonblick drömmer oss bort och tänker bort ärvda system, stela driftsmiljöer och obsoleta rutiner och istället bara gör som man verkligen skulle vilja göra, från scratch, nu 2016, hur skulle man göra då?

Vi har gjort precis det!

Denna kväll tar vi med oss er på en resa hur man idag kan bygga en systemproduktionslina baserad på Docker, Tutum, GoCD och Amazon EC2, från källkodsrepo till produktionsmiljö. Vi går igenom hur det är uppbyggt och fungerar och hur man arbetar med det. Vi kommer att arbeta med pipelinen och ett enkelt målsystem.

Vår story baseras på utvecklingsresan med http://www.welcomeapp.se hösten 2015 där vi på kort tid tog vi fram frontendsystem, backendsystem med klustring, lastbalansering, backup, MQ och webbsajt samt flera pipelines.

Föreläsare:

Daniel Marell och Kristoffer Vidmo - Continuous Delivery evangelister på C.A.G.

Både Daniel och Kristoffer har gedigna bakgrunder som arkitekter och utvecklare och fokuserar idag på metoder och verktyg för att hjälpa kunder att implementera Continuous Delivery.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Continuous Delivery med Tutum och Docker

  1. 1. Kristoffer Vidmo kristoffer.vidmo@cag.se Continuous Delivery med Tutum och Docker Daniel Marell daniel.marell@cag.se Code Night #4 2016-02-11
  2. 2. Joina Slacken https://cagdemo.slack.com Ta del av användbara länkar
  3. 3. ● Arkitektur och utveckling ● .NET och Java ● Continuous Delivery och DevOps ● Molnbaserade tjänster och miljöer ● Verktyg och metoder för att implementera Continuous Delivery Vår bakgrund och vad vi gör
  4. 4. ● Stegvis förändring mot Continuous Delivery ● Helhetslösning, startar igång och följer upp ● Hjälper till under hela resan, inte bara en rapport ● Pipelines ● Tjänstemockar Vad vi gör
  5. 5. ● Sparar flera tusen timmar per år ● Antal fel minskar drastiskt ● Tiden att åtgärda ett fel minskar drastiskt Puppet Labs - State of DevOps 2015 Resultat
  6. 6. ● Systemutveckling i ett CD-sammanhang ● Build pipelines ● Automatiserad test ● Mikrotjänster ● Automatisering, scriptning ● Molnplattformar med AWS och Azure Vi vill bli fler
  7. 7. Problemet med IT IT är ett hinder inte en möjliggörare
  8. 8. IT på 2000-talet? Manuell - test - deploy - verifiering
  9. 9. Utveckling Systemtest Acceptans- test Prod Vilken av alla 100 saker är det som går fel... Krav Stora releaser varje kvartal
  10. 10. Utveckling Systemtest Acceptans- test Prod 95% av tiden från krav till prod är väntetid Krav Överlämningar krav - utv - test - prod
  11. 11. Utveckling Systemtest Acceptans- test Prod Hur var det nu det skulle fungera? Krav Feedback kommer för sent
  12. 12. ● Paketerar applikationer i containers ● Baserat på Linux LXC ● En container körs som process i hosten ● Copy-on-write filsystem ● Docker image Vad är Docker? https://www.docker.com/products/docker-toolbox $ docker run -it --rm ubuntu bash
  13. 13. Dockerfile FROM java:8-jre COPY target/myapp.jar / EXPOSE 8080 CMD java -jar /myapp.jar https://www.docker.com/products/docker-toolbox $ docker run -it --rm ubuntu bash
  14. 14. ● Repeterbara deployments i produktion ● Applikationer med konfliktande beroenden ● Isolation av applikationer ● Distribuerad hantering av virtuella miljöer (repo) ● Låg overhead Problem som Docker löser https://www.docker.com/products/docker-toolbox $ docker run -it --rm ubuntu bash
  15. 15. ”Docker is the Most Disruptive Technology For Software Development in the Last Decade” Compared with Cloud computing, Hadoop, and NoSQL … in terms of long-term effect on the software industry, these technologies are miles behind https://www.docker.com/products/docker-toolbox $ docker run -it --rm ubuntu bash
  16. 16. appapp Utveckling Drift Virtualiserad miljö app app Körmiljö för containers Containers vs Virtualisering
  17. 17. Hur det började
  18. 18. Webbsajt: http://welcomeapp.se Webapp: https://app.welcomeapp.se Server API: https://api.welcomeapp.se
  19. 19. Antal användare 100 000 Antal operationer per användare 10 Tid timmar 4 Operationer per sekund snitt 69 Belastningstopp faktor 10 Operationer per sekund, peak 694 Lastberäkning
  20. 20. ● Installera testmiljö och produktionsmiljö ● Installera Build Pipeline ● DNS och certifikat ● Wireframes ● Infomodell ● Utveckla frontend-applikation ● Utveckla server-applikation ● Chat med websockets/RabbitMQ ● App Store och Google Play Det blev mycket att göra
  21. 21. Infomodell
  22. 22. Pipeline prod Google Analytics Logging Dashboard operation status uattest DNS code repo Alarms Dashboard KPIs Backup S3
  23. 23. Welcome! Frontend application load balancer cluster web server 1 web server 2 Web browser web app
  24. 24. Welcome! Backend server load balancer cluster server1 server3 server2 server4 MongoDB web browser web app RabbitMQ
  25. 25. Frontend: https://app.welcomeapp.se Backend: https://api.welcomeapp.se Loggar: https://papertrailapp.com/systems/WelcomeApiAutolarge/events Welcome! Demo
  26. 26. Test-, driftmiljöer och pipeline Dockerhost Jenkins RabbitMQMongoDB data MongoDB api server app web server www web server deploy Alt. 1a
  27. 27. Dockerhost Test-, driftmiljöer och pipeline Jenkins RabbitMQMongoDB data MongoDB api server app web server www web server deploy Alt. 1a
  28. 28. Dockerhost Test-, driftmiljöer och pipeline Jenkins www stack app stack api stack deploy docker-compose Alt. 1b
  29. 29. mongo: image: mongo rabbitmq: image: 'tutum.co/@tutumuser@/rabbitmq:latest' server: build: api links: - mongo:mongo - rabbitmq:rabbitmq environment: - SE_CAGLABS_WELCOME_SERVER_ENVIRONMENT=test ports: - "8080:8080" docker-compose.yml
  30. 30. Dockerhost Dockerhost Dockerhost Test-, driftmiljöer och pipeline Dockerhost Jenkins docker container deploy Docker swarmAlt. 1c
  31. 31. Heroku Alt. 2
  32. 32. Tutum Alt. 3
  33. 33. Tutum Är en plattform där du kan bygga, deploya och hantera containers samt dess infrastruktur
  34. 34. Tutum Skapa noder och gruppera dem i kluster
  35. 35. Tutum Skapa containers och gruppera dem i stackar
  36. 36. Tutum Molnbaserad miljö, enkelt snabbt och smidigt
  37. 37. Tutum Webbaserat, men har REST api
  38. 38. Demo
  39. 39. Pipeline med Jenkins produattest kod- repo Utvecklar- dator
  40. 40. Pipeline med Jenkins
  41. 41. Pipeline med Jenkins produattest kod- repo Artifaktrepo app build 42
  42. 42. Pipeline med GoCD produattest kod- repo Artifaktrepo app build 42
  43. 43. Pipeline med GoCD Stort tack och mycket cred till Mikael Sennerholm (Avega) för pipelinesetup med GoCD till Tutum
  44. 44. ● Demo systemproduktionslina ● Demo automatisk test ● Demo lasttestning med loader.io ● Skala upp service, ny nod ● Skala upp service, lastbalansering

×