Bespaar tijd en lever continu hogere kwaliteit | Docker en Drupal

18 Jun 2018

Joris Snoek - Business Dev
+31 (0)20 - 261 14 99

Als digital agency ontwikkelen wij vele platformen en Drupal websites voor verschillende klanten. Hierin liepen we afgelopen jaren vaak tegen het volgende probleem aan: een developer produceert iets op zijn laptop wat niet instant werkt op de laptop van een andere developer. Er moest dan gezocht worden naar het verschil in laptop software -en settings. Dit kostte tijd, is frustrerend en zonde van alle energie, want deze ellende is te vermijden door alle systemen te 'containerizen' middels Docker.

Een beruchte uitspraak was:

It worked om my machine

Dit probleem werd veroorzaakt doordat de laptops/servers verschillen in bijvoorbeeld:

  • Besturingssysteem;
  • PHP versie;
  • Database versie.

Een minimaal verschil in settings bínnen een applicatie (bijvoorbeeld PHP of MySQL) kan ook al flink tijd kosten om te achterhalen.

Ook een verschil in schrijfrechten kan veel tijd kosten om te achterhalen.

Daarbij, elk platform of Drupal website heeft sowieso eigen systeemeisen: de ene is bijvoorbeeld al gereed voor PHP 7 en de andere heeft nog PHP 5.6 nodig.

Docker lost deze problemen op: het zorgt ervoor dat een Drupal website altijd in dezelfde persistente omgeving leeft qua besturingssysteem, bijbehorende applicaties -en settings. Wáár je de Drupal systeem ook draait: lokaal of een online server -Mac, Linux of Windows.

Voordeel voor Drupal website eigenaar

  • Snellere ontwikkel -en test trajecten.
  • Hogere kwaliteit in opleveringen door consistentie van onderliggende architectuur.
  • Snellere en stabiele live deployments.
  • Consistente continuous integration, waardoor de time to live van nieuwe functies korter wordt. Dit geldt voor zowel support issues als complete sprints.

Drupal Traditioneel vs Drupal in Docker containers

Simpel gezegd, binnen Docker zit de applicatie gekoppeld aan de omgeving, zodat deze áltijd de juiste server-stack heeft.

Website traditioneel versus Docker containers

Drupal Traditioneel
Je ziet in bovenstaande werkstuk dat binnen een traditionele omgeving de Drupal website los staat van de server-stack. De server-stack verschilt dus per omgeving (laptop of cloud server), waardoor je de eerder genoemde problemen en frustraties krijgt zodra je het ergens anders werkend wil hebben.

Drupal in Docker containers
In het Docker scenario zie je dat de Drupal website onlosmakelijk verbonden is met de server-stack:

  • Een bare bone OS (besturingssysteem).
  • De benodigde server-applicaties.
  • Libraries -en settings.

Drupal bugtracking made easier

Zo heeft de Drupal website áltijd exact dezelfde omgeving en maakt het niet uit wáár je het installeert. Dus onafhankelijk van laptop of server: het zal overal hetzelfde werken. Of, overal juist níet werken, ook belangrijk zodat je kunt bug-tracken in je Drupal website.

Zonder Drupal in Docker komt dat laatste scenario ook te vaak voor: een bug in de Drupal website kan niet gereproduceerd worden omdat het lokaal wél werkt.

Plug and play server applicaties en tools

Waar het voorheen lastig was om benodigde server applicaties te installeren op je laptop, is dat nu relatief snel geregeld.

Denk hierbij aan:

Deze download je en werken instant binnen een container, waar je applicatie verbinding mee kan maken.

Continuous Integration (CI) van Drupal applicaties

Doordat alle omgevingen nu altijd gelijk zijn zullen Drupal test-trajecten minder tijd in beslag nemen. Want waar je traditioneel álle omgevingen opnieuw moest testen -nu weet je zeker dat zodra de Drupal applicatie lokaal werkt, dat het op de test, acceptatie en live-server ook werkt.

Wij zijn momenteel Docker verder aan het integreren in onze CI-straat. Voor een interessant artikel over continuous integration, zie hier.

Waarom Docker?

Er zijn meerdere varianten van virtualisatie software om het 'it worked on my machine' probleem op te lossen.

Waarom dan Docker? 5 redenen:

1. Docker is populair

Onderzoek wijst uit dat Docker op grote schaal wordt toegepast. Cloud monitor DataDog zag maart 2016 13,6 procent van de klanten op Docker draaien. Een jaar later is dat aantal gegroeid tot 18,8 procent -een groei van bijna 40 procent in 12 maanden tijd.

RightScale constateerde in haar RightScale 2018 State of the Cloud-rapport dat de implementatie van Docker is toegenomen naar 49 procent van 35 procent in 2017.

Stats
Meer dan 3,5 miljoen applicaties zijn in containers geplaatst met Docker-technologie en meer dan 37 miljard containerized applicaties zijn gedownload. bron

2. Docker is relatief makkelijk en veilig

In vergelijking met andere virtualisatie software, is Docker voor een dev-ops engineer relatief snel te leren. Daarbij zorgt de containerization voor een omgeving die sneller en makkelijker veilig te houden is.

3. Docker houdt van alles en iedereen

Tevens is Docker zo gebouwd, dat het gebruikt kan worden op andere populaire dev-ops applicaties als Puppet, Chef, Vagrant, and Ansible. Bron

4. Omarming door big

Docker werkt samen met Google, Microsoft, Amazon, Cisco, HP, IBM, RedHat, VMWare (bron), waardoor tevens noodzakelijk standaardisatie tot stand kwam.

5. Docker versus andere Virtual Machines

Er zijn diverse soortgelijk virtualisatie technieken, maar Docker's container architectuur maakt het onderscheid. Simpel gezegd kan je hierdoor op één VPS meerdere applicaties draaien -waar andere virtualisatie technieken één VPS per applicatie nodig hebben.

Docker containers zijn geïsoleerd, maar delen het onderliggende besturingssysteem en -waar nodig- applicaties en libraries.

Middels Docker kan je dus je server-resources efficiënter gebruiken: je kunt op één VPS meerdere Docker omgevingen draaien -dit kan bij andere Virtual Machines niet. Voor meer benchmarking details hierin, zie ook dit blog.

Docker zegt terecht:

Docker is the world’s leading software container platform available for developers, ops and businesses to build, ship and run any app on any infrastructure.

en

No Lock-in: Multi-Linux and Windows. Multi-Cloud.

en

Increase Security, Enable portability and lower costs in 5 days without changing app code.

Bron: Docker.com

Waarom nog meer

Enkele aanvullende redenen om van Docker gebruik te maken:

  • Locale SSL relatief makkelijk, via LetsEncrypt.
  • Mensen kunnen sneller en makkelijker meewerken aan een applicatie, zonder allerlei dev-ops kennis nodig te hebben.
  • Doordat je applicatie instant portable is kun je makkelijker switchen van hosting provider.
  • Grote projecten kunnen makkelijker worden opgesplitst naar kleine teams, middels CI tools als Jenkins wordt de code van verschillende teams geïntegreerd.
  • Snel sandboxes aanmaken -en weer destroyen, zodat alles clean blijft.
  • Docker heeft een groot ecosysteem.
  • Complexe micro-service worden mogelijk binnen een containers.

Misc Docker stuff

Nice fact: lmctfy

Weinig mensen weten dit, maar de meeste van jullie gebruiken al jaren containers. Google heeft namelijk zijn eigen open-source containertechnologie (Let Me Contain That For You). Telkens wanneer je een Google-functionaliteit gebruikt (Zoeken, Gmail, Google Docs), dan krijg je een nieuwe container toegewezen. bron

Dockers ecosysteem

Enkele populaire onderdelen in Docker's ecosysteem:

DockerCon

Er worden jaarlijks Docker conferences gehouden, dit jaar vind het plaats in San Francisco. Voor meer info, zie Dockercon.com.

Aandachtspunten

  • Consolidatie van Database data
  • Live omgevingen bij klanten: sommige klanten willen graag zelf hosten, maar ondersteunen nog geen Docker.
  • Op MacOS zijn sommige Docker gerelateerde handelingen onnodige traag.
  • Alle developers moeten de techniek onder de knie krijgen, voordat je organisatie volledig over kan.

Wrap up

Het it worked on my machine probleem is bij ons gelukkig verleden tijd, nog enkele systemen moeten geheel over maar we zijn er bijna.

Dit bespaart iedereen, inclusief product owners (onze klanten) veel tijd en energie. Opleveringen gaan sneller en beter, wat wil je nog meer?

Vragen of aanvullingen? Let me know!

-- Cheers, Joris

Bronnen

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >