Aws
is 'de' cloud van Amazon - een veelzijdige alleskunner op het gebied
van cloud-servers, services, netwerk-structuren, verbindingen en ook
kant en klare software. De omvangrijke aws-cloud biedt bij uitstek
'infrastructure-as-a-service' (IAAS), 'software-as-a-service' (SAAS)
en 'platform-as-a-service' (PAAS). Omdat aws zoveel bevat, is het voor
iedere softwareontwikkelaar wel een uitdaging om de eerste stappen te
zetten met de cloud- services en servers.
EC2 -
bouwsteen
Enkele basisbegrippen zijn goed om te leren kennen. Als eerste de
basis-bouwsteen van de aws-cloud EC-2 - deze term is een
afkorting voor Elastic Compute Cloud, waarbij het cijfer '2'
de twee keer 'C' vertegenwoordigt.
Een EC2 cloud computer lijkt op
een PC zoals we die kennen. Je kan softwareapplicaties
installeren, en draaien op je PC. Dit kan je ook
Je PC en
een EC2 hebben beiden CPUs, geheugen, en een 'harddisk'
doen op een EC2 computer van aws. Beiden - je PC en een EC2 - hebben
CPUs, geheugen, en een 'harddisk'. Elke EC2 cloud computer wordt
ergens 'gehost', in een datacenter in Europa, de Verenigede Staten of
in Azië.
Overeenkomsten en verschillen tussen een gewone PC en een EC2 cloud image.
Vanuit de 'EC2 cloud computer' hebben de
cloud engineers jaren ontwikkeld aan een steeds groeinde ecosysteem
van cloud computers, cloud-diensten, database-services, queues,
disk-storage met uiteenlopende retentietijden, en allerlei
gateway-systemen. Later is een steeds uitgebreidere machine-learning
suite ontwikkeld, en tegenwoordig ook state-of-the-art artificiële
intelligentie.
De rest van dit blog-artikel gaat over EC2 en enkele centrale
services. Wanneer je een Docker-image op je PC hebt ontwikkeld, laten
deze centrale services zo'n Docker-image op aws cloud-servers
installeren, en starten.
AWS-concepten
We hebben al het concept EC2 geïntroduceerd. Historisch is Amazon
daarmee begonnen - de server computers. Het is makkelijk om een
webapplicatie te installeren op de harddisk van een EC2 computer, deze
webapplicatie opstarten, en een extern-toegankelijk IP-adres
toekennen aan deze EC2 computer.
Naarmate de tijd verstrijkt ontstaan
steeds meer vragen. Hoe - en hoe vaak - update ik de Linux OS op mijn
EC2? Mijn webapplicatie krijgt steeds meer bezoeken tegelijk, hoe kan
ik makkelijk meer EC2 computers naast elkaar zetten, om deze groei aan
te kunnen? Waar staan de log-files? Hoe kan ik makkelijk de gedeelde
relationele database configureren voor drie EC2 computers? Dit zijn zo
enkele vragen, die hebben geleid tot de ontwikkeling van ECS en
EKS.
ECS staat voor Elastric Cloud Service, en EKS staat
voor Elastic Kubernetes Service. Zowel ECS als EKS gebruiken EC2 cloud
computers om een Docker-container te draaien. Die Docker-container
bevat je Spring-Boot, Quarkus of Python image. Je ontwikkelt eerst
lokaal de applicatie op je PC - en je test je 'Docker-container' ook
lookaal. Daarna kan je deze uploaden in ECR (Elastic Container
Registry), van AWS.
Conceptueel model van AWS, EC2, Fargate, ECS en EKS.
Ook is de ECR aangegeven voor opslag van je Docker-images.
De VPC - de virtual private cloud - omvat je EC2 computers,
en een heel aantal configuraties van deze.
Het conceptueel model - een mind-map - laat relaties zien
tussen AWS, ECR, ECS, Fargate en EKS. Ook is te zien dat EC2 de
essentiële bouwsteen is van aws. ECR gebruik je voor opslag van je
Docker-image. Wanneer je met ECS een cloud-service configureert, dan
wordt je Docker-image geïnstalleerd op EC2 computers, of op een
Fargate computer, of hetzelfde Docker-image wordt geïnstalleerd op de
'Pods' van je (Kubernetes) cluster.
Speciaal in het conceptueel model is de
VPC (Virtual Private Cloud). Zo hoort elke EC2 computer bij een
specifieke VPC. Een VPC kan ook een subnet bevatten, een Elastic
IP-adres - verbonden aan een EC2, en een VPC kan ook een security
group hebben. De 'Task' wordt vanuit ECS (Fargate) aangemaakt, maar
draait binnen een specifieke VPC.
Een VPC staat logisch gezien volledig los van andere cloud
netwerken. Je kan meerdere subnets maken: Public subnet -
bereikbaar vanaf internet via een Internet Gateway. Private subnet
- geen directe internettoegang, gebruikt NAT Gateway of is volledig
intern. Security Group: firewall per resource (EC2, ECS, RDS, etc.).
Eks staat voor Elastic Kubernetes
Service. In tegenstelling tot ECS, waar je in de web-schermen alles
kan configureren en draaiend krijgen - EKS moet je via aws cli
aanroepen doen, vanuit je terminal. Als je onder Windows draait, dan
kan je Cygwin installeren - en Linux-aanroepen inzetten. Kubernetes is
meteen zwaarder om op te zetten, en gebruikt een zwaardere
server-configuratie, bestaande uit minimaal twee EC2 cloud servers -
een cluster. Daar draaien dan Kubernetes-pods op, elk met een
Docker-image.
In EKS moet je ook aws cli aanroepen gebruiken om je VPC te
configureren. Specifiek het toekennen van een Elastic IP-adres, en het
zetten van de poort-mappings.