Sofia Marini Senior Software Architect
San Jose, CA • sofia.marini@gmail.com • +1 408-555-0136
Profile Summary
- Senior Software Architect with 11 years of experience designing multi-tenant SaaS platforms across marketing automation, customer data and messaging, specializing in domain-driven design, event-driven systems and legacy modernization.
- Hands-on with architecture (event-driven, DDD), languages (Java, Spring Boot), cloud (Microsoft Azure, Kubernetes), data and messaging (PostgreSQL, Apache Kafka), APIs (REST, gRPC) and diagrams (C4 model).
- Deep expertise in bounded context design, written trade-off decisions, latency and availability targets and strangler fig migrations, using event storming and ADRs to produce designs teams can build and run on their own.
- Works closely with engineering leads, product managers, SRE and security in design reviews, RFC discussions and quarterly planning.
- Mentors engineers on writing ADRs and drawing C4 diagrams, runs the fortnightly architecture review for 9 teams, and wrote the platform’s service design checklist.
Technical Skills
- Architecture Styles & Patterns:
- Event-driven architecture, domain-driven design, modular monolith, microservices, CQRS, saga pattern, strangler fig pattern
- Languages & Frameworks:
- Java, Spring Boot, Kotlin, TypeScript, Node.js, Python
- Cloud & Infrastructure:
- Microsoft Azure, Kubernetes, AWS, Docker, Terraform, Istio
- Data & Messaging:
- PostgreSQL, Apache Kafka, Apache Flink, Redis, MongoDB, Debezium
- APIs & Integration:
- REST, gRPC, GraphQL, OpenAPI, AsyncAPI, Apache Avro, Schema Registry
- Security & Identity:
- Threat modeling (STRIDE), OAuth 2.0, OpenID Connect, mTLS, Azure Key Vault, SOC 2, GDPR, HIPAA
- Documentation & Modeling:
- C4 model, ADRs, Structurizr, arc42, PlantUML, RFCs, ArchUnit
Education
Work Experience
- Ran event storming with 4 teams on the journey orchestration services of Adobe Journey Optimizer and split them into 6 bounded contexts, each with one data owner, cutting releases that needed 2 or more teams from 35% to 9%.
- Wrote 41 ADRs for the delivery platform and ran a 6-week proof of concept with a weighted scorecard that chose Apache Flink over a custom consumer service for real-time audience checks, saving an estimated $380K a year in compute.
- Set a p99 target of 2 seconds from trigger to send for the message pipeline, checked the design with a capacity model and load tests at 3x normal peak, and held 99.97% availability through the 2025 holiday season.
- Defined AsyncAPI contracts and Avro schemas in Schema Registry for 48 event types shared by the journey, profile and channel teams, with a 2-version deprecation rule, cutting breaking-change incidents from 9 a year to 1.
- Ran STRIDE threat models on every new service design, moved service-to-service calls to mTLS with OAuth 2.0 client credentials and designed per-tenant keys in Azure Key Vault, closing 27 design-level findings before launch.
- Led the strangler fig migration of a 9-year-old batch scheduling monolith to event-driven services on Kubernetes, with change data capture and parallel runs, moving every scheduled send across in 14 cutovers with 0 rollbacks.
- Set up the fortnightly architecture review for 9 teams, with a one-page design template and ArchUnit fitness functions in CI, cutting designs reworked after build from 1 in 4 to 1 in 12.
- Introduced C4 model models in Structurizr and a 2-page RFC process for the 70 engineers on the platform, reviewed 38 RFCs in 2 years, and mentored 4 senior engineers until they ran their own design reviews.
- Designed the notification event pipeline on Apache Kafka for SMS, fax and voicemail alerts, handling 1.2B events a day with p99 delivery under 400 ms.
- Moved billing logic out of the core platform monolith into 3 services behind an anti-corruption layer, cutting release time for billing changes from 3 weeks to 4 days.
- Introduced the team’s ADR template and wrote 19 ADRs, which became the design review standard for 5 back-end teams.