Appearance
Core Components of the Equation Platform
This section outlines the primary building blocks that make up the Equation platform. Each component plays a distinct role in enabling reusable, secure, and scalable calculation services across Haskoning's digital landscape.
1. Calculation Packages
These are the source of all engineering logic.
They are:
- Written in Python
- Developed and owned by domain experts
- Structured for deterministic, testable computation
- Intended to be wrapped by an API layer for exposure
💡 Note: Most calculation packages are written in Python because it's popular among our teams. However, you can use any programming language — as long as it can expose an API using an OpenAPI specification. Example: A Python package that calculates Nereda tank dimensions.
2. API Layer
This is a custom-built service (e.g. using FastAPI or Django) that:
- Wraps the Python calculation package
- Defines input/output schemas
- Serves an OpenAPI specification for integration
- Handles request validation and version control
This layer translates pure calculation logic into a structured, network-accessible interface.
3. API Management (APIM)
A centralized Azure-hosted component that provides:
- Routing and public exposure of selected APIs
- Integrated authentication via Azure Entra ID
- Rate limiting, logging, monitoring, and alerting (#TODO not available yet)
- Policy enforcement (e.g. CORS, IP whitelisting)
- Developer portal for API discovery and documentation
APIs are not exposed directly — all requests go through this secure gateway.
4. Clients
Prebuilt clients that allow non-developers and integrators to use the APIs:
- Equation Python Package: A user-friendly interface to call any published API from Python scripts or notebooks. ( #TODO not available yet)
- WaterFuser Web Client: A browser-based interface focused on engineering workflows, including Speckle model handling.
- Excel Client: Allows engineers to run calculations from familiar Excel environments.
- Grasshopper Plugin: Enables Rhino users to integrate live API calls in parametric workflows.
Each client supports the same APIs through shared OpenAPI specs.
5. Supporting Infrastructure
This includes the pipelines, environments, and governance rules that tie everything together:
- CI/CD pipelines triggered by Git updates
- Infrastructure-as-Code using Terraform
- Separation between Acceptance and Production environments
- Managed Identities for secure role-based deployments
This layer ensures that deployments are auditable, secure, and automated.