Stop letting every service talk to the outside world
A proxy service layer is the cheapest insurance you can buy against third-party APIs. Here's the pattern, why it works, and how to migrate onto it without a maintenance window.
Radwan Atassi
Software Architect & Engineer · Copenhagen
A software architect and engineer specializing in backend engineering, e-commerce platforms, and cloud architecture — with eight years building distributed systems, these days as the architect at Clever, Denmark's largest EV charging network.
About me
I'm Radwan — a software architect based in Copenhagen with a focus on backend systems, cloud architecture, and commerce platforms. I started as a developer and grew into architecture, driven by the realisation that the hardest problems in software are rarely about code — they're about systems, boundaries, and the decisions made before a single line is written.
Over eight years I've built integration infrastructure for enterprise companies, e-commerce platforms handling real revenue, and cloud-native systems across Azure. I've worked inside organisations large enough to have politics and lean enough to ship every day — and learned what actually moves the needle in both.
Current focus: the integration architecture at Clever — Denmark's largest EV charging network — with a small e-commerce practice and a product of my own, VelaCommerce, on the side.
Based in
Copenhagen, DK
Experience
8+ years
Focus
Backend · Commerce · Cloud
Languages
EN · DA · AR
Core expertise
Six areas I've spent real years in — and the opinion each one taught me.
01
The unglamorous core — APIs, workers, data pipelines. I write for the engineer who inherits the code, not the demo: correctness and clarity over cleverness. Mostly .NET / C#.
02
Shopify, Commercetools, Optimizely. The hard part is never the storefront — it's pricing, fulfilment, and the order lifecycle underneath, where the real complexity hides.
03
Cloud-native on Azure. I reach for boring, managed services before clever ones, and treat observability as a feature you build in — not a dashboard you bolt on after an outage.
04
Microservices, event-driven design, integration patterns. I decompose around team boundaries and failure domains — not because a diagram looks tidy.
05
Finding why a system is slow. It's almost always a query, a missing index, or work done synchronously that shouldn't be — measured first, never guessed.
06
Connecting the systems a business actually runs on — CRMs, ERPs, payments. Most of the work is making other people's APIs behave reliably when they don't.
Engineering philosophy
Simplicity
The best code I write each year is the code I delete.
Maintainability
I write for the engineer who inherits this at 2am — and it's often me.
Performance
Performance is a design decision, not a phase you get to later.
Architecture
Architecture is the set of decisions that are expensive to undo. I try to make fewer of them.
Testing
I don't test for coverage. I test so I can change things without holding my breath.
Automation
Shipping should be boring. The day a deploy is exciting, something has gone wrong.
Technologies
Not a logo parade — here's where and how I actually use each one.
Languages & Runtimes
.NET / C#
Primary language for enterprise APIs, background services, and integration orchestration. Deep ecosystem knowledge: ASP.NET, EF Core, Azure SDK.
TypeScript
All frontend work and Node.js services. Strict mode everywhere.
JavaScript
Frontend scripting and legacy codebase support where TypeScript isn't an option.
Architecture Patterns
Microservices
Used when team topology and domain boundaries justify the operational overhead.
Event-Driven
Async messaging between services for loose coupling. Reliable delivery via Azure Service Bus.
CQRS
Command/query separation for systems with high read/write asymmetry.
REST & GraphQL
REST for public APIs and integrations; GraphQL where consumers have varied data requirements.
Cloud & Infrastructure
Azure Container Apps
Preferred runtime for containerised microservices in the Microsoft ecosystem.
Azure Service Bus
Message broker for reliable async communication between distributed services.
Azure APIM
API gateway for centralising, securing, and observing third-party integrations.
Docker & Kubernetes
Containerisation from local dev through production. K8s when orchestration complexity is justified.
Commerce Platforms
Shopify / Shopify Plus
D2C storefronts, custom apps, Liquid themes, and checkout extensions.
Commercetools
API-first B2B and enterprise commerce with complex pricing and catalogue requirements.
Optimizely Commerce
Mid-enterprise CMS and commerce in the Microsoft stack.
Databases
SQL Server
Relational data where ACID compliance and the Microsoft ecosystem matter.
PostgreSQL
Open-source relational; preferred for new projects outside the Microsoft stack.
MongoDB
Document storage for event-driven systems, integration logs, and schema-flexible data.
Redis
Caching, session management, and distributed rate limiting.
Integrations
Dynamics CRM & Salesforce
Customer data pipelines, sales automation, and triggered workflow events.
Stripe & Nets
Payment processing with custom webhook handling and reconciliation flows.
Klaviyo
Email and SMS automation for e-commerce lifecycle and campaign flows.
Power BI & Analytics
Data pipelines feeding dashboards and business intelligence layers.
Featured projects
Role
Software Architect
Duration
2022 — present
Problem
Clever's systems were unstable and deeply entangled — multiple teams integrating directly with the same third-party systems, a cloud infrastructure hitting its limits, and a monolithic architecture that couldn't keep up with the pace of the business.
Outcome
Technology
Role
Senior Backend Developer
Duration
24 months
Problem
Aller Media — publishers of some of Scandinavia's most-read magazines and digital properties — were constrained by an ageing Umbraco CMS that couldn't support their content velocity or multi-brand digital ambitions.
Outcome
Technology
Role
Lead Full-stack Developer & Architect
Duration
9 months
Problem
A mid-sized industrial distributor was processing thousands of B2B orders manually via email and phone. Their fragmented systems couldn't handle custom pricing, bulk ordering, or the approval workflows their enterprise clients required.
Outcome
Technology
Current role
By day I'm the software architect at Clever — Denmark's largest EV charging network. I rebuilt the integration layer the platform runs on, and I've stayed to shape what it becomes next. The work is mostly design now: deciding which systems should exist, where the boundaries fall, and which decisions will be expensive to undo — while staying close enough to the code to keep myself honest.
On the side, I run a small e-commerce practice for a handful of clients and I'm building VelaCommerce, a commerce platform of my own. The day job is where I design at scale; the side projects are where I own the whole thing, end to end.
Writing
Contact
A question about something I've written, a system you're thinking through, or just a conversation — I'm easy to reach.