Våre magneto2 nettbutikker hostes alle i Amazon AWS. Vi bruker en spesifik tjeneste som heter AWS Beanstalk. AWS Beanstalk er en av mange tjenester AWS tilbyr. Beanstalk er en tjeneste som gjør det enklere å legge opp nye applikasjoner på nettet, Beanstalk bruker flere AWS tjenester også. Det er flere måter AWS Beanstalk kan brukes på, vi bruker det som kalles for Multicontainer Docker.
Det er AWS Beanstalk som er mastertjenesten for hver nettbutikk. Hver nettbutikk bruker også minimum alle disse tjenestene fra AWS:
- Beanstalk
- ELB (Elastic Load Blanacer)
- EC2
- RDS
- ElastiCache
- EFS
- SES
- S3*
* En felles S3 brukes for å lagre backups for alle våre nettbutikker.
Arkitektur over oppsett av nye nettbutikker og deployment prosess
Flytdiagrammet under viser prosessen som kjøres.
- Oppsett av ny nettbutikk betyr at man kopierer github repoet som heter magento2-image til magento2-NAVNPÅNETTBUTIKK. (nettbutikk-x).
- For hver deploy man kjører via m2-provisioner skjer det som heter deployment prosessen. Oppgaven til m2-provisioner er følgende:
- Hente ned magento2-deployment pakken, som er basispakken som brukes for nye deployment.
- Hente ned nettbutikkkoden (nettbutikk-x)
- Konfigurere konfigurasjonsfiler og sette sammen strukturen for deployment pakken. Den henter innstillinger fra m2-provisioner databasen, f.eks. om man har satt at butikken skal ha SSL må det konfigureres i konfig filene i deployment pakken.
- Sende en ny deploy til Elastic Beanstalk når man har laget deployment pakken.
Kort forklart, de involverte git repoene:
- https://github.com/markant-norge/magento2-deployment
Et «elastic beanstalk» «multi docker» container oppsett. Dette er det første som hentes ned fra github av m2-provisioner. - https://github.com/markant-norge/magento2-php-fpm-aws
Et Docker bilde for PHP som bygges av cloud.docker.com når man pusher til github. AWS bruker Dockerrun.aws.json fra magento2-deployment pakken og sier at den skal bruke dette docker repositoriet til å bygge php containeren. - https://github.com/markant-norge/magento2-image
Kopieres til et nytt repo som er nettbutikkens egen kode. Så dette er kun et standardoppsett for en ny nettbutikk.
Provision applikasjonen
http/m2-provision-prod.f8f4f28jcv.eu-west-1.elasticbeanstalk.com/
Markant har prøvd å gjøre det enklest mulig å starte nye nettbutikker, da dette er arbeid som gjerne er rutinearbeid. Derfor har vi bygget en webapplikasjon, som snakker med AWS via API’et til AWS. Denne webapplikasjonen gjør at du kan enkelt lage nye nettbutikker ved å trykke på en knapp.
Oppsett av ny nettbutikk
Hva skjer når en ny nettbutikk lages via provision applikasjonen?
- Et nytt git-repo lages i github fra vår boilerplate repo ( https://github.com/markant-norge/magento2-image ) .
Deploy
Du har også mulighet til å kjøre ut ny deploy via provision applikasjonen. Denne kjører en deploy basert på master-branchen i gitrepoet som ble laget første gang man laget applikasjonen.
Hva skjer når man trykker på deploy?
- Git repoet ( https://github.com/markant-norge/magento2-deployment ) hentes ned og det lages en pakke ut ifra gitrepoet som ble laget under oppsett. Disse 2 pakkene blir altså merget sammen til en deploypakke.
- Deploypakken pushes til AWS Beanstalk («eb deploy»).