Skip to main content

From Always-On to Right-Sized: How Innofactor Helped Apotek 1 Transform Azure Compute Usage

Hero Image

Supporting a Critical Cloud Strategy at Apotek 1

Apotek 1 is one of Norway's largest pharmacy chains, responsible for the packaging, distribution, and sale of pharmaceutical products nationwide. Over five years ago, they began migrating key on-premise business systems to Microsoft Azure, driven by a need for greater reliability, scalability, and cost efficiency.

Azure is now central to Apotek 1's daily operations. Their core services, including logistics, packaging systems, and internal tools, rely on Azure App Services, Azure Container Apps, and Azure Kubernetes Service (AKS). As the environment matured, the conversation naturally shifted from migration to optimization. That's when Apotek 1 brought in Innofactor, to help them reduce cloud consumption costs while maintaining operational stability and accelerating service delivery.

The Challenge: Over-Provisioned Resources and Hidden Inefficiencies

When we began our engagement, Apotek 1 had already identified a troubling trend: rising compute-related costs. Much of this was traced back to over-provisioning, particularly with Azure VM Scale Sets used to host Azure DevOps agents. These instances were often left running outside working hours - nights, weekends, holidays - without any real usage.

We also discovered that uncontrolled logging practices were contributing to cost bloat. Many teams were using DEBUG-level logging as a default, generating large volumes of telemetry that were stored in high-cost services without being routinely accessed or reviewed.

These issues weren't isolated. In some cases, we found that similar services within the same subscription varied in consumption costs by as much as 20x - depending largely on how well they were configured and governed.

Leadership at Apotek 1 responded with urgency. An executive mandate was issued to reduce Azure consumption significantly - by 35–50% - within a six-month window. Our task was to help make that happen.

Objectives: Cut Cloud Costs Without Compromising the Business

The goal was clear: identify and eliminate inefficiencies across all workloads - not just in production - with minimal impact on service availability. Developer workflows could be temporarily disrupted if necessary, but systems tied to core business processes had to remain stable.

This wasn't just about hitting cost targets. It was also about reshaping the way Apotek 1 teams approached cloud resource usage - making efficiency and sustainability core to the way they worked.

Our Approach: Data-Driven Insights and Practical Automation

We began by analyzing usage and cost patterns using native Azure billing summaries and custom tools - including the open-source az-consumption-summary. These helped us pinpoint high-cost resources and zero in on over-provisioned services.

To move quickly, we developed custom automation and scheduling logic, deployed via Azure Pipelines. These pipelines ran at regular intervals to enforce operating windows - ensuring that VM Scale Sets and virtual machines could not run outside of weekday business hours (07:00–21:30), unless explicitly approved.

All exceptions were logged, documented, and reviewed - which not only reduced waste but improved internal visibility. We also worked closely with Apotek 1's Azure Platform Team to centralize infrastructure management. Developers no longer had free rein to spin up compute resources on demand; instead, provisioning was routed through a more controlled, consistent process.

Implementation: Balancing Governance with Developer Reality

As expected, there was some resistance from developers. Shifting control of infrastructure to a centralized team and enforcing hard stop schedules on compute usage was a significant cultural shift. But because the initiative had top-down support from Apotek 1's executive team, we had the authority to stay the course.

Our role was to support the Azure Platform Team in applying governance while maintaining open lines of communication with development teams. We also focused on building tooling that minimized manual intervention - letting developers focus on feature delivery without losing sight of cost.

Over time, these changes became normalized. Teams became more aware of the trade-offs involved in infrastructure decisions. The Platform Team, meanwhile, gained tighter control over resource usage and spend - without slowing down the pace of innovation.

Results: Substantial Savings and Sustainable Practices

The results were immediate and tangible. In one workload alone, the shift to scheduled VM operation led to a 50.95% reduction in monthly compute costs. With 88 instances running at approximately €600 per month each, this translated into significant monthly and annual savings.

Across the environment, Apotek 1 saw a €50,000 reduction in annual VM/VMSS consumption costs from the first phase of changes alone. Beyond cost, the initiative improved team collaboration and brought cost optimization into regular discussions around architecture and deployment.

Lessons Learned: Executive Backing Makes All the Difference

One of the key takeaways from this engagement was the importance of executive support. Changing developer behavior - especially when it comes to infrastructure usage - is incredibly difficult without strong sponsorship. In Apotek 1's case, upper management not only backed the initiative but empowered the Azure Platform Team to enforce new standards.

We also saw firsthand that many developers didn't come from a DevOps background and weren't incentivized to think about cloud costs. This wasn't a skills gap - it was a visibility and priority gap. Bridging that divide required education, automation, and patience.

If we were to start over, we'd encourage organizations to treat cost optimization as a continuous process - not a one-time fix. The earlier these practices are embedded, the easier they are to scale.

What's Next: Logging, Storage, and a Broader Optimization Strategy

With compute resources under control, Apotek 1 is now turning attention to logging. The next wave of optimization will focus on reducing unnecessary log ingestion and retention, adjusting verbosity levels, and rethinking storage tiers where appropriate.

They're also beginning to evaluate underutilized storage - particularly in Blob and diagnostic data - to further reduce spend. While storage hasn't been the biggest driver of cost so far, there are clear opportunities to improve efficiency.

Although there isn't yet a formal FinOps framework in place, the foundation is there. By making optimization part of the conversation early - and backing it with automation and governance – Apotek 1 is on track to build a more sustainable and scalable approach to Azure operations.

Take a look at our content that might interest you

Apotek 1 innovates with Azure Kubernetes to provide customers secure enhanced services

Apotek1

Following a successful migration, the renowned Norwegian pharmacy chain is now running its business-critical applications on a secure cloud platform.

Read More

Safe Azure implementation with Virtual Data Center

Elmera Group

Virtual Data Center and Innofactor's expertise were an integral part of the Norwegian Elmera Group's cloud strategy.

Read More

Kirkens Bymisjon’s cloud journey: one step closer to heaven

Kirkens Bymisjon

The non-profit organisation has moved its infrastructure into the cloud, improved their security, and acquired a modern interaction platform.

Read More
No events found.

Didn't find what you're looking for? Leave us your contact details and we'll be in touch!