Michael McCarthy
Royal Oak, MI | mike_mccarthy3@yahoo.com | 610-804-4121
LinkedIn | michaelgmccarthy.com | GitHub
PROFILE
Accomplished solutions architect with extensive experience designing and implementing distributed systems at scale using SOA and microservices architectures. Demonstrated success in legacy to cloud migration, monolith to microservice migration, cross-functional collaboration and technical mentoring. Seeking a position that will enable me to align architectural decisions with strategic goals, collaborate closely with stakeholders, and foster an environment of trust, accountability and technical excellence.
- SOA, microservices and distributed system expert
- Legacy to Cloud migration experience (AWS)
- Deep understanding of vendor-neutral microservices architecture
- Experience with multiple broker/queues/service bus’s
- Experience with RESTful WebAPI design
- Advanced knowledge of C# that includes generics, delegates and async/await
- Advanced knowledge of Twilio SMS and Voice API’s and AWS SES API’s
- SOLID Principles and Design Patterns
- Mentors and leads technical teams utilizing 1:1’s, code reviews, pair programming and continuous learning.
- Architecturally "steers" organizations both strategically and technically by collaborating with and influencing key stakeholders as well as optimizing for quick feedback loops between customers and the business
CERTIFICATIONS, TECHNICAL COURSES AND TRAININGS
- AWS Certified Cloud Practitioner, 2024
- AWS Events and Workflows, 2024
- AWS Knowledge, Architecting, 2024
- .NET Workloads on AWS Lambda, 2024
- AWS Serverless Badge
- AWS re:Invent, Las Vegas, 2022
- Udi Dahan's Advanced Distributed System Design with SOA & DDD, 2019
- O’Reilly Software Architecture Conference 2018, (New York, NY)
- NServiceBus conferences (NSBCon), 2015 and 2015
- NServiceBus training with Jimmy Bogard (Dallas, TX)
- RavenDB training with Ayende (New York, NY)
WORK EXPERIENCE
Phreesia - Solutions Architect
June 2021 - August 2024
Solutions Architect of the Patient Communications Platform, used across the enterprise to facilitate sms, email and voice communications. Daily tasks include:
- working with product managers and stakeholders to guide new feature development, clarify use cases and requirements, and provide estimates.
- creating architectural, high-level design documents for new features or improvements to existing platform functionality
- reviewing low-level design created by senior developers to assure they meet the product requirements and align with the architectural vision of the platform
- perform code reviews and provide implementation guidance/mentor associate architects
- onboard new consumers across the enterprise using the platform’s synchronous and asynchronous API’s
- manage the flow of PHI throughout the platform, in runtime business operations, logging and reporting to assure proper encryption and time-based expiration.
- working with Twilio SMS and Voice API’s as well as AWS SES API’s
Cloud migration Era
Design and co-lead a cloud migration from on-prem data centers to AWS, re-platforming enterprise technologies like WebAPI Controllers, MSMQ, NServiceBus, .NET 4.8 and MongoDB into a fully managed serverless environment consisting of API Gateway, Lambdas, SNS/SQS, .NET 6 and DynamoDB using Transitional Architecture patterns
Responsibilities include:
- interview, hire and onboard North American AWS staff for the cloud migration
- architect a message bridging solution between disparate queues/brokers (MSMSQ and SNS/SQS) with a focus on throttling strategies and retry policies to prevent flooding downstream systems and ensure durability.
- architect an HTTP bridging solution between on-prem and AWS using http proxying with a requirement not to break existing HTTP contracts or consumers of the platform’s http client libraries
- identify logical and physical seams in the existing legacy code where abstractions can be placed to extract and migrate components and services to AWS
- create a data lossless migration cut-over plan that accounts for failures and edge cases to keep 100% uptime in production
Skills used:
- AWS API Gateway, Lambda, SNS/SQS, DynamoDB, S3, EventBridge Scheduler, .NET 6
Pre-Cloud Migration Era
Responsibilities Include:
- architecting new patient-based consent modules to align with sms messaging laws
- migrating sms providers from ZipWhip to Twilio
- architecting new Voice/IVR capabilities for the platform using Twilio Voice
- creating architectural design documents and providing guidance to development staff during implementation
- consulting across the enterprise as NServiceBus SME.
- provide production-level support
Skills used:
- WebAPI Controllers, MongoDb, NServiceBus, MSMQ, .NET 4.8, Redis, Grafana
Hitachi Solutions America - Solutions Architect
October 2020-June 2021
Azure architect working across multiple projects and engagements in both design and implementation.
Projects
Couponing System Cloud Modernization
Migrate POS and mobile app couponing system for national grocery market chain from AWS IaaS and Oracle to Azure IaaS/PaaS and Azure SQL/MI. Refactor inline PL/SQL to be Azure SQL compliant. I worked primarily on the IaC side, writing PowerShell and ARM templates to provision a robust topology of over 400 IaaS/PaaS resources per environment.
- Skills used: IaC, ARM, Bicep, PowerShell
Steel Company Cloud Modernization Assessment
In a client-facing role, write Cloud Modernization Assessment to establish high-level map of the work, risks and assumptions involved in migrating a custom software scheduling and billing system for a national steel company to Azure cloud services. Led several database and application deep dive workshops with product owners, SME’s and programmers, taking notes and doing analysis on the overall scope of the engagement. Provide sprint level estimates, with multiple resources, and total cost of project to client as well as an architectural assessment document.
Open Enrollment Platform
Provide new features and contribute to architectural design for an open enrollment platform, with a requirement to handle extremely large volumes in very small time periods that open enrollment business use cases create.
- Skills used: CosmosDB, Azure Service Bus, Azure Functions (message endpoints and API’s)
Afterman Software - Senior Software Architect
December 2019-October 2020
.NET architect for a boutique consulting company with a focus on distributed systems, SOA and messaging frameworks such as NServiceBus and Azure Service Bus.
Projects
Provider Portal for Workman’s Comp
- Skills used: OData Controllers, bacpac, NServiceBus, Mailgun, FaxCore, NServiceBus, .NET Core 2.2-3.1, WebAPI, LazyCache
In-House Product Development
Design and implement multi-tenant SaaS product for distributed system message monitoring, analysis, and transient error recovery
- Skills used: C#, .NET Core 3.1, Elasticsearch, Kibana, Razor Pages, WebAPI, Docker, NServiceBus, Dapper, PostgreSQL, DbUp, LazyCache, Auth0, OAuth, Bootstrap 4, Swagger, Polly, GitLab CI/CD, Finbuckle.Multitenant, AWS SQS/S3/SNS, localstack AWS emulator, azurite Azure emulator
Afterman Website Migration and Content
Migrate Afterman Software’s website from Kentico to Squidex CMS.
- Skills used: C#, .NET Core 3.1, Kentico, Squidex, GraphQL, OData, Razor Pages, Bootstrap 4, LazyCache, MediatR
gRPC POC for Medical Devices Client
Develop POC for transferring medical imaging information (DICOM) between radiology machines and cloud-hosted servers by “tunneling” TCP connections through gRPC services in .NET Core 3.1.
Skills used: C#, .NET Core 3.1, gRPC, TCP, Polly, Protobuf
FinTech
Working on a greenfield banking system (the first one written from the ground up in the US in over 25 years). The API-driven system uses DDD and NServiceBus to bridge the gap between domain and sub-domains focusing on synchronous, transactionally consistent operations where required, and relaxing transactional consistency across boundaries with the goal of high throughput and scaling under load.
My contributions consist of:
- Re-writing SpecFlow-based integration tests to eliminate implicit dependencies on data setup order and paving the way for test parallelization
- Re-writing “Legacy ACH client” incoming file drops from FTP to an API-driven ACH sub-domain
- Updating “partner” API’s to auto-provision both Auth0 Users and Applications (machine-to-machine).
- Researching:
- migrating from MSDTC and MSMQ to RabbitMQ
- relaxing two-phase commit style semantics and implementation to move toward a goal of supporting 10 to 15k transactions per second
- patterns for message idempotency that do NOT utilize NServiceBus Outbox or MSDTC
- Assisting with a .NET Core upgrade, Docker Containerization (Linux containers) and Kubernetes hosting on AWS.
Skills used: C#, NServiceBus 7.x, SOA, TDD, MVC WebAPI, NHibernate, DbUp, RabbitMQ, CQRS, Autofac, AngularJS, ServicePulse and ServiceInsight, Git, Azure DevOps, Swagger, Auth0, SpecFlow, xUnit, Octopus Deploy, Azure DevOps, Dapper
Blog Group Leader
- Foster an environment where sharing experience via Afterman’s blog is not only encouraged but required
- Drive content by providing subject, writing, and editorial guidance to participants
- Migrate blog workflow away from Microsoft Word shared via email to Trello and GitLab
ALMAC Group - Solution Architect, ProdIT
June 2017-December 2019
Solution Architect leading a group of 65+ software developers customizing clinical trial software.
- Scale the organization past the “greenfield project” mentality by establishing architectural governance quality gates, training, and mentorship at scale.
- With no official reporting lines into my position, influence and collaborate across the organization to invoke a fundamental shift in the way the business approaches clinical trial customizations, from design and implementation through deployment and production support.
- Leverage my knowledge of distributed system architecture in conjunction with common clinical trial customizations to establish a Customization Pattern Library, whose purpose is to give developers a searchable repository of known customization patterns including the motivations, consequences, and trade-offs of each solution.
- Attend client-facing meetings to aid in complex study customization requirements as well as act as point-person for 3rd party integrations.
- Write and refine Roslyn tests: enforce SOA and async/await best practices, proper use of technical abstractions and proper NServiceBus/message design and implementation.
- Wrote clinical trial analysis application that uses the TFS API to collect code-based artifacts across all clinical trial TFS collections:
- with the goal of showing where we’re customizing the code the most vs. the least
- to supply the executives with areas of the system we can centralize and/or make configurable vs. areas we want to stay flexible (100% customizable).
- this information was used to strategically position ourselves in the market over the next year
- Root cause analysis of production issues when all support tiers as well as senior technical leads had been unable to do so.
- Training the Design Managers (client-facing role) on architectural and design principles to change the way they were approaching clinical trial design (mainly based on the constraints and limitations of the “old” system).
Skills used: C#, NServiceBus 4.x-7.x, SOA, TDD (via nUnit and FakeItEasy), MVC 5.0, Entity Framework 6.x Code First, LINQ, CQRS, Autofac, AngularJS, ServicePulse and ServiceInsight, Quartz, Roslyn, TFS API
ALMAC Group - Senior C# Developer, NPS
February 2013-May2017
Technical Team Lead designing and implementing clinical trial software on a greenfield project utilizing SOA via NServiceBus, MVC, Entity Framework and TDD.
- Responsible for system architecture, coding, mentoring developers and code reviews in the context of working on our core clinical trial product offering
- Assists architects in system design using code spikes to explore design spaces while iteratively refining the solution.
- Designs and implements 3rd party integrations utilizing anti-corruption layers
- Convey overall technical vision and design of the system to business stakeholders and SME's to keep the solution in line with the problems the business is trying to solve.
Skills used: C#, NServiceBus 4.x-6.x, SOA, TDD (via nUnit and FakeItEasy), MVC 5.0, Entity Framework 6.x Code First, LINQ, CQRS, Unity, AngularJS, RavenDb, ServicePulse and ServiceInsight.
World Wide Analytics - Senior C# Developer
July 2012-February 2013
Responsible for designing and implementing NServiceBus endpoints, working with RavenDB by reading and writing Aggregate Roots/Entities, and designing and maintaining RavenDB indexes for an online loan system. Also works with .NET 3.5/WCF to maintain older system using SqlServer2008/Entity Framework.
- Identifies Bounded Context and Transaction Boundaries within applications and writes NServiceBus endpoints within those business processes.
- Uses an SOA design approach to build de-coupled, distributed systems that rely on durable messaging via NServiceBus
- Write RavenDB Indexes and Map/Reduce Indexes to keep reads low on the database and facilitate a ViewModel at the db level.
InvestorForce (acquired by MSCI)- Systems Architect/Technical Lead
October 2010-July 2012
Manages a medium-sized team. Responsible for the technical design, framework programming, scheduling and management of a core team of developers working on one of our flagship products, Templates.
- Team lead and co-authored the first.NET 4.0 WebForms project for the company that uses up-to-date architecture Design Patters such as: Service Layer, Dependency Injection, IoC via StructureMap, Repository Pattern, Domain Modeling, Specification Pattern, Microsoft TDD/MOQ, and Infrastructure layer.
- Implemented our first TFS source code repository for the development team and wrote a custom TFS event interceptor to deploy finished builds from TFS to different server environments via WebDeploy.
- Team lead on .NET 4.0 upgrade path. This includes research into what needs to be changed, planning the project, and implementing high-level changes such as fixing deprecated library dependencies and retiring 3rd party library dependencies in favor of Framework provided functionality.
- Planned, implemented and trained technology, qa and analysts on using the Scrum 1.0 template with Team Foundation Server to centralize our Sprint and Scrum process.
Skills used: C#, TDD using Microsoft’s test framework, IoC/Dependency Injection via StructureMap, MOQ.
InvestorForce - Systems Engineer
2000-2010
- Responsible for the design, implementation and execution of an object-based architecture for one of the company’s leading revenue-making products, Templates. Templates use inheritance, threading and object serialization/de-serialization to deliver mission-critical quarterly report books to our clients.
- Designed and delivered the first .NET re-write of an in-house product, Funds Marketplace using Use Cases, UML diagramming, OOP design and implementation, and User Controls in ASP.NET.
- Co-authored, extended and maintained flagship product, Screening, to meet client requirements and integration into new site-specific applications using COM. This product was the largest part of a software suite sold to Morningstar Investments.
SKILLS
SOA, Microservices, OOP, CQRS, TDD, GoF Design Patterns, S.O.L.I.D. Principles, IoC/Dependency Injection, DDD, Cloud (Azure/AWS)
Languages: C#, JavaScript, Azure Bicep, AWS SAM
Compiler: Roslyn
Particular Service Platform: NServiceBus 3.x-9.x, ServicePulse and ServiceInsight
ORM’s: Entity Framework 6, EFCore, NHibernate, Dapper
Frameworks: .NET “classic” (4.8) -.NET 8, MVC 4-6, Web API, MediatR, WCF, AngularJS, Twilio, jQuery, Swagger, RazorPages, GraphQL, DbUp
Testing Frameworks: nUnit, xUnit, Visual Studio Test, Shouldly, SpecFlow
Scheduling Frameworks: Quartz.NET, Hangfire, NServiceBus Scheduler, AWS EventBridge
Mocking Frameworks: FakeItEasy, Moq
IoC Containers: Unity, StructureMap, AutoFac, .NET
Source Control: TFS, Git, GitHub, GitLab
Databases: SQL Server, RavenDb, MongoDb, DynamoDB
Web Servers: IIS, Kestrel
Azure: Web Apps, Functions, Durable Functions, WebJobs, SQL Server, Storage (blob, file, table and queue), Azure Service Bus
AWS: API Gateway, Lambda, DynamoDB, SNS/SQS, EventBridge Scheduler
Build/Deployment: Octopus Deploy, Azure DevOps, GitLab
IaC: Bicep, AWS SAM and CloudFormation templates
BLOG AND PUBLICATIONS
- Personal Blog: https://www.michaelgmccarthy.com/
- Author of FakeItEasy Succinctly, an eBook for the Syncfusion’s “Succinctly” series
- Assisted in proofing and providing feedback on early chapters of Implementing Domain-Driven Design (the DDD “Red Book”) by Vaughn Vernon
EDUCATION
West Chester University
West Chester, PA
Bachelor of Science