SOLUTION ARCHITECTURE
Application development
I have extensive experience designing and developing medium to large-scale software solutions, often with challenging non-functional requirements concerning resilience, scalability, and performance.
I possess deep knowledge of microservice architectures, event-driven architectures, and traditional service-oriented architectures. Over the years, I've gained first-hand experience with the pros and cons of each paradigm, understanding when to apply them and—perhaps more importantly—when not to.
Since a software solution is never truly 'finished', I apply principles of evolutionary architecture to ensure solutions can easily adapt to future initiatives and requirements. I view architectural design as a continuous process, leveraging valuable concepts and tools such as Domain-Driven Design and Event Storming.
Re-architecting legacy applications
Often, there isn't the luxury of starting with a clean slate or greenfield situation. Typically, progress on an essential application has ground to a halt because years of neglected technical debt have rendered it unmaintainable. The existing architecture or technology stack may be unsuitable for scaling requirements or further innovation. Yet the existing solution cannot simply be switched off while awaiting a replacement, and the investment required for such a strategy may be prohibitive.
Challenges in these scenarios often involve cloud migration, technology modernisation, and monolith-to-microservices transitions. While there is no silver bullet, an experience-based approach with incremental improvements and continuous planning can certainly revive a legacy solution.
I have broad experience in modernising and re-architecting legacy solutions, utilising approaches such as lift-and-shift and the strangler pattern.
Technology, Tools & Concepts
Micro Services - Domain Driven Design - Event Driven Architecture - Event Sourcing - Event Storming - Story Mapping - API design - Service Mesh
Microsoft Azure - AWS - Microsoft .Net (Core) - Kafka - RabbitMQ - Event Store - Docker - Kubernetes - (no)SQL Databases - JSON - XML - RESTful - SOAP - Istio
MS Visual Studio (Code) - Swagger - Sparx Enterprise Architect