FORGETECHCONSULTANTS

Technologies and standards

Sound technology. Engineering with judgement.

We combine established technologies, software architecture and engineering practices to build maintainable, scalable enterprise systems ready to evolve.

Every choice starts with business requirements, system constraints and the balance between benefits and technical costs.

Explore our services

Backend engineering and the .NET ecosystem

C# and modern .NET as a foundation for enterprise applications, integration services and reliable data processing.

We choose data access and execution models according to each system's queries, transactions and performance requirements.

Services and contracts

ASP.NET Core and REST APIs with explicit contracts for integrating systems and separating business logic from interfaces.

Persistence

SQL Server, Entity Framework Core and Dapper: abstraction, query control and maintainability according to the use case.

Asynchronous processing

Background tasks and asynchronous workloads with error handling, retries and idempotency suited to the process.

Software architecture and design

Clear boundaries, controlled dependencies and integration contracts that make the system easier to understand and evolve.

DDD, CQRS and microservices are not default requirements. Their adoption must justify the added complexity in relation to the domain, operations and business needs.

Domain and modularity

Domain-Driven Design (DDD) where domain complexity requires it; modular architecture and separation of responsibilities to define capability boundaries.

Design and dependencies

Clean Architecture and SOLID to guide dependencies, make contracts explicit and isolate infrastructure details.

Distribution with judgement

CQRS to separate reads and writes where useful; event-driven architecture and microservices where autonomy, scale and operational requirements justify them.

Microsoft Azure and cloud architectures

Azure is our primary cloud specialization. We design the platform with workload, security and operating cost in mind.

We prioritize services that fit system constraints and the team's operational capacity, avoiding unnecessary infrastructure complexity.

Application hosting

Azure App Service, Azure Functions and Static Web Apps according to application type, execution model and deployment requirements.

Integration and data

Azure Service Bus for messaging and event-driven workflows; Azure SQL and Azure Storage according to persistence and access requirements.

Identity and security

Microsoft Entra ID, managed identities and Azure Key Vault for identity, access controls, secrets and secure configuration.

Monitoring

Azure Monitor and Application Insights to correlate logs, metrics and distributed traces and support diagnosis.

Kubernetes and Infrastructure as Code

Version-controlled applications, deployment configuration and infrastructure: a shared foundation for reviewing changes and validating environments automatically.

Kubernetes is considered when its capabilities outweigh its operational cost. Version-controlled definitions and infrastructure plans allow scope to be reviewed before controlled changes are applied.

Containers with Docker

Containerized backend workloads, image management and reproducible configurations for consistency between environments.

Orchestration with Kubernetes and Helm

Workload configuration, health probes, rolling deployments and secret/configuration integration through reviewable manifests and charts.

Infrastructure with Terraform

Reusable modules, environment-specific configuration, validation and change planning; reviewing drift between definitions and actual infrastructure state.

Automation and alternatives

Git and automated validation for code, infrastructure and deployments. Bicep where an Azure-specific definition better fits the context.

DevOps and engineering quality

Delivery practices that help detect defects earlier, reduce manual intervention and maintain technical traceability as software evolves.

Controls adapt to each change's risk. Testing and observability provide evidence for decisions, without promising to eliminate every defect.

Integration and quality

Git and Azure DevOps with automated builds, Pull Request validation and quality controls. Unit and integration tests; TDD where it helps guide design.

Controlled delivery

CI/CD pipelines, deployment approvals and delivery across multiple environments to make releases repeatable and record changes.

Observability and evolution

Logs, metrics and traces to understand system behavior, investigate failures and guide improvements to maintainability and operations.

Engineering principles

Principles matter as much as tools.

Criteria that guide design, implementation and operational decisions.

  1. Justified simplicity

    Add complexity only when it addresses a specific need and its cost can be supported.

  2. Maintainability

    Understandable code and decisions so the team can maintain and evolve the system.

  3. Verifiable quality

    Automated tests, reviews and controls that provide evidence for each change.

  4. Security by design

    Identity, least privilege, secret management and secure configuration from the earliest decisions.

  5. Observability

    Useful signals for understanding application behavior and diagnosing operational failures.

  6. Incremental evolution

    Modernize through bounded, measurable and reviewable changes with controlled risk.

Technical judgement

We do not choose technologies because they are fashionable.

We assess requirements, constraints, operating cost, maintainability and capacity to evolve before defining a solution.

  • Functional and non-functional requirements
  • Existing technology ecosystem
  • Team capabilities
  • Operational complexity
  • Security and compliance
  • Scalability
  • Long-term maintenance
  • Total cost of ownership

Do you need to review your technology architecture?

We analyze your technical context to identify improvements, risks and opportunities for evolution.