Cloud Application ModernisationAzure Application Development

Azure Application Development

Azure-native. Not just Azure-hosted.

Most “Azure projects” we’re asked to review turn out to be something else — virtual machines, lifted and shifted, with authentication bolted on and the rest of the Microsoft estate still at arm’s length. That works. It’s just not what Azure is for. We build applications the way the platform is meant to be used: PaaS-first, Entra ID-integrated, aligned to the Azure Landing Zone, and priced for consumption from day one.

Microsoft-native applications in production across Australia

The conversation we keep having

Azure in name only.
The pattern we see most often.

Two or three years into an Azure programme, the hard questions start getting asked. Why is the bill so high? Why does every new integration feel like custom work? Why does identity management still live in a legacy directory? The usual root cause isn’t Azure — it’s how the applications got there. Lifted, not built. These are the patterns we see most often when we’re asked to review an existing estate.

The “we lifted it, that’s enough” application

Virtual machines running the same workloads, the same way, in a different data centre. No PaaS adoption, no auto-scaling, no managed services. It’s cloud in location only — and the cost profile proves it. The hyperscaler economics don’t kick in until the architecture changes.

Authentication bolted on

Custom user stores. Hard-coded secrets. Service accounts with passwords that rotate once a year because changing them is painful. Microsoft Entra ID, Managed Identities, and Azure Key Vault were all there from day one of the project — they just never got used. The security debt accumulates quietly.

Consumption economics that aren’t

VM sizes chosen for peak load and running 24/7. No Functions, no Container Apps, no serverless SQL — the services that only charge when they’re used. The bill reads like an on-premises data centre, because architecturally, that’s what it is.

Islands, not an estate

Applications live next to Microsoft 365 but don’t talk to it. No Graph integration, no Teams embedding, no Power Platform connection, no Dataverse. The wider Microsoft investment sits idle while staff flip between tools that should be joined up. One of the best reasons to be on Azure, left unrealised.

No Landing Zone, or one nobody maintains

Subscriptions provisioned ad hoc. Network topology that grew rather than got designed. Policy applied inconsistently. Every new workload has to solve the same governance questions from scratch. Microsoft’s Cloud Adoption Framework exists precisely to prevent this — but only if it’s actually applied.

Observability as an afterthought

When something goes wrong, the investigation starts with a blank page. No Application Insights, no centralised logging, no alerting. Azure Monitor is there, unused. Problems get diagnosed from user reports rather than telemetry, and every incident takes longer than it should.

What Azure-native actually looks like

Built the way Microsoft designed it to be built.

None of what’s on the right is new or clever. It’s the documented, Microsoft-recommended way to build on Azure — the Cloud Adoption Framework, the Well-Architected Framework, the Azure Landing Zone patterns. The difference is whether it’s applied consistently from day one, or added later once problems surface.

PaaS-first by default

Azure App Service, Azure Functions, Container Apps, and AKS where the workload warrants it. Virtual machines are the exception, not the starting point. The managed services handle scaling, patching, and availability — so the team can focus on the application rather than the infrastructure underneath it.

Microsoft Entra ID from day one

Identity is the Azure-native default — not an add-on after launch. Managed Identities so applications hold no credentials. Azure Key Vault for secrets and certificates. Role-based access at every layer. The authentication story is sorted before a line of feature code is written.

Private by default

Azure Private Link and Private Endpoints so platform services don’t sit on the public internet. Network topology built around hub-and-spoke patterns aligned to the Azure Landing Zone. Azure Firewall and NSGs applied consistently through policy, not case-by-case.

Azure API Management as the gateway

A single, governed surface for internal and external APIs — with authentication, rate limiting, caching, and observability in one place. Backend services can evolve freely behind a stable contract. The pattern that lets you modernise an API layer without rewriting the systems underneath it.

The right data service for the workload

Azure SQL and Azure SQL Managed Instance for relational workloads. Cosmos DB for low-latency global reads. Azure Storage and Data Lake for blob and analytics. Service Bus and Event Grid for messaging. The database choice is made per workload — not defaulted to SQL Server on a VM because that’s what was used last time.

Observability built in, not bolted on

Application Insights wired into every service from the first commit. Azure Monitor dashboards and alert rules defined in code alongside the application. Distributed tracing across services. The first time something goes wrong in production shouldn’t be the first time anyone thinks about telemetry.

Infrastructure as code, from the start

Terraform or Bicep from day one — not a manual environment that gets “automated later.” Every environment is reproducible, every change reviewed, every deployment traceable. This is the layer our DevOps & Platform Engineering practice specialises in, and it’s built alongside the application, not after it.

Integrated with the wider Microsoft estate

Microsoft Graph for M365 data and identity. SharePoint and Teams as embedding targets when the use case fits. Power Platform connectors for low-code extension. Dataverse as a backing store where it simplifies the model. Applications built on Azure should be at home with the rest of your Microsoft investment — not adjacent to it.

How we work

Four steps, with the hard questions answered early.

We start with an architecture review — not because every project needs one, but because the first decision sets the cost of every decision that comes after. After that, delivery runs in short, scoped releases with real users in production, rather than a six-month build with the demo at the end.

Architecture & CAF Review

Fixed fee · 1–2 weeks

We review either an existing Azure workload or a proposed build against the Azure Landing Zone, Cloud Adoption Framework, and Microsoft Well-Architected Framework. Output: a written assessment, a prioritised remediation list, and a clear recommendation on what to build first.

Foundations & First Release

Typically 4–8 weeks

Landing Zone hardened (or built), CI/CD pipelines established, the first application module delivered into production. Every piece of foundation work gets reused by the releases that follow, so each subsequent delivery is faster than the one before it.

Iterative Build

Fortnightly sprints

Additional features, services, and integrations delivered against a prioritised backlog you control. Sprint demos, release notes, and a running roadmap — with the ability to reprioritise between sprints as the business learns what’s most valuable.

Managed Application Service

Monthly retainer

A dedicated Technical Lead, active performance monitoring, monthly roadmap reviews, and ongoing feature delivery in fortnightly sprints. The team that built the application is the team that keeps it running — no handover, no knowledge loss.

Why Antares

Microsoft-specialist. In production.
Not just certified.

Plenty of firms are Microsoft partners. The distinction that matters is whether their teams build on Azure every day at production scale — with the code, the platform, and the managed service all coming from the same group.

Twenty years on the Microsoft stack

Twelve Microsoft Specialisations across six Solution Partner areas. Founded in 2006 and delivering on the Microsoft stack continuously since. The Azure investments land on top of an organisation that already understands SharePoint, M365, Power Platform, and Fabric at depth — so the integration story is a known quantity, not a risk.

Our own products run on Azure

QBot, our enterprise AI platform, is deployed inside client Azure tenancies at NRMA, UNSW, Haileybury College, and Mission Australia. OneView, our education analytics product, runs on Fabric and Power BI. We build on Azure for clients because we build on Azure for ourselves — and the patterns have been battle-tested in both directions.

Build, run, and extend — one team

The architects who design the application, the developers who build it, and the engineers who run it after go-live are the same group. Fortnightly sprints, a dedicated Technical Lead, and a monthly roadmap review. No handover step where context gets lost, because there is no handover.

Start with an architecture review

Not sure what “good” looks like on your current Azure estate? That’s what the review is for.

Tell us a bit about what you’re running (or planning to build) and we’ll come back with either a proposal for a fixed-fee architecture review, a suggestion to start somewhere smaller, or — if it’s not the right moment — an honest “not yet, and here’s why.” No commitment, no pressure.

Usually we reply within one business day. Based in Sydney and Melbourne.
 

Frequently Asked Questions

Common questions about building applications on Azure.

They overlap, but the emphasis is different. Cloud native application development is about architectural patterns — microservices, event-driven design, serverless-first, containerisation — and those patterns can run on any hyperscaler. Azure application development is about going deep on the Microsoft stack specifically: App Service, Azure Functions, Azure SQL, AKS, API Management, Entra ID, and the rest of the Azure PaaS surface, used the way Microsoft intends. Most of our clients want both — cloud-native patterns, built on Azure, integrated with the rest of their Microsoft estate.

.NET is our strongest language — we’ve been building on it for over twenty years — and most of our Azure work is C# or TypeScript. Where a specific workload calls for Python, Node.js, or Java, we use it. The language matters less than the architecture, and we tend to choose whichever stack gives the cleanest fit with the Azure services involved.

Yes. The Azure Landing Zone and Microsoft’s Cloud Adoption Framework are the baseline for everything we build. That means subscription design, network topology, identity, policy, and governance are all in place before the first line of application code ships — not retrofitted a year later. For organisations without a Landing Zone in place, we build one as part of the foundation phase.

Microsoft Entra ID is the default identity layer — not a bolt-on. Managed Identities are used wherever possible, so applications never hold credentials; Azure Key Vault handles secrets and certificates. Networking follows a private-by-default pattern using Private Link and Private Endpoints so services don’t traverse the public internet. These aren’t features we describe in a proposal — they’re how we build, because that’s how Azure is designed to be used.

Azure cost problems almost always come from running cloud services on on-premises patterns — oversized VMs, no auto-scaling, no consumption-based services. PaaS-first architectures pay for what’s used rather than what’s provisioned, and serverless patterns (Azure Functions, Container Apps, serverless SQL) only charge for actual execution. We also build in Azure Cost Management tagging and alerting from the start, so cost is visible from day one rather than a surprise in month six.

Yes — and this is one of the reasons to build on Azure rather than a non-Microsoft cloud. Microsoft Graph integration, SharePoint connectivity, Teams embedding, Power Platform data connectors, and Dataverse as a backing store are all native. Applications we build typically expose themselves to the wider M365 environment so they fit into existing staff workflows rather than living as a separate system to remember.

You do. All code, infrastructure-as-code, CI/CD pipelines, and deployment configuration live in your repositories under your licences. If you later decide to move the work in-house, or engage a different partner, the handover is straightforward — there is no proprietary Antares runtime and no part of the application that only we can maintain.

 

Scroll to Top