Professional Documents
Culture Documents
• Idea
• PoC (Proof-of-Concept)
• Live demonstration
• PoC results
• Questions?
• Bonus info
o Intro to Azure Kubernetes Service
▪ Docker
▪ Kubernetes
▪ AKS
3 MAY 2023
Energinet – Intro
3 MAY 2023
Energinet – Intro
3 MAY 2023
Energinet – Task
With the already high share of renewable, fluctuating and distributed production &
consumption, Energinet is close to the limit on how many Security Analysis’ the Control
Center can perform, due to limitations in the current application & IT-infrastructure setup.
In the coming decade, Energinet will face a dramatic increase in both transmission and
distribution grid connected fluctuating production & consumption which will further
increase the need for more Security Analysis’ to be performed.
• https://energinet.dk/media/y5rhoqjy/pathways-towards-a-robust-future-energy-system_energinet-2023-01-23.pdf
What to do…?
Install more traditional hardware...?
Use modern technology...?
3 MAY 2023
Idea
3 MAY 2023
Idea – Intro Docker
What is Docker?
Docker is a containerization platform used to develop, ship, and run containers. Docker doesn't use a hypervisor, and you can run Docker on
your desktop or laptop if you're developing and testing applications. The desktop version of Docker supports Linux, Windows, and macOS.
For production systems, Docker is available for server environments, including many variants of Linux and Microsoft Windows Server 2016
and above. Many clouds, including Azure, support Docker.
What is an image?
An image is a read-only template with instructions for creating a Docker container. Often, an image is based on another image, with some
additional customization.
The container image becomes the unit we use to distribute our applications.
What is a container?
A container is a runnable instance of an image. You can create, start, stop, move, or delete a container using the Docker API or CLI. You can
connect a container to one or more networks, attach storage to it, or even create a new image based on its current state.
3 MAY 2023
Idea – Intro Kubernetes
What is Kubernetes?
Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both
declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely
available.
What is Pod?
Pods are the smallest deployable units of computing that you can create and manage in Kubernetes.
A Pod (as in a pod of whales or pea pod) is a group of one or more containers, with shared storage and network resources, and a
specification for how to run the containers. A Pod's contents are always co-located and co-scheduled, and run in a shared context. A Pod
models an application-specific "logical host": it contains one or more application containers which are relatively tightly coupled. In non-cloud
contexts, applications executed on the same physical or virtual machine are analogous to cloud applications executed on the same logical
host.
3 MAY 2023
Idea – Concept
Why not use modern container technologies in order to launch PowerFactory incapsulated in a
Docker image as an “Individual Grid Model (IGM) serializing” & “Security Analysis” engine with CIM
based in- & output – automatically scaled based on demand?
Windows server
Image
PowerFactoryComponent
Python application
PowerFactoryComponent
Python application
Image
Settings PowerFactoryComponent
Python application
❑ IGM
❑ Security analysis
PowerFactoryOrchestrator
Fetch input data & launch
containers to produce the
desired output Container orchestration system
Image
Settings PowerFactoryComponent
Python application
✓ IGM
❑ Security analysis
Container Output
Launch
IGM
containers
Container
Output
Container
IGM
3 MAY 2023
Idea – Concept Image registry
Windows server
Image
Settings PowerFactoryComponent
Python application
❑ IGM
✓ Security analysis
PowerFactoryOrchestrator
Fetch input data & launch
containers to produce the
desired output Container orchestration system
3 MAY 2023
PoC – Vision
In early 2023 Energinet, Microsoft Denmark & Fellowmind Denmark agreed to initiate a Proof-of-
Concept (PoC) – with support from DIgSILENT – in order to validate this hypothesis:
“It is possible to use PowerFactory for Individual Grid Model (IGM) generation, and to perform
Security Analysis, in a containerized cloud environment – Docker images in a Microsoft Azure
Kubernetes Service (AKS) setup – based om Common Grid Model Exchange Standard (CGMES) &
Common Information Model (CIM) data exchanges”
3 MAY 2023
PoC – Scope
• IGM creation
• Perform multiple parallel IGM creation processes according to CGMES 2.4.15 format
• Steady state Security Analysis
• Perform multiple parallel Steady state Security Analysis processes based on CGMES 2.4.15 models
• Scalability test
• Will the setup be able to scale up & down according to the demand?
• Performance tests
• Try to identify the optimal parallel processes for both IGM creation & Security Analysis (Limit: Available PowerFactory
licenses)
• Eg. price indications/estimates
• Present different price structures for different scenarios (consider redundancy)
3 MAY 2023
PoC – Expected benefits
• Easy scaling
By utilizing Azure Kubernetes Service, it is possible to start as many parallel processes as needed, with containers all based on the same image, and only pay for the compute power when it is
used.
• Fast rollback
In case containers, based on new Docker images, starts to malfunction or fail – due to issues not covered in the test phase – it is easy to rollback to a previous version of the Docker images
when launching new containers.
3 MAY 2023
Azure Kubernetes Service (AKS) manages your hosted Kubernetes
environment and makes it simple to deploy and manage containerized
applications in Azure. Your AKS environment is enabled with features
PoC – Setup such as automated updates, self-healing, and easy scaling.
3 MAY 2023
PoC – Setup
Output
Input
Output
• IGM creation
3 MAY 2023
Price indications
3 MAY 2023
Time consumption for parallel tasks with different VMs
3 MAY 2023
Time consumption for parallel tasks with different VMs
3 MAY 2023
Sub process measurements (F16s_v2)
00:00:00 28 s. 00:02:42
50 s. 55 s. 30 s.
t
Sub process measurements (F16s_v2)
00:00:00 28 s. 00:02:42
50 s. 55 s. 30 s.
t
Questions?
3 MAY 2023
Bonus info
3 MAY 2023
Intro to Azure Kubernetes Service - references
Docker
• Introduction to Docker containers - Training | Microsoft Learn
• Docker overview | Docker Documentation
Kubernetes
• Introduction to Kubernetes - Training | Microsoft Learn
• Concepts | Kubernetes
AKS
• Introduction to Azure Kubernetes Service - Training | Microsoft Learn
3 MAY 2023
Intro to Azure Kubernetes Service - Docker
What is Docker?
Docker is a containerization platform used to develop, ship, and run containers. Docker doesn't use a hypervisor, and you can run Docker on
your desktop or laptop if you're developing and testing applications. The desktop version of Docker supports Linux, Windows, and macOS.
For production systems, Docker is available for server environments, including many variants of Linux and Microsoft Windows Server 2016
and above. Many clouds, including Azure, support Docker.
What is an image?
An image is a read-only template with instructions for creating a Docker container. Often, an image is based on another image, with some
additional customization.
To build your own image, you create a Dockerfile with a simple syntax for defining the steps needed to create the image and run it.
The container image becomes the unit we use to distribute our applications.
What is a container?
A container is a runnable instance of an image. You can create, start, stop, move, or delete a container using the Docker API or CLI. You can
connect a container to one or more networks, attach storage to it, or even create a new image based on its current state.
3 MAY 2023
Intro to Azure Kubernetes Service - Docker
3 MAY 2023
Intro to Azure Kubernetes Service - Docker
Docker architecture
Docker Desktop is an easy-to-install application for your Mac, Windows or Linux environment that enables
you to build and share containerized applications and microservices. Docker Desktop includes the Docker
daemon (dockerd), the Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, and
Credential Helper.
3 MAY 2023
Intro to Azure Kubernetes Service - Kubernetes
What is Kubernetes?
• Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both
declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely
available.
What is Pod?
• Pods are the smallest deployable units of computing that you can create and manage in Kubernetes.
• A Pod (as in a pod of whales or pea pod) is a group of one or more containers, with shared storage and network resources, and a
specification for how to run the containers. A Pod's contents are always co-located and co-scheduled, and run in a shared context. A Pod
models an application-specific "logical host": it contains one or more application containers which are relatively tightly coupled. In non-
cloud contexts, applications executed on the same physical or virtual machine are analogous to cloud applications executed on the same
logical host.
3 MAY 2023
Intro to Azure Kubernetes Service - Kubernetes
Kubernetes architecture
3 MAY 2023
Intro to Azure Kubernetes Service - AKS
Node pools
• In Azure Kubernetes Service (AKS), nodes of the same configuration are grouped together into node pools. Node pools contain the
underlying VMs that run your applications. System node pools and user node pools are two different node pool modes for your AKS
clusters. System node pools serve the primary purpose of hosting critical system pods such as CoreDNS and metrics-server. User node
pools serve the primary purpose of hosting your application pods. However, application pods can be scheduled on system node pools if
you wish to only have one pool in your AKS cluster. Every AKS cluster must contain at least one system node pool with at least one node.
3 MAY 2023