ArcGIS Enterprise on Kubernetes
Hype of doorbraak?
Boris Minnaert, enterprise architect Jeroen van Winden, CTO
ArcGIS Enteprise on Kubernetes is nieuw product, dat beschikbaar komt in mei.
Voordat het gaan laten zien, willen we eerst stilstaan bij een aantal begrippen.
Want wat is dat dan eigenlijk Kubernetes?
Als je daarover gaat lezen, gaat het al snel over cloud native, containers en microservices.
En wat zijn dat dan weer?
Om dat uit te leggen, neem ik jullie mee in een gedachtenexperiment Laten iets nemen wat we allemaal kennen: de mail.
Stel we zijn de maker van een succesvol mail programma.
TEXT (BACKGROUND S)
Mail op eigen omgeving
Eigen datacenter
VM5
Mail Server5
VM2
Mail Server2
VM6
Mail Server6
VM3
Mail Server3
VM4
Mail Server4
VM1
Mail Server1
Stel we zijn de maker van een succesvol mail programma.
Waar draait dat dan?
Je omgeving zou er uit kunnen zien: een aantal VM’s en in iedere VM het mailprogramma
Stel nu dat je naar de cloud zou willen, hoe zou het er dan uit zien?
TEXT (BACKGROUND S)
Lift & shift naar de cloud …
Bij cloud provider
VM5
Mail Server5
VM2
Mail Server2
VM6
Mail Server6
VM3
Mail Server3
VM4
Mail Server4
VM1
Mail Server1
Je zou een lift & shift kunnen doen naar de cloud. Je installeert je huidige programma op servers in de cloud. Dit noemen we lift & shift.
Je hebt nog steeds een aantal VM’s en in iedere VM het mailprogramma, maar nu draait het in cloud.
Dit is een grote verandering, al zie je dat niet aan het plaatje.
Je gaat van bezit van servers naar gebruik. Je hebt minder technisch beheer. Het is net als met een lease-auto: het is dezelfde auto, maar je gaat van bezit naar gebruik.
De cloud provider biedt ontzorging en een rijke omgeving. Cloud providers zoals MS Azure, Amazon en Google bieden meer dan alleen hosting van VM’s.
Dit is vooral een organisatorische verandering. Voor sommige organisaties is dit een grote verbetering.
TEXT (BACKGROUND S)
Admin Admin Manager
To do Notes
Apps
Calendar Contacts
Utilities Tools
System Tools Utility Tools
Metrics Mail
Queue
Relational
Logs Help
Catalog
System Tools Object Store
… of herbouwen met microservices
Bij cloud provider
Maar je zou er ook voor kunnen kiezen om je applicatie van scratch af aan opnieuw te bouwen.
Dan zou ik mijn applicatie functioneel opdelen in logische componenten (mail, agenda, taken, contacten etc). En een service bouwen per component. Dat noemen we microservices
Het is dan geen lift & shift maar “geboren in de cloud” (cloud native)
Gartner gebruikt het 5R model om verschillende manieren te benoemen om naar de cloud te gaan.
• Rehost (=lift & shift)
• Refactor
• Revise
• Rebuild (cloud native)
• Replace
TEXT (BACKGROUND S)
Waarom microservices?
• Functionaliteit opdelen in kleine logische componenten en implementeren als microservices
• Uitrollen en upgraden per component
• Op en af schalen per component
4/13/2021
Waarom zou je microservices gebruiken?
Om te beginnen, als je het doet, dan moet je het zo ontwerpen dat de logische componenten weinig onderlinge afhankelijkheden hebben (loosely coupled).
Dan hoeven je productontwikkelteams minder rekening te houden met
afhankelijkheden. En dan kun je updates uitrollen per component. Je kunt dan nieuwe functionaliteit en bug fixes uitrollen met een continue stroom van kleine updates (DevOps, CI/CD), waardoor nieuwe functionaliteit dus eerder beschikbaar komt.
Bovendien kun je dan per component op en af schalen bij performance pieken Deze voordelen spelen een centrale rol in de rest van het verhaal
TEXT
Microservices draaien in containers
Hardware Hypervisor
VM Windows Bin/library App
VM Windows Bin/library App
VM Windows Bin/library App
Met VM’s
Hardware Container runtime Windows/Linux Core
Container Bin/library App
Container Bin/library App
Container Bin/library App
Met containers minder overhead
Microservices draaien in containers. Met containers heb je minder overhead dan met Virtuele Machines.
Als je met Virtuele Machines werkt, dan worden er vaak meerdere VM’s op een fysieke server gebruikt.
Dan wordt Windows dus meerdere keren geïnstalleerd op die fysieke server.
Dat betekent veel overhead.
Een container runtime draait op een compacte versie van Linux/Windows (Windows Core bv). De andere OS-componenten zitten in de container.
TEXT (BACKGROUND M)
Microservices draaien in containers
• Containers bieden lichtgewicht virtualisatie
• Container is een concept. Docker is de meest gebruikte implementatie
• Pod is groepje containers dat bij elkaar hoort en op een machine draait
• Hogere density
• Aantal applicaties dat tegelijk draait op fysieke server
Gebruik van containers betekent een hogere density, dwz er kunnen meer applicaties tegelijkertijd draaien op een fysieke server. En dat betekent minder overhead en lagere kosten.
TEXT (BACKGROUND M)
Cloud native
• Ontworpen om mogelijkheden van cloud te benutten
• Gebouwd met gebruik van microservices, containers en serverless functions
• Hoe het is gebouwd, niet waar het draait
Niet cloud native
VM5 Mail Server5
VM2 Mail Server2
VM6 Mail Server6
VM3 Mail Server3
VM4 Mail Server4
VM1 Mail Server1
Wel cloud native
Admin Admin Manager
To do Notes
Apps
Calendar Contacts
Utilities Tools
System Tools Utility Tools
Metrics Mail
Queue Relational
Logs Help
Catalog
System Tools Object Store
Cloud native
Ontworpen om mogelijkheden van cloud te benutten
Gebouwd met gebruik van microservices, containers en serverless functions Gebouwd volgens de 12 factor app methode
TEXT (BACKGROUND M)
…of maak microservices met serverless functions
• Als je geen server nodig hebt om je code op uit te rollen
AWS Lambda Azure function
Verdieping:
Je kunt microservices ook maken met serverless functions, zoals Azure Functions of AWS Lambda.
Als je een stuk code hebt gemaakt (Java, .Net etc), dan heb je normaliter een server nodig waarop je die code kunt uitrollen en wellicht nog software en licenties.
Cloud providers zoals MS Azure, Amazon en Google bieden je de mogelijkheid om code te maken en te draaien zonder dat je een server nodig hebt. Dat heet dan een serverless function.
Ook hiermee ga je van bezit naar gebruik en word je ontzorgd. Dit biedt extra flexibiliteit.
Serverless functions zijn vooral krachtig voor triggers/events
Een hele korte pubquiz
Dan komen we nu bij een vraag die niet zou misstaan in pubquiz.
Daarom doen we nu een hele korte pubquiz
Hoeveel fysieke servers heeft Google eigenlijk?
Vraag 1: Hoeveel fysieke servers heeft Google eigenlijk?
TEXT
Schaalvergroting in data centers
• Fun fact: Google, Amazon en MS Azure beheren ieder meer dan 1 miljoen fysieke servers
Aantal hyper scale data centers groeit hard volgens Cisco Global Cloud Index
Google, Amazon en MS Azure beheren ieder meer dan 1 miljoen fysieke servers Tot zover onze hele korte pubquiz
We hebben het vaak over de data explosie, maar je zou ook kunnen spreken van een data center explosie.
Want wereldwijd groeit het aantal hyper scale data centers hard, zoals je ziet in de grafiek.
In 6 jaar tijd was er bijna een verdubbeling van het aantal hyper scale data centers.
Partijen proberen kostenvoordeel te halen uit schaalvergroting
De vraag waar het nu over willen hebben is: hoe beheer je dit soort hyper scale data centers zo efficiënt mogelijk?
Bij dit soort aantallen levert een handeling die in maar in 1% of 1‰ van de gevallen nodig is nog steeds veel werk op.
TEXT (BACKGROUND M)
Schaalvergroting in data centers vraagt om slim beheer: Kubernetes
• Volautomatische beheeromgeving
− eenvoudiger schaalbaarheid en hoge beschikbaarheid realiseren
− upgraden zonder downtime en eenvoudiger bijblijven met recente versies
Kubernetes is ontwikkeld door Google, maar is nu Open Source
Kubernetes beheert Docker containers waarbinnen microservices draaien Dit noemen we ook wel orkestratie
Kubernetes regelt uitrol patches en updates - automatisch Kubernetes zorgt voor hoge beschikbaarheid - automatisch Kubernetes lost zelf storingen op (zelfhelend) - automatisch
Kubernetes draait op meerdere platformen en besturingssystemen (cloud/on- premises)
Dit vereist natuurlijk wel dat alles is aan te sturen via een API
Met Kubernetes kun je upgrades uitrollen zonder downtime. Daardoor wordt het eenvoudiger om bij te blijven met recente versies.
TEXT (BACKGROUND M)
Maar …
• Laat snelheid niet ten koste van security gaan. Betrek Security eerder in het proces (DevSecOps)
• Kubernetes is zelfhelend, maar monitor per container wat er mis gaat
• Kubernetes schaalt vanzelf op en af, maar weet wat je kunt verwachten en configureer Quality of Service (QoS)
• Dat je Kubernetes hebt, betekent niet dat je alles in Kubernetes moet doen
Verdieping:
Eenvoudig bijblijven met recente versies klinkt heel goed. Zijn er ook nadelen of dingen waar je op moet letten met Kubernetes?
Laat snelheid van het proces niet ten koste van security gaan. Betrek Security eerder in het proces (DevSecOps)
Met microservices kun je nieuwe functionaliteit en bug fixes uitrollen als een continue stroom van updates, maar hoe zorg je ervoor dat het goed blijft gaan met security? In de praktijk betekent dit dat je security eerder in het proces moet betrekken. Men spreekt daarom ook wel van Shift Left.
Kubernetes is zelfhelend, maar monitor per container wat er mis gaat.
Stel een bepaalde microservice zou regelmatig herstart moeten worden. Omdat Kubernetes zelf microservices herstart, kunnen dat soort problemen aan het zicht worden onttrokken. Maar het is natuurlijk niet goed. Daarom is het van belang de ingebouwde monitoring van Kubernetes periodiek goed te bekijken.
Kubernetes schaalt vanzelf op en af. Dat is heel mooi natuurlijk, want dan kun je een onverwachte piekbelasting soepel opvangen.
Maar aan de andere kant is het verstandig om te weten hoe je eigen code zich gedraagt onder zo’n piekbelasting. Je wil niet dat je code opeens extreem veel resources gaat gebruiken bij een piekbelasting, omdat je bv een inefficiënt algoritme of inefficiënte kaartopmaak hebt gebruikt. Natuurlijk vangt Kubernetes dat voor je op, maar dat brengt wel een prijskaartje met zich mee.
Je kunt met Quality of Service (QoS) per pod aangeven hoe Kubernetes moet omgaan met een piekbelasting.
Dat je Kubernetes hebt, betekent niet dat je alles in Kubernetes moet doen.
ArcGIS en de groei naar Cloud Native werken
Kubernetes Containers
Microservices
Docker
Cloud native applicaties geoptimaliseerd om de mogelijkheden van cloud technologie te benutten
Microservices: Functionaliteit opgedeeld in kleine logische componenten Microservices draaien in containers
Container is een concept. Docker is de meest gebruikte implementatie
Kubernetes is een volautomatische beheeromgeving om een container cluster op te zetten.
•Databases
- File - Relationeel - Elastic - Cloud Native
•Infrastructuur
- SaaS
- On-premises - Hosted in de cloud - Cloud Native
ArcGIS Cloud Strategie
Agnostisch
•Kubernetes
•Public, Private en Hybride Clouds Steeds meer Cloud Native
TEXT (BACKGROUND M)
API
ArcGIS Pro Web Apps Native Apps Custom apps Platform
integration
Base Deployment
Portal
Services
Realtime Big geodata
Imagery Notebooks
ArcGIS
TEXT (BACKGROUND M)
API
ArcGIS Pro Web Apps Native Apps Custom apps Platform
integration
Base Deployment
Portal
Services
Realtime Big geodata
Imagery Notebooks
ArcGIS
Enterprise Portal
Enterprise Server GeoEvent GeoAnalytics
Image Notebook
ArcGIS Enterprise
Windows/Linux
TEXT (BACKGROUND M)
API
ArcGIS Pro Web Apps Native Apps Custom apps Platform
integration
Base Deployment
Portal
Services
Realtime Big geodata
Imagery Notebooks
ArcGIS
Enterprise Portal
Enterprise Server GeoEvent GeoAnalytics
Image Notebook
ArcGIS Enterprise
Online Portal
Online Services
Velocity Velocity Image Notebook
ArcGIS Online
Windows/Linux SaaS
TEXT (BACKGROUND M)
API
ArcGIS Pro Web Apps Native Apps Custom apps Platform
integration
Base Deployment
Portal
Services
Realtime Big geodata
Imagery Notebooks
ArcGIS
Enterprise Portal
Enterprise Server GeoEvent GeoAnalytics
Image Notebook
ArcGIS Enterprise
Enterprise Portal containers Enterprise Service containers
Velocity Velocity Image Notebook
ArcGIS Enterprise on Kubernetes
Online Portal
Online Services
Velocity Velocity Image Notebook
ArcGIS Online
SaaS Cloud Native
Windows/Linux
ANNOUNCEMENT
Demonstratie?
TEXT (BACKGROUND S)
Kubernetes deployment
TEXT (BACKGROUND S)
Kubernetes deployment
•
Persistent Volume Controller
Volumes
Ingress
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Reverse Proxy
Container Registry Azure
AKS Amazon EKS OpenShift
TEXT (BACKGROUND S)
De eerste containers
TEXT (BACKGROUND S)
De eerste containers
•
Persistent Volume Controller
Volumes
Ingress
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Admin Admin Manager Help
Reverse Proxy
Container Registry Azure
AKS Amazon EKS OpenShift
TEXT (BACKGROUND S)
Setup in 3 stappen
TEXT (BACKGROUND S)
Finish
TEXT
Finished
TEXT (BACKGROUND S)
Finished
•
Persistent Volume Controller
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Admin Admin Manager
Spatio Temporal
Portal Sharing
Apps
Feature Server Geocode Utilities Tools
System Tools Utility Tools
Metrics Map Server
Shared Map
Relational
Object Store
Queue Reverse
Proxy
Azure AKS
Amazon EKS OpenShift
Ingress
Relational
Object Store Logs
Help
Catalog
System Tools Object Store
Spatio Temporal
Container Registry
Volumes
Services Tools Admin tools
Tools Portaal 3rdparty
TEXT
Finished
TEXT
Enterprise Manager
TEXT
TEXT (BACKGROUND S)
Finished
•
Persistent Volume Controller
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Admin Admin Manager
Spatio Temporal
Portal Sharing
Apps
Feature Server Geocode Utilities Tools
System Tools Utility Tools
Metrics Map Server
Shared Map
Relational
Object Store
Queue Reverse
Proxy
Azure AKS
Amazon EKS OpenShift
Ingress
Relational
Object Store Logs
Help
Catalog
System Tools Object Store
Spatio Temporal
Container Registry
Volumes
Services Tools Admin tools
Tools Portaal 3rdparty
TEXT (BACKGROUND M)
API
ArcGIS Pro Web Apps Native Apps Custom apps Platform
integration
Base Deployment
Portal
Services
Realtime Big geodata
Imagery Notebooks
ArcGIS
Enterprise Portal
Enterprise Server GeoEvent GeoAnalytics
Image Notebook
ArcGIS Enterprise
Velocity Velocity Image Notebook
ArcGIS Enterprise on Kubernetes
Online Portal
Online Services
Velocity Velocity Image Notebook
ArcGIS Online
SaaS Cloud Native
Enterprise Portal containers Enterprise Server containers ArcGIS Enterprise
Persistent Volume Controller Docker
Kubernetes Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes Docker
Kubernetes Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Docker Kubernetes
Admin Admin Manager Spatio
Temporal
Portal Sharing
Apps Feature Server Geocode Utilities Tools
System Tools Utility Tools
Metrics Map Server
Shared Map
Relational Object Store
Queue
Ingress
Relational
Object Store Logs Help
Catalog
System Tools Object Store
Spatio Temporal
Volumes
Windows/Linux
TEXT (BACKGROUND M)
Planning toekomstigereleases… op basis van vraag vanuit markt
In volgende updates
Track Viewer
Notebook Server GeoEvent Server
GeoAnalytics Server Raster Analytics
Image Hosting Server
Business Analyst Server OrthoMaker
GeoAI Studio Excalibur
Insights
Workflow Manager ArcGIS Solutions
Mission Server/Manager Supported at GA
Map Viewer 3x Operations Dashboards Experience Builder Presentation Viewer Activity Dashboard Workforce Scene Viewer Web App Builder Enterprise Sites Network Analysis Image Services Map Service, Feature Service, GP Service…
GIS Server Image Server Federated:
ArcGIS Enterprise on Kubernetes
User Data:
Folder Geodatabases Cloud Storage
Spatiotemporal Big Data Store
ArcGIS Indoors & SpacePlanner Map Viewer Beta
Living Atlas ArcGIS StoryMaps
Arcade
ArcGIS Configurable Apps Also…
TEXT (BACKGROUND M)
API
ArcGIS Pro Web Apps Native Apps Custom apps Platform
integration
Base Deployment
Portal
ArcGIS
Enterprise Portal
ArcGIS Enterprise
Enterprise Portal containers
ArcGIS Enterprise on Kubernetes
Online Portal
ArcGIS Online
SaaS Cloud Native
Services Enterprise
Services
Enterprise Service containers
Online Services
Data
Standard or Premium DataStore File storage
HA Data – and Object Store Relational en
Federated Datastores
Windows/Linux
TEXT (BACKGROUND M)
API
ArcGIS Pro Web Apps Native Apps Custom apps Platform
integration
Base Deployment
Portal
ArcGIS
Enterprise Portal
ArcGIS Enterprise
Enterprise Portal containers
ArcGIS Enterprise on Kubernetes
Online Portal
ArcGIS Online
SaaS Cloud Native
Services Enterprise
Services
Enterprise Service containers
Online Services
Cloud Native Data Storage In ontwikkeling
Windows/Linux
TEXT (BACKGROUND M)
Voor wie is dit?
• Moet iedereen over naar Kubernetes? Van Esri hoeft dat niet
− Organisaties maken zelf keuze voor Windows, Linux of Kubernetes
• Kan iedereen over naar ArcGIS Enterprise on Kubernetes?
− Enterprise Agreement
− Ervaring met ArcGIS Enterprise (op Windows/Linux)
− Ervaring met Kubernetes
Voor wie is dit dan?
Om te beginnen: Organisaties kozen altijd al zelf voor Windows of Linux. Dat blijft zo, er komt alleen een smaak bij. Organisaties maken zelf keuze voor Windows, Linux of Kubernetes.
We bieden dit nu aan voor organisaties met een Enterprise Agreement en met ervaring met ArcGIS Enterprise op Windows of Linux.
Verder verwachten we dat de organisatie zelf al ervaring heeft opgedaan met Kubernetes.
We zien bv een aantal grote organisaties die met hun hele IT-landschap naar
Kubernetes zijn gegaan, of daarmee bezig zijn. Voor dat soort organisaties is dit zeker interessant. Maar het is goed mogelijk dat andere organisaties dit ook interessant vinden.
TEXT (BACKGROUND M)
Wat zijn de keuzes?
Combinaties ook mogelijk Welke
omgeving?
ArcGIS Online
ArcGIS Enterprise
Waar draait het?
Bij provider On-premises
Kubernetes Windows of
Linux
ArcGIS Enterprise on Kubernetes ArcGIS Enterprise Op welk
platform?
Kubernetes- ready?
Organisaties maken deze keuzes zelf, maar architecten van Esri adviseren jullie natuurlijk graag hierbij.
De eerste keus is voor ArcGIS Online en/of ArcGIS Enterprise. Aan deze keus zou je een aparte sessie kunnen wijden en dat doen we dan ook. Zie daarvoor de sessie
“Waarom ArcGIS Online en ArcGIS Enterprise?” van Eelco Berghuis en Jan de Wit.
Als je hebt gekozen voor ArcGIS Enterprise, dan is de volgende vraag waar dit gaat draaien: On-premises in je eigen data center of bij een provider. Deze vraag moet je breder bekijken dan alleen vanuit ArcGIS, omdat er vaak allerlei verbanden zijn. Zoals data scientists die ook bij de data willen kunnen of een koppeling met een
Onderhouds Mgt Systeem. Wil je Technisch Beheer zelf doen, of wil je worden ontzorgd? Ook hierbij denken architecten van Esri natuurlijk graag met jullie mee.
Dan volgt de vraag op welk platform het moet draaien. Ook deze keus moet je breder bekijken dan alleen vanuit ArcGIS.
Tot slot, het zijn natuurlijk geen of-of keuzes. Het is heel goed mogelijk om combinaties te maken, afhankelijk van de situatie.
TEXT
Samenvattend
• ArcGIS Enterprise was beschikbaar op 2 platformen (Windows, Linux), voortaan op 3 platformen
• ArcGIS Enterprise on Kubernetes
− is functioneel in principe gelijk aan ArcGIS Enterprise op Windows/Linux
− eenvoudiger schaalbaarheid en hoge beschikbaarheid realiseren
− upgraden zonder downtime en eenvoudiger bijblijven met recente versies
− eenvoudiger aansluiten op cloud native architectuur
• ArcGIS Enterprise on Kubernetes is weer stap van Esri op cloud native pad
TEXT (BACKGROUND M)
Hiermee aan de slag? Neem contact met ons op
Boris Minnaert
Enterprise architect bminnaert@esri.nl
Jeroen van Winden
CTO jvanwinden@esri.nl
INTRO + OUTRO