Coderise expert experience · GovTech / EduTech · Finland

Modernizing an early childhood education management platform in Finland

Three years as a Software Architect developing a domain-driven platform: from microservices and the data model to automated application matching, testing and production maintenance.

Role
Software Architect
Commitment
3 years
Market
Finland · public sector
Illustration of an automated data flow in a modular education platform
A simplified fragment of the platform's domain flow.
3 years
working as a Software Architect on product development
DDD
domain-aligned microservice architecture and data model
E2E
testing complete scenarios and system integrations

A working product required a new architectural direction.

The platform handled complex processes related to early education: from application acceptance and initial facility adjustment to decisions, fees, attendance and user accounts. The team took over a system previously developed by an external supplier, and the existing architecture and database model made further development difficult.

The Software Architect's task was to set the direction for modernization and coordinate technical decisions with the needs of the product. The work included both design and code development, code review, arrangements with Product Owners and support for backend and frontend teams.

The domain has become a reference point for code and data.

Refactoring was not limited to organizing classes. It included the way of dividing responsibilities, the relational model and the rules of cooperation between modules.

  1. 01

    Domain boundaries

    Business processes were organized around clear boundaries of responsibility consistent with DDD.

  2. 02

    Microservices

    The solutions were designed so that the responsibilities of individual parts of the product remained clearly separated.

  3. 03

    Data model

    The structure of the PostgreSQL database was refactored towards a model that better reflects the domain.

  4. 04

    Safe changes

    Flyway migrations and tests limited the risk of introducing changes to the actively used system.

The system prepared recommendations, while the operator made the final decision.

One area under development was preplacement ? the initial matching of children with education providers. The mechanism analyzed application data and process criteria, then automatically matched and classified placement proposals.

The goal was not to replace people in the administrative process. The operator received structured information for review, reducing the time spent manually comparing applications and allowing them to focus on verification and the final decision.

  1. 01
    Applicationdata and process criteria
  2. 02
    Matchingpreplacement domain rules
  3. 03
    Classificationstructured proposals
  4. 04
    Operator's decisionverification and approval

The work included key stages of application and stay processing.

preplacement

Initial fitting

Preparation and classification of facility proposals before actual placement.

placement

Placement in a facility

Handling the process of assigning a child to a selected educational institution.

decision

Decisions

Processes leading from application data to a formal decision by the operator.

decision payment

Fee decisions

Domain logic related to the preparation and handling of charging decisions.

attendance

Presence

Recording and processing information about the planned and actual stay.

accounts

Accounts

Management of platform user accounts.

The architectural assumptions were verified in working scenarios.

Changes were secured with unit, integration and end-to-end tests created using JUnit 5 and Spock Framework. Maven and Flyway ensured repeatable builds and controlled database evolution.

Integration tests

Verification of cooperation between components and infrastructure.

E2E scenarios

Control of the full paths of the most important domain processes.

Google Cloud and CI/CD

Automatic delivery and monitoring of the production environment.

Product decisions

Agreeing on the direction of development with Product Owners and programmers.

The modernization created a more stable basis for further development of the platform.

01

A clearer domain model

The architecture and data were focused on specific domain processes.

02

Less manual analysis

Automatic proposals supported operators when considering applications.

03

Greater change control

Tests, code reviews, migrations and monitoring reduced the risk of changes.

Stack supporting system development and production maintenance.

  • Java
  • Spring Boot
  • PostgreSQL
  • Google Cloud
  • Maven
  • Flyway
  • Spock Framework
  • JUnit 5
  • Integration testing
  • End-to-end testing
  • CI/CD
  • Microservice architecture
  • Domain-Driven Design

Are you developing a system that has outgrown its original architecture?

We can start with the domain, the constraints of the data model, and where changes are most risky today.

Let's talk about the system