‫Oké, nu we alles hebben geleerd over Swarm-schaling met overlay-netwerken en routeringsmesh, wil ik dat je het proces van
‫het maken van de activa of de objecten die je in een Swarm-scenario moet
‫implementeren, daadwerkelijk doorloopt.
‫We gebruiken dus niet langer de opdracht docker run, maar het netwerk en de volumes zijn
‫min of meer hetzelfde, maar iets anders.
‫Ik wil je een realistisch scenario geven van een app met meerdere lagen, en we gaan Docker's Distributed Voting-app
‫gebruiken.
‫Het heet eigenlijk de Voorbeeldstem-app.
‫Je hebt het misschien gezien in Docker-keynotes of in andere labs of tutorials.
‫Het is een vrij algemene, en ik denk dat het een geweldige app is, omdat het minstens vijf rollen heeft, of
‫verschillende containers die je moet implementeren.
‫En ze hebben allemaal een speciale functie en ze doen eigenlijk dingen die echt werken, echt doen wat
‫het moet doen.
‫En dus kun je ermee spelen en het heeft zeer typische, gedistribueerde architectuurcomponenten zoals
‫de webfrontend en de
‫worker-backend, en de sleutelwaarde in een database. Ik denk dat het erg handig is om te doen. In dit geval ga je
‫de directory swarm-app-1 gebruiken. Het staat eigenlijk in onze cursusrepo. Er is niets
‫anders dan een leesmij en een afbeelding. Van dat leesmij-bestand moet je het volume en een aantal netwerken en vijf
‫services maken die nodig zijn om deze app volledig te laten functioneren.
‫Het kan je helpen om sommige van deze commando's lokaal uit te proberen, of ze in je teksteditor te schrijven en ze een beetje op te stellen, want
‫ze zullen een beetje ingewikkeld zijn, toch. Wanneer u die docker-service
‫maakt, moet u deze verbinden met een specifiek netwerk, poorten openen en een specifieke
‫naam noemen en een specifieke afbeelding gebruiken. Het is dus misschien gemakkelijker om het lokaal te bewerken en dan gewoon in
‫je shell te knippen en te plakken, waar je zwerm zich ook bevindt.
‫Maar dat ben ik gewoon.
‫Alles gaat Docker Hub-afbeeldingen gebruiken, omdat je in de productiezwerm niet wilt bouwen.
‫Dat is normaal gesproken geen proces dat u op uw productiezwerm wilt.
‫Gewoonlijk wilt u uw gebouw ofwel via een geautomatiseerde online service zoals
‫Docker Hub of Docker Cloud doen, of ergens in uw CI/CD-pijplijn die geen middelen opslokt op uw productiezwerm.
‫In dit scenario kunnen we ons voorstellen dat onze afbeeldingen ergens anders worden gebouwd en opgeslagen
‫op Docker Hub en dat we die, wat de nieuwste versies ook zijn, gewoon naar onze Swarm moeten halen.
‫En ik zeg dit gewoon, zoals veel dingen in computerwetenschappen, dit is half wetenschap, half kunstvorm.
‫Uw commando's kunnen in totaal verschillende volgordes staan, of totaal andere optievolgordes hebben dan de mijne.
‫Je zou je netwerken verschillende dingen kunnen noemen.
‫Dat is prima.
‫Het eindresultaat is dat de applicatie werkt, dat ze op de juiste manier met elkaar kunnen
‫praten, dat je alle poorten hebt gepubliceerd en dat je de gegevens hebt beschermd in een volume.
‫Laten we eens kijken waar je tegenaan loopt.
‫Stel je voor dat je hiervoor de commando's en de architectuur moet ontwerpen.
‫En dit is wat de ontwikkelaar je zou geven die deze app heeft geschreven.
‫In dit geval zijn het waarschijnlijk veel ontwikkelaars die deze app hebben geschreven, toch?
‫Omdat we eigenlijk een web-frontend hebben die in Python is, hebben we een web-backend die
‫in Node draait.
‫We hebben een werkproces dat in . NET en dan hebben we een
‫Redis-sleutelwaardearchief en een PostgreSQL-database.
‫Dit is eigenlijk iets dat ik steeds vaker zie, waarbij verschillende teams verschillende delen van een oplossing schrijven
‫en ze gewoon de taal kunnen kiezen die volgens hen het beste is voor dat scenario.
‫En in de wereld van containers schittert dit soort toepassingen echt. Omdat onze applicaties allemaal gesegmenteerd zijn, kunnen
‫ze technisch gezien
‫nog steeds op dezelfde machine draaien, maar ze zijn allemaal tegen elkaar beschermd, zodat je
‫niet eindigt met Node die conflicteert met afhankelijkheden van Python of wat dan ook.
‫Je zult hier ook de verkeersstroom opmerken, en de stem-app heeft het niet, maar er zou
‫een pijltje moeten komen dat dit is waar de gebruikers binnenkomen in het
‫stem-app-gedeelte.
‫En je kunt zien dat de stem-app je stemmen moet pushen voor deze applicatie, die je trouwens op
‫katten en honden gaat stemmen.
‫Het zal dat in Redis duwen en dan zal de werknemer het Redis-systeem daadwerkelijk controleren
‫op iets in de wachtrij en dan de resultaten naar Postgres pushen, die dan zal worden getoond
‫op een WebSockets-backend die feitelijk live-updated is zoals je bent stemmen.
‫Als we heel snel in de Directory springen, heb ik hier wat aantekeningen geplaatst om je op weg te helpen, want er
‫zijn een paar dingen die een beetje anders en nieuw zijn.
‫Maar het servicesgedeelte zou een beetje geschreven zijn alsof het van iemand was die hun applicatie kende, maar niet wist
‫hoe deze in Docker moest worden geïmplementeerd. En dat is een vrij algemeen scenario.
‫Je kunt in de services die ik heb genoemd zien welke afbeelding je moet implementeren, de werkelijke
‫naam die je eraan moet geven, want die zijn belangrijk.
‫Dit zijn afbeeldingen die helaas hard gecodeerd zijn voor de namen waarnaar ze op het netwerk gaan zoeken.
‫In het ideale geval zou je applicaties willen die je on-the-fly kunt configureren voor wat ze moeten doen voor namen,
‫maar in dit geval gaat stemmen specifiek op zoek naar een DNS-record genaamd redis. Je kunt zien dat er hier eigenlijk
‫twee netwerken zijn. We hebben een frontend en een backend netwerk. Dat is ook vrij
‫typerend voor een grotere applicatie waar je misschien je database op een backend-netwerk wilt beschermen,
‫zodat de frontend-gebruikersapp er geen directe toegang toe heeft.
‫En dat is wat we hier laten zien en je zult merken dat de werknemer eigenlijk is verbonden met twee netwerken.
‫Dus wanneer u uw create-opdracht gebruikt, onthoud dan dat u docker-service create gebruikt, niet docker run.
‫Dus wanneer u uw docker-service create-opdracht gebruikt, moet u het --network twee keer specificeren,
‫één keer voor de frontend en één keer voor de backend.
‫Het is duidelijk dat u eerst uw netwerken moet maken.
‫Dus een deel daarvan is hier gespecificeerd. En als je de afbeelding opnieuw nodig hebt, staat
‫het architectuurdiagram hier ook, voor het geval dat conceptueel helpt bij hoe je dit gaat implementeren.
‫En natuurlijk heb je de Docker-documentatie. Mogelijk moet u de --help gebruiken in
‫het service create commando dat u alle verschillende opties geeft die u nodig heeft.
‫Daar heb je er maar drie of vier van nodig. Als je vast komt te zitten met de
‫commando's zelf, wil je misschien de eigenlijke documentatie bekijken, die ik in de bronnen van deze sectie zal plaatsen.
‫Maar dit specifieke document onder Swarm gaat eigenlijk over het maken van services en het configureren van services.
‫Het is dus een beetje omslachtig, maar er staat veel informatie in die je kan helpen als je hier vast komt
‫te zitten.
‫In de volgende video zal ik deze hele zaak zelf doornemen alsof ik jou was.
‫Veel succes en veel plezier.