Summary
I'm a software engineer specializing in distributed systems development, with expertise in AWS and Kubernetes. I excel in designing scalable and efficient solutions using JVM languages, such as Java, Groovy and Kotlin, leveraging tools from the Spring portfolio. Passionate about mentoring teams, I enjoy sharing knowledge on cloud-native concepts and introducing innovative software engineering practices to drive continuous improvement
Greenfield Cloud Native Asset Management Pipeline
- Designed and implemented an asset management pipeline using Java and Kotlin, deployed to Amazon ECS for an online shopping site with low-latency requirements.
- Leveraged AWS services including Lambda, SQS/SNS, DynamoDB, S3, Rekognition, CloudWatch, Elasticsearch, Kinesis and Snowflake for asset analysis and processing.
- Managed infrastructure using Terraform, enabling self-service test environments.
- Piloted AWS CloudFormation but transitioned to Terraform for its portability across cloud platforms.
On-Premises Microservices
- Developed microservices in Java using frameworks like Spring Boot, Spring Batch, Spring Data JPA, Spring Data JDBC, Spring for Apache Pulsar, and Spring Vault.
- Deployed applications to Kubernetes, providing services with low-latency APIs and batch processing systems of loyalty transactions.
- Utilized Oracle and PostgreSQL databases for persistence, accessed via Spring Data JPA and Spring Data JDBC, with distributed caching managed through Spring Data Redis.
API and Messaging Systems
- Designed and maintained REST APIs for synchronous processing and JSON-based asynchronous messaging to Apache Pulsar.
- Ensured high-quality code and deployment readiness using JUnit 5, Spring Testing Framework, Testcontainers, and Cucumber.
- Delivered detailed testing and reconciliation reports to the financial overwatch team for deployment approval.
Large Data Set Ingestion
- Millions of Oracle rows streamed in, concurrently processed and audited to PostgreSQL via Spring Data JDBC.
- Spring Retry handled transient failures and Bucket4j rate limiting needs.
- On-demand ability to stop and resume processing enabled downstream adjustments to be made without impacting customer experience.
Key Achievements
- Streamlined infrastructure management, reducing time-to-deployment for new environments.
- Enhanced batch processing efficiency, improving transaction reconciliation and partner reporting.
- Maintained consistent low-latency performance across high-demand services, directly impacting customer experience.
On-premises Microservices To Cloud Transformation
- Architected the migration from on-premises microservices to AWS, focusing on integrating Amazon EC2 Container Service (ECS).
- Designed and implemented JVM-based solutions using forward-thinking technologies, including Docker, MongoDB, RabbitMQ, Spring, REST APIs, and Hibernate.
- Developed a faster, more accurate reporting system by leveraging event sourcing and Groovy, improving customer satisfaction.
- Spearheaded the adoption of microservices architecture, requiring expertise in Docker, Consul, and Terraform.
Development Practices and Tools
- Advocated for test-first development and implemented automated code inspection to ensure high-quality code across projects.
- Promoted virtualization to streamline onboarding and improve development workflows, including the creation of consistent development environments.
Key Achievements
- Facilitated a seamless cloud migration, enhancing scalability and operational efficiency.
- Improved reporting performance and accuracy, leading to high customer satisfaction.
- Established foundational processes for continuous delivery, accelerating time-to-market.
In-House Banking System Development
- Designed and implemented components of an in-house banking system using WebSphere and DB2, with a focus on EJB-based services.
- Refactored legacy code to improve testability, resulting in more robust and maintainable services.
- Mentored team members in unit and integration testing techniques, including the use of TestNG, Mockito, and dependency injection, fostering a culture of quality assurance.
Batch Processing Platform
- Collaborated on an exploratory project to develop a Java-based platform for scheduling and running batch processes.
- Built the solution using Spring, Spring Batch, Spring MVC, Quartz, and Hibernate, demonstrating that assembling off-the-shelf components was more cost-effective than creating a custom solution.
Key Achievements
- Enhanced the testability and maintainability of the in-house banking system, reducing technical debt.
- Delivered a cost-effective batch processing platform, proving the value of reusable components.
Designed and implemented the core of a scalable J2EE-based OSS package for the telecommunications industry, supporting over 60 customers, including tier-one accounts with high transaction demands. Key contributions included developing automated hardware discovery and provisioning features using graph theory and rigorous object-oriented design. Delivered high-quality WSDL-based web services using test-first design techniques and deployed the solution on BEA WebLogic and IBM WebSphere connected to Oracle databases, running on Solaris and HP-UX platforms.
Designed and implemented the core application server for an E-Business and E-Commerce product line using EJBs, Servlets, JMS, and XML with an architecture compatible with multiple J2EE implementations. Played a key role in porting the system to IBM WebSphere, ensuring smooth migration.
Utilized Java and C++ to develop and enhance enterprise systems, such as a Java-based network discovery tool. Designed and implemented key subsystems, including database integration, event/alarm management, and installation processes for on-premises environments. Built maintainable solutions by applying object-oriented design principles and test-focused development.
Designed and implemented the data acquisition and installation sub-systems for an electrical metering product, ensuring efficient data processing, seamless deployment, and adherence to customer requirements. Applied object-oriented design techniques to ensure scalability and maintainability, and authored comprehensive technical documentation, including a user tutorial, to streamline onboarding and support.
Managed a team of six engineers, leading critical initiatives such as a database migration project and the establishment of coding standards for C++ development. Conducted system code inspections, guided object-oriented designs, and ensured high-quality deliverables through test-focused development practices. Championed internationalization efforts, creating proof-of-concept prototypes to extend product accessibility.
Streamlined development processes by introducing modern tools and practices, including Spring, Log4J, CruiseControl, and JUnit, to improve team productivity and product scalability.
Led study groups on AWS, Docker and Ansible, increasing the technical breadth of the organization.