Introduction & Problem space

Architectural Katas

Architectural Katas are collaborative exercises where software architects and developers work together to design solutions for hypothetical scenarios. The term "kata" is borrowed from martial arts, where it refers to a practice routine for improving skills. In the context of architecture, it emphasizes honing design skills, teamwork, and creative problem-solving in a structured environment.

Goals

There aren't many opportunities in a software engineer's career to design a system from scratch. Therefore, it makes sense to practice this activity and be ready when the opportunity arises.

The goal in this series is to solve the Gird the Grid kata from Neal Ford. During this process, I plan to document the key steps and provide some details for implementing my solution.

Problem statement

A company who builds management software for electrical grids needs to update their outdated software solution, and plan to sell their offering as a platform.

Users

Small to medium-size electic market companies, able to accommodate electrical grids from 100,000 to 1,900,000 electrical customers.

Requirements

  • Configurable for specific grid company characteristics (state, tax rates, etc.)

  • State-of-the-art user experience

  • Dashboards with analytics reports with near-real time data from the grid

  • Excellent reporting capabilities

  • Sophisticated analytics-based engine to determine best throughput/money

  • Administer through either desktop or mobile devices

  • Security penetration attempt reporting

Additional Context

  • Four nines (99.99%) reliability

  • Turn-key deployment on remote sites

  • Security is a first-class concern

  • Company wants to shift from managing electrical grids to becoming a software reseller

Problem analysis

Users

Our users will be employees of electric market companies, likely including grid operators, system administrators, and business professionals. Let's estimate the number of these users to be around 100. The requirements don't mention anything about the utility company's customers. So, let's assume that their customers won't have access to this system.

Requirements

The system needs to be flexible to meet the needs of different companies. We might consider having a core package with the main functionalities and some add-ons to extend or customize each installation.

We need to collect near-real-time data from the grid and display it on dashboards or in reports. This means handling a large amount of incoming data.

There should be an engine that recommends different grid optimizations based on analytics. We need to send command data to the grid components.

Security-related logs should be sent to a SIEM (Security Information and Event Management) tool for analyzing penetration attempts or anomalies.

Quality goals

Additional context gives us clues about the most important non-functional requirements: reliability, security and maintainability.

Context

Keeping all of this in mind, let's outline the system context to better understand what we need to address.

System context

Users

  1. Grid operator: Monitor and control the grid's real-time operations, optimize throughput, and respond to alerts and anomalies.

  2. System administrator: Configure the system to align with the grid company’s specific requirements and maintain operational integrity.

  3. Business user: Oversee operational efficiency, cost management, and strategic alignment of the grid system with business goals.

External systems

  1. Supervisory Control & Data Acquisition: Monitor and control grid equipment like transformers, circuit breakers, and substations in real-time.

  2. Advanced Metering Infrastructure: Provide data from smart meters about energy usage, power quality, and outages at the customer level.

  3. Identity & Access Management: Integrate with corporate authentication systems.

  4. Intrusion Detection and Prevention Systems: Share and analyze logs for penetration attempts or anomalies.

  5. Alert & Monitoring: Collect application logs and metrics from the system for operation and support purposes.

Now that we have a clear understanding of what we need to solve, let's explore the solution space in the next article.