Designing a Distributed System for Long-Term Development
Building and evolving a complex system in production for years demanded high technical quality, even with team volatility. This session shares our project's story, focusing on strategies for sustainable long-term development.
Abstract
Until recently, I served as the Solution Architect for a distributed system in the energy sector—a system critical to grid balancing and enabling energy trading. It was a greenfield project that we built from the ground up.
Developing and evolving such a complex system over several years, while keeping it in production, required us to uphold a high level of technical quality—especially in the face of team changes. This project allowed me to put into practice the experience I've accumulated for designing distributed systems with long-term development in mind.
In this session, I'll share the story of this project, highlighting design strategies that supported long-term development. Drawing on over 15 years of experience in high-pressure projects that demanded availability, reliability, and precision, I’ll provide practical insights into creating systems that will stand the test of time.
Resources
- Slides: Slide Share
- Referenced code snippets: Code Design Training on GitHub
- iQuarc.AppBoot: on GitHub
- iQuarc.DataAccess: on GitHub
Drawing from our extensive project experience, we develop training programs that enhance predictability and reduce the cost of change in software projects.
We focus on building the habits that make developers adopt the industry best practices resulting in a flexible code design.
Services
Our Software Architecture and Project Design services combined, help organisations transition from staff augmentation, where they sell hours, to becoming solution providers, where they deliver project milestones.
Software Architecture
We support key architectural decisions, from System Decomposition to Detailed Technical Design.
Our work involves identifying critical system behaviors, core technical requirements, and providing tailored solutions.
We assume the responsibilities and decisions of the architect role, acting as the design lead, technology lead, and process lead.
Project Design
We apply an effective engineering method to create an actionable project execution plan.
The plan outlines the schedule of activities, allocates resources, and makes strategic trade-offs to meet project goals within constraints, balancing schedule, cost, and risk.
The process provides charts and tools to track progress and adapt the plan during execution.
Coaching and Mentoring
We help architects, managers, and developers build the skills needed to achieve their goals with ongoing support.
We are available to your team while they work, providing access to our extensive project experience. We engage directly with the project, becoming familiar with its specific requirements and constraints.
Our goal is to build skills within your team, enabling them to achieve their goals independently rather than relying on us.
We lead in design, technology, and process, empowering projects and organizations to achieve their goals. We collaborate closely with client architects, product managers, and project managers, providing coaching and mentorship to help them succeed.
About
Code Design is a consulting agency specialising in the design phase of software development.
Over the past decade, Florin has led the design and implementation of complex software systems across industries such as Energy, Finance, Healthcare, Business Productivity Tools, and Insurance. These projects involved distributed systems built for long-term, incremental development, overcoming common challenges to ensure success: on time, within budget, and on quality.
Florin’s experience often includes coaching and training the developers implementing his designs, further enriching the training materials he provides.
At Code Design, Florin collaborates with a team of like-minded professionals and experts, many of whom he has previously worked with, to deliver comprehensive, high-level services in software development.