SlideShare a Scribd company logo
Michael Villiger
Sr.Technical PartnerManager,Dynatrace
Replatforming Legacy
Packaged Applications: Block by
Block with Minecraft
Agenda
• Why Minecraftas an example?
• Earlystepstowardsmodernization:
• Minecraftona VM
• MinecraftonDocker
• Assessingcurrentstate
• Migrating to Tanzu KubernetesGrid(TKG)
• Initialperformancegoals
• SolvingforI/O
• vSphere CPI / CSI
• StorageClasses, PersistentVolumes, and PVCs, OH MY
• AccessingMinecraftonK8sfromthe outsideworld
• K8srequests/ limits
• Final thoughts
WhyMinecraft as anexample?
• Java based, but closed source
• Effectivelysingle-threaded
• Mostactionsinworldtake placewithina single“tick”
• Breaking blocks
• Placing blocks
• What the various blocks aredoing (SIGNIFICANT in modded Minecraft)
• What monsters and creatures aredoing
• Ticksaredesignedtorunwithin50ms
• If actions in a tick run longer than 50ms, ticks will be skipped!
• Skipped ticks perceived as lag
• Brokenblocksre-appear,placedblocksdisappear,playerslocationcan shiftbackwards
• Significantpersistentdiskrequirements
• The world itself
• The all-important backups!
Earlysteps towards “modernization”
Minecraft on aVM(KVM)
• Initialsteps at isolating Minecraft workload:
• QEMU+KVMon Ubuntu
• QCOW on ZFS +Spinning Rust
• This worked for a couple of years… But too slow ona Xeon E5-2620v2:
[minecraft/MinecraftServer]: Can't keep up! Did the system time change, or is the server overloaded? Running 23690ms behind, skipping 473 tick(s)
Minecraft on Docker
• Isolated(ish) from underlyingOS
• Allowed nearbare-metal performance
• Allowed easier access to both fast (SSD) and slow (ZFS) storage
• Fast storage for the world
• Slow storage forbackups
• Still using bindmounts because this predates volumes in Docker…
# dockerfile
FROM openjdk:8-jdk-slim
ENV MOTD="Minecraft Server: Enigmatica2"
ENV MAP=world
ENV DIFFICULTY=2
ENV GAMEMODE=0
ENV MAXPLAYERS=20
ENV PVP=true
ENV VIEWDISTANCE=10
ENV HARDCORE=false
RUN apt-get update && apt-get install -y wget unzip gosu
RUN addgroup --gid 1234 minecraft
RUN adduser --disabled-password --home=/home/minecraft/enigmatica2 --uid 1234 
--gid 1234 --gecos "minecraft user" minecraft
RUN mkdir /tmp/enigmatica2 && cd /tmp/enigmatica2 && 
wget -q -c <snipped>
unzip Enigmatica2Server.zip && 
rm Enigmatica2Server.zip && 
echo "eula=true" > eula.txt
ADD entrypoint.sh /entrypoint.sh
RUN chown minecraft:minecraft /entrypoint.sh
COPY mc-monitor /usr/local/bin/mc-monitor
COPY . /tmp/enigmatica2
RUN chown -R minecraft:minecraft /tmp/enigmatica2 && 
chmod +x /tmp/enigmatica2/ServerStartLinux.sh && 
chmod +x /entrypoint.sh && 
chmod +x /usr/local/bin/mc-monitor
WORKDIR /home/minecraft/enigmatica2
EXPOSE 25565
ENTRYPOINT ["/entrypoint.sh"]
docker run -d -it --name minecraft-enig-06 
--mount type=bind,source=/var/minecraft/data/enigmatica2_pregen_bop_world/world,target=/home/minecraft/enigmatica2/world 
--mount type=bind,source=/tank/isos/minecraft/worlds/enigmatica2_pregen_bop_world/backups,target=/home/minecraft/enigmatica2/backups 
-p 0.0.0.0:25569:25565 -e DEFAULT_OP=Akirasoft -e MINECRAFT_EULA=true mvilliger/enigmatica2:1.77
Assessing current state
• Host and all containers on it automatically
monitored by Dynatrace
• CPU mostly ~6-8%(pegging a bit morethan a core
24/7)
• Modded Minecraft is a memoryhog
Assessing current state
• Need to tracktransaction response time and
throughput(tick time):
• CPUanalysis shows significant CPUin func_71217p
• Normally,we’d just decompile the class, but Minecraft
is obfuscated. Luckilythe Mod Coder Pack (MCP)*
exists, and can tell us about this method:
• Name: tick
• Description: Mainfunction called by run() every loop.
• So wecreate a custom service:
*http://export.mcpbot.bspk.rs/
Migratingto Tanzu Kubernetes Grid
Initialperformance goals–Quarantine homelabupgrades!
• Needed to moveto an efficient yetaffordable modern CPU with decent
thread countyet highclockspeed
• AMD Epyc7302p (16c/32c, 3.3ghz)
• Needed relatively low latencystorage and HCIbenefits
• 3 node cluster
• All-flash vSAN
• IntelP4610forcache tier
• CapacitytierisnotontheHCLsoIwon’tmentionithere…
• 10gb networking all around!
Solvingfor I/O–vSphereCPI/CSI–In anutshell…
• Cloud Provider Interface(CPI)
• Interface between K8sandthe underlying IaaS (providing config infotonodes, andmore)
• In-treeCPI
• Part of Kubernetescore
• Subjectto Kubernetesreleasecycle
• Out-of-treeCPI(https://cloud-provider-vsphere.sigs.k8s.io/concepts/cpi_overview.html)
• Managedby cloudprovider,in thiscaseVMware
• ContainerStorage Interface(CSI) (https://cloud-provider-vsphere.sigs.k8s.io/concepts/csi_overview.html)
• Abstraction layerbetween Container Orchestrator (K8s) andStorage
• Works with CPItoattach storage tothe rightnodes
• Requires out-of-tree CPI
• TKG deploys and configures the out-of-treevSphere CPIand CSI out of the box, it just works!
• StorageClasses allow the CSIto provision storage for us:
• Fast vSAN flash:
• Slow NFS via vSAN:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: csi.vsphere.vmware.com
parameters:
datastoreurl: "ds:///vmfs/volumes/476fefe3-22c24a52/"
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: csi.vsphere.vmware.com
parameters:
datastoreurl: "ds:///vmfs/volumes/vsan:5284746fcc615ee8-051620842ced0820/"
Solving forI/O –
StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
• StorageClasses:
• When using the out-of-tree vSphere CSIbe sure touse the rightprovisioner!!!
USE:
provisioner: csi.vsphere.vmware.com
NOT:
provisioner: kubernetes.io/vsphere-volume
Solving forI/O –
StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
• PersistentVolumeClaim:
• Used todefine information aroundthe persistent storage our appneeds
• PersistentVolume:
• Either created in advance ordynamically when a PersistentVolumeClaim is created
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mc-world-claim
annotations:
volume.beta.kubernetes.io/storage-class: fast
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: fast
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mc-backup-claim
annotations:
volume.beta.kubernetes.io/storage-class: slow
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: slow
$ kubectl get persistentvolumes
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-a70792ee-353c-45ce-9ccf-f56ecd863161 20Gi RWO Delete Bound minecraft/mc-world-claim fast 5d4h
pvc-bb6eeb96-ca94-423d-a7e1-c42c7d94d55a 100Gi RWO Delete Bound minecraft/mc-backup-claim slow 5d4h
Solving forI/O –
StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
• PersistentVolumes get mounted as volumesin yourdeployment:
• Volumematches up to PersistentVolumeClaim
• volumeMount defines wherein the containerthe filesystem appears
spec:
volumes:
- name: minecraft-data
persistentVolumeClaim:
claimName: mc-world-claim
- name: minecraft-backups
persistentVolumeClaim:
claimName: mc-backup-claim
containers:
- name: mc-enigmatica-server
image: mvilliger/enigmatica2:1.77
env:
- name: DEFAULT_OP
value: 'Akirasoft'
- name: MINECRAFT_EULA
value: 'true'
ports:
- containerPort: 25565
name: minecraft
volumeMounts:
- name: minecraft-data
mountPath: /home/minecraft/enigmatica2/world
- name: minecraft-backups
mountPath: /home/minecraft/enigmatica2/backups
Solving forI/O –
StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
Deploymentinfull
• Onlya single instance since wecan’t “scale-out” this monolith
• Usingsimple definitions of environmentvariables, could beimproved with config-
map but KISSprinciple applies
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mc-enigmatica-server
namespace: minecraft
labels:
app: mc-enigmatica-server
spec:
replicas: 1
selector:
matchLabels:
app: mc-enigmatica-server
template:
metadata:
labels:
app: mc-enigmatica-server
spec:
volumes:
- name: minecraft-data
persistentVolumeClaim:
claimName: mc-world-claim
- name: minecraft-backups
persistentVolumeClaim:
claimName: mc-backup-claim
containers:
- name: mc-enigmatica-server
image: mvilliger/enigmatica2:1.77
env:
- name: DEFAULT_OP
value: 'Akirasoft'
- name: MINECRAFT_EULA
value: 'true'
ports:
- containerPort: 25565
name: minecraft
volumeMounts:
- name: minecraft-data
mountPath: /home/minecraft/enigmatica2/world
- name: minecraft-backups
mountPath: /home/minecraft/enigmatica2/backups
AccessingMinecraft onK8s from theoutside world
• Ideallywe’d use NSX-Tbut I don’t havethat deployed yet, so MetalLB to the rescue!
• MetalLB requires configuration before it does anything,hereI just give it a pool of unusedIPs on myLAN
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.18.10-192.168.18.250
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
AccessingMinecraft onK8s from theoutside world
• Now that we havea load balanceravailable, wecan create a service of type LoadBalancer:
• This provides access to LANclients, for myuse-case Iuse NAT/port-forwardingto provide access to the outside world
---
apiVersion: v1
kind: Service
metadata:
name: mc-enigmatica-server-service
labels:
app: mc-enigmatica-server
namespace: minecraft
spec:
type: LoadBalancer
ports:
- port: 25565
protocol: TCP
targetPort: 25565
selector:
app: mc-enigmatica-server
K8srequests andlimits
• Requests:
• Used by scheduler toplace pods on nodes
• If set to higher than node size, pods will never get scheduled (we need
XL worker nodes here!)
• We know Minecraft will use over acore, andquite a bit ofmemory
• Limits
• Exceeding memory limit will result in podbeing killed
• Exceeding CPUlimit willresult in pod being throttled
• butwecanmonitorforthatoccurring!
• Setting these tosane limits just over what our requests are
resources:
limits:
memory: 12Gi
cpu: 2000m
requests:
memory: 11Gi
cpu: 2000m
Current state:Runsgreat!!!
Finalthoughts
Final thoughts
• Thereare more complicated Minecraft Docker images out there,the most advanced is probably itzg/minecraft-server
(https://hub.docker.com/r/itzg/minecraft-server/)
• Sourcing hardware during a pandemic is hard. Some thoughts:
• From placedorder toworking environment took over 3months
• Hardware failures abounded:
• OneDOACPU thattook6weekstoreplaceduetonone existingin theUS
• Onefailed (melted)CPU socket,takinganotherCPU withit
• Bad CAT6cables causing sporadic vSANoutages
• If anyone wants tohop on the server, reach out tome on Twitter: @mikevilliger
• The new server is really fast!
Simply smarter clouds

More Related Content

What's hot

DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
Docker, Inc.
 
GIDS_what does_cloud-native_mean_anyway?
GIDS_what does_cloud-native_mean_anyway?GIDS_what does_cloud-native_mean_anyway?
GIDS_what does_cloud-native_mean_anyway?
Grace Jansen
 
OpenShift Virtualization - VM and OS Image Lifecycle
OpenShift Virtualization - VM and OS Image LifecycleOpenShift Virtualization - VM and OS Image Lifecycle
OpenShift Virtualization - VM and OS Image Lifecycle
Mihai Criveti
 
Deploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersDeploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on Containers
Imesh Gunaratne
 
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
Mihai Criveti
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
Chakradhar Rao Jonagam
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Ambassador Labs
 
Kubernetes in Higher Education
Kubernetes in Higher EducationKubernetes in Higher Education
Kubernetes in Higher Education
laupow
 
DCEU 18: Docker Container Security
DCEU 18: Docker Container SecurityDCEU 18: Docker Container Security
DCEU 18: Docker Container Security
Docker, Inc.
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
Docker, Inc.
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
Ambassador Labs
 
DCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and ArchitectureDCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and Architecture
Docker, Inc.
 
Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1
Hao H. Zhang
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Red Hat Developers
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
Docker, Inc.
 
Docker Roadshow 2016
Docker Roadshow 2016Docker Roadshow 2016
Docker Roadshow 2016
Docker, Inc.
 
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
Docker, Inc.
 
Docker EE Deep Dive
Docker EE Deep DiveDocker EE Deep Dive
Docker EE Deep Dive
Docker, Inc.
 
Practical Design Patterns in Docker Networking
Practical Design Patterns in Docker NetworkingPractical Design Patterns in Docker Networking
Practical Design Patterns in Docker Networking
Docker, Inc.
 
Websockets: Pushing the web forward
Websockets: Pushing the web forwardWebsockets: Pushing the web forward
Websockets: Pushing the web forward
Mark Roden
 

What's hot (20)

DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
 
GIDS_what does_cloud-native_mean_anyway?
GIDS_what does_cloud-native_mean_anyway?GIDS_what does_cloud-native_mean_anyway?
GIDS_what does_cloud-native_mean_anyway?
 
OpenShift Virtualization - VM and OS Image Lifecycle
OpenShift Virtualization - VM and OS Image LifecycleOpenShift Virtualization - VM and OS Image Lifecycle
OpenShift Virtualization - VM and OS Image Lifecycle
 
Deploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersDeploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on Containers
 
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
Kubernetes in Higher Education
Kubernetes in Higher EducationKubernetes in Higher Education
Kubernetes in Higher Education
 
DCEU 18: Docker Container Security
DCEU 18: Docker Container SecurityDCEU 18: Docker Container Security
DCEU 18: Docker Container Security
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
 
DCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and ArchitectureDCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and Architecture
 
Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
 
Docker Roadshow 2016
Docker Roadshow 2016Docker Roadshow 2016
Docker Roadshow 2016
 
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
 
Docker EE Deep Dive
Docker EE Deep DiveDocker EE Deep Dive
Docker EE Deep Dive
 
Practical Design Patterns in Docker Networking
Practical Design Patterns in Docker NetworkingPractical Design Patterns in Docker Networking
Practical Design Patterns in Docker Networking
 
Websockets: Pushing the web forward
Websockets: Pushing the web forwardWebsockets: Pushing the web forward
Websockets: Pushing the web forward
 

Similar to Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft

Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 Presentation
Sreenivas Makam
 
Kubernetes - Starting with 1.2
Kubernetes  - Starting with 1.2Kubernetes  - Starting with 1.2
Kubernetes - Starting with 1.2
William Stewart
 
Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3
Velocidex Enterprises
 
Linux Integrity Mechanisms - Protecting Container Runtime as an example
Linux Integrity Mechanisms - Protecting Container Runtime as an exampleLinux Integrity Mechanisms - Protecting Container Runtime as an example
Linux Integrity Mechanisms - Protecting Container Runtime as an example
Clay (Chih-Hao) Chang
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8s
Belmiro Moreira
 
Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !
Dinakar Guniguntala
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
Brennan Saeta
 
Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015
Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015
Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015
Datadog
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !
Anthony Dahanne
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
Dave Pitts
 
Introducing Koki Short
Introducing Koki ShortIntroducing Koki Short
Introducing Koki Short
Sidhartha Mani
 
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
NETWAYS
 
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
NETWAYS
 
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
CODE BLUE
 
Meder Kydyraliev - Mining Mach Services within OS X Sandbox
Meder Kydyraliev - Mining Mach Services within OS X SandboxMeder Kydyraliev - Mining Mach Services within OS X Sandbox
Meder Kydyraliev - Mining Mach Services within OS X SandboxDefconRussia
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous Delivery
Carlos Sanchez
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Carlos Sanchez
 
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 Cloud-native applications with Java and Kubernetes - Yehor Volkov Cloud-native applications with Java and Kubernetes - Yehor Volkov
Cloud-native applications with Java and Kubernetes - Yehor Volkov
Kuberton
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE
 
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Altinity Ltd
 

Similar to Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft (20)

Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 Presentation
 
Kubernetes - Starting with 1.2
Kubernetes  - Starting with 1.2Kubernetes  - Starting with 1.2
Kubernetes - Starting with 1.2
 
Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3
 
Linux Integrity Mechanisms - Protecting Container Runtime as an example
Linux Integrity Mechanisms - Protecting Container Runtime as an exampleLinux Integrity Mechanisms - Protecting Container Runtime as an example
Linux Integrity Mechanisms - Protecting Container Runtime as an example
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8s
 
Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !Java and Containers - Make it Awesome !
Java and Containers - Make it Awesome !
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
 
Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015
Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015
Monitoring Docker at Scale - Docker San Francisco Meetup - August 11, 2015
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
 
Introducing Koki Short
Introducing Koki ShortIntroducing Koki Short
Introducing Koki Short
 
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
 
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
OSDC 2015: Martin Gerhard Loschwitz - Kristian Köhntopp | 45 Minutes of OpenS...
 
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
 
Meder Kydyraliev - Mining Mach Services within OS X Sandbox
Meder Kydyraliev - Mining Mach Services within OS X SandboxMeder Kydyraliev - Mining Mach Services within OS X Sandbox
Meder Kydyraliev - Mining Mach Services within OS X Sandbox
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous Delivery
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
 
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 Cloud-native applications with Java and Kubernetes - Yehor Volkov Cloud-native applications with Java and Kubernetes - Yehor Volkov
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
 
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
 

More from VMware Tanzu

Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14
VMware Tanzu
 
What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
VMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
VMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
VMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
VMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
VMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
VMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
VMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
VMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
VMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
VMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
VMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
VMware Tanzu
 

More from VMware Tanzu (20)

Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14
 
What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 

Recently uploaded

SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
Sharepoint Designs
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 

Recently uploaded (20)

SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 

Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft

  • 1. Michael Villiger Sr.Technical PartnerManager,Dynatrace Replatforming Legacy Packaged Applications: Block by Block with Minecraft
  • 2. Agenda • Why Minecraftas an example? • Earlystepstowardsmodernization: • Minecraftona VM • MinecraftonDocker • Assessingcurrentstate • Migrating to Tanzu KubernetesGrid(TKG) • Initialperformancegoals • SolvingforI/O • vSphere CPI / CSI • StorageClasses, PersistentVolumes, and PVCs, OH MY • AccessingMinecraftonK8sfromthe outsideworld • K8srequests/ limits • Final thoughts
  • 3. WhyMinecraft as anexample? • Java based, but closed source • Effectivelysingle-threaded • Mostactionsinworldtake placewithina single“tick” • Breaking blocks • Placing blocks • What the various blocks aredoing (SIGNIFICANT in modded Minecraft) • What monsters and creatures aredoing • Ticksaredesignedtorunwithin50ms • If actions in a tick run longer than 50ms, ticks will be skipped! • Skipped ticks perceived as lag • Brokenblocksre-appear,placedblocksdisappear,playerslocationcan shiftbackwards • Significantpersistentdiskrequirements • The world itself • The all-important backups!
  • 5. Minecraft on aVM(KVM) • Initialsteps at isolating Minecraft workload: • QEMU+KVMon Ubuntu • QCOW on ZFS +Spinning Rust • This worked for a couple of years… But too slow ona Xeon E5-2620v2: [minecraft/MinecraftServer]: Can't keep up! Did the system time change, or is the server overloaded? Running 23690ms behind, skipping 473 tick(s)
  • 6. Minecraft on Docker • Isolated(ish) from underlyingOS • Allowed nearbare-metal performance • Allowed easier access to both fast (SSD) and slow (ZFS) storage • Fast storage for the world • Slow storage forbackups • Still using bindmounts because this predates volumes in Docker… # dockerfile FROM openjdk:8-jdk-slim ENV MOTD="Minecraft Server: Enigmatica2" ENV MAP=world ENV DIFFICULTY=2 ENV GAMEMODE=0 ENV MAXPLAYERS=20 ENV PVP=true ENV VIEWDISTANCE=10 ENV HARDCORE=false RUN apt-get update && apt-get install -y wget unzip gosu RUN addgroup --gid 1234 minecraft RUN adduser --disabled-password --home=/home/minecraft/enigmatica2 --uid 1234 --gid 1234 --gecos "minecraft user" minecraft RUN mkdir /tmp/enigmatica2 && cd /tmp/enigmatica2 && wget -q -c <snipped> unzip Enigmatica2Server.zip && rm Enigmatica2Server.zip && echo "eula=true" > eula.txt ADD entrypoint.sh /entrypoint.sh RUN chown minecraft:minecraft /entrypoint.sh COPY mc-monitor /usr/local/bin/mc-monitor COPY . /tmp/enigmatica2 RUN chown -R minecraft:minecraft /tmp/enigmatica2 && chmod +x /tmp/enigmatica2/ServerStartLinux.sh && chmod +x /entrypoint.sh && chmod +x /usr/local/bin/mc-monitor WORKDIR /home/minecraft/enigmatica2 EXPOSE 25565 ENTRYPOINT ["/entrypoint.sh"] docker run -d -it --name minecraft-enig-06 --mount type=bind,source=/var/minecraft/data/enigmatica2_pregen_bop_world/world,target=/home/minecraft/enigmatica2/world --mount type=bind,source=/tank/isos/minecraft/worlds/enigmatica2_pregen_bop_world/backups,target=/home/minecraft/enigmatica2/backups -p 0.0.0.0:25569:25565 -e DEFAULT_OP=Akirasoft -e MINECRAFT_EULA=true mvilliger/enigmatica2:1.77
  • 7. Assessing current state • Host and all containers on it automatically monitored by Dynatrace • CPU mostly ~6-8%(pegging a bit morethan a core 24/7) • Modded Minecraft is a memoryhog
  • 8. Assessing current state • Need to tracktransaction response time and throughput(tick time): • CPUanalysis shows significant CPUin func_71217p • Normally,we’d just decompile the class, but Minecraft is obfuscated. Luckilythe Mod Coder Pack (MCP)* exists, and can tell us about this method: • Name: tick • Description: Mainfunction called by run() every loop. • So wecreate a custom service: *http://export.mcpbot.bspk.rs/
  • 10. Initialperformance goals–Quarantine homelabupgrades! • Needed to moveto an efficient yetaffordable modern CPU with decent thread countyet highclockspeed • AMD Epyc7302p (16c/32c, 3.3ghz) • Needed relatively low latencystorage and HCIbenefits • 3 node cluster • All-flash vSAN • IntelP4610forcache tier • CapacitytierisnotontheHCLsoIwon’tmentionithere… • 10gb networking all around!
  • 11. Solvingfor I/O–vSphereCPI/CSI–In anutshell… • Cloud Provider Interface(CPI) • Interface between K8sandthe underlying IaaS (providing config infotonodes, andmore) • In-treeCPI • Part of Kubernetescore • Subjectto Kubernetesreleasecycle • Out-of-treeCPI(https://cloud-provider-vsphere.sigs.k8s.io/concepts/cpi_overview.html) • Managedby cloudprovider,in thiscaseVMware • ContainerStorage Interface(CSI) (https://cloud-provider-vsphere.sigs.k8s.io/concepts/csi_overview.html) • Abstraction layerbetween Container Orchestrator (K8s) andStorage • Works with CPItoattach storage tothe rightnodes • Requires out-of-tree CPI • TKG deploys and configures the out-of-treevSphere CPIand CSI out of the box, it just works!
  • 12. • StorageClasses allow the CSIto provision storage for us: • Fast vSAN flash: • Slow NFS via vSAN: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: slow provisioner: csi.vsphere.vmware.com parameters: datastoreurl: "ds:///vmfs/volumes/476fefe3-22c24a52/" apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: csi.vsphere.vmware.com parameters: datastoreurl: "ds:///vmfs/volumes/vsan:5284746fcc615ee8-051620842ced0820/" Solving forI/O – StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
  • 13. • StorageClasses: • When using the out-of-tree vSphere CSIbe sure touse the rightprovisioner!!! USE: provisioner: csi.vsphere.vmware.com NOT: provisioner: kubernetes.io/vsphere-volume Solving forI/O – StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
  • 14. • PersistentVolumeClaim: • Used todefine information aroundthe persistent storage our appneeds • PersistentVolume: • Either created in advance ordynamically when a PersistentVolumeClaim is created --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mc-world-claim annotations: volume.beta.kubernetes.io/storage-class: fast spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: fast --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mc-backup-claim annotations: volume.beta.kubernetes.io/storage-class: slow spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Gi storageClassName: slow $ kubectl get persistentvolumes NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-a70792ee-353c-45ce-9ccf-f56ecd863161 20Gi RWO Delete Bound minecraft/mc-world-claim fast 5d4h pvc-bb6eeb96-ca94-423d-a7e1-c42c7d94d55a 100Gi RWO Delete Bound minecraft/mc-backup-claim slow 5d4h Solving forI/O – StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
  • 15. • PersistentVolumes get mounted as volumesin yourdeployment: • Volumematches up to PersistentVolumeClaim • volumeMount defines wherein the containerthe filesystem appears spec: volumes: - name: minecraft-data persistentVolumeClaim: claimName: mc-world-claim - name: minecraft-backups persistentVolumeClaim: claimName: mc-backup-claim containers: - name: mc-enigmatica-server image: mvilliger/enigmatica2:1.77 env: - name: DEFAULT_OP value: 'Akirasoft' - name: MINECRAFT_EULA value: 'true' ports: - containerPort: 25565 name: minecraft volumeMounts: - name: minecraft-data mountPath: /home/minecraft/enigmatica2/world - name: minecraft-backups mountPath: /home/minecraft/enigmatica2/backups Solving forI/O – StorageClasses, PersistentVolumes, and PersistentVolumeClaims, OH MY!
  • 16. Deploymentinfull • Onlya single instance since wecan’t “scale-out” this monolith • Usingsimple definitions of environmentvariables, could beimproved with config- map but KISSprinciple applies --- apiVersion: apps/v1 kind: Deployment metadata: name: mc-enigmatica-server namespace: minecraft labels: app: mc-enigmatica-server spec: replicas: 1 selector: matchLabels: app: mc-enigmatica-server template: metadata: labels: app: mc-enigmatica-server spec: volumes: - name: minecraft-data persistentVolumeClaim: claimName: mc-world-claim - name: minecraft-backups persistentVolumeClaim: claimName: mc-backup-claim containers: - name: mc-enigmatica-server image: mvilliger/enigmatica2:1.77 env: - name: DEFAULT_OP value: 'Akirasoft' - name: MINECRAFT_EULA value: 'true' ports: - containerPort: 25565 name: minecraft volumeMounts: - name: minecraft-data mountPath: /home/minecraft/enigmatica2/world - name: minecraft-backups mountPath: /home/minecraft/enigmatica2/backups
  • 17. AccessingMinecraft onK8s from theoutside world • Ideallywe’d use NSX-Tbut I don’t havethat deployed yet, so MetalLB to the rescue! • MetalLB requires configuration before it does anything,hereI just give it a pool of unusedIPs on myLAN apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.18.10-192.168.18.250 kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
  • 18. AccessingMinecraft onK8s from theoutside world • Now that we havea load balanceravailable, wecan create a service of type LoadBalancer: • This provides access to LANclients, for myuse-case Iuse NAT/port-forwardingto provide access to the outside world --- apiVersion: v1 kind: Service metadata: name: mc-enigmatica-server-service labels: app: mc-enigmatica-server namespace: minecraft spec: type: LoadBalancer ports: - port: 25565 protocol: TCP targetPort: 25565 selector: app: mc-enigmatica-server
  • 19. K8srequests andlimits • Requests: • Used by scheduler toplace pods on nodes • If set to higher than node size, pods will never get scheduled (we need XL worker nodes here!) • We know Minecraft will use over acore, andquite a bit ofmemory • Limits • Exceeding memory limit will result in podbeing killed • Exceeding CPUlimit willresult in pod being throttled • butwecanmonitorforthatoccurring! • Setting these tosane limits just over what our requests are resources: limits: memory: 12Gi cpu: 2000m requests: memory: 11Gi cpu: 2000m
  • 22. Final thoughts • Thereare more complicated Minecraft Docker images out there,the most advanced is probably itzg/minecraft-server (https://hub.docker.com/r/itzg/minecraft-server/) • Sourcing hardware during a pandemic is hard. Some thoughts: • From placedorder toworking environment took over 3months • Hardware failures abounded: • OneDOACPU thattook6weekstoreplaceduetonone existingin theUS • Onefailed (melted)CPU socket,takinganotherCPU withit • Bad CAT6cables causing sporadic vSANoutages • If anyone wants tohop on the server, reach out tome on Twitter: @mikevilliger • The new server is really fast!