Senior Software Performance Engineer
- Bengaluru, Karnataka, India
Visa is looking for Senior Software Engineers for performance track, who will help build Open VisaNet, Visa's Next generation payment processing platform developed on Open Systems, that would fuel growth in electronic payments globally and drive financial inclusion in many parts of the world.
Open VisaNet, is the Next Generation VisaNet, will push the envelope of building highly scalable, secure, cost effective and distributed application on commodity hardware using best-in-class technology components. Open VisaNet is one of Visa's Key initiative that will help Visa support in-country processing solutions and provide Visa an opportunity to move away from Proprietary Mainframe type systems. It is built as a modern distributed architecture based on micro services with goals of five 9’s availability, fault tolerance, horizontal scalability and real time latency for largest scale transaction processing. Open VisaNet leverages state of the art Open Software technologies to achieve these goals on commodity hardware, such as Go, Scala, Apache Kafka, Apache Spark, Docker, Kubernetes, Aerospike, Elasticsearch etc. and involves collaboration with exceptional group of software engineers, systems performance engineers,
security specialists, DevOps engineers, payment experts, infrastructure and solution architects.
- Conduct component level performance engineering activities, including code and data flow review.
- Contribute for creating application and infrastructure performance plans/models for a highly scalable, low-latency, highly-available and high-throughput payment processing system
- Design and Develop Data generation tools that simulate production like transaction mix.
- Execute load and performance tests to validate system performance and stability; and troubleshoot and identify issues.
- Design and conduct tests with complex workloads and data shapes to expose potential bottlenecks and failure points.
- Perform root cause analysis for the issues identified.
- Analyze metrics and trends to glean opportunities for performance improvements of the application.
- Experiment with ways to eliminate issues and present corrective actions, conduct session with developers and architects on the corrections/techniques suggested.
- Oversee system performance lifecycle and identify key metrics for performance improvements.
- Generate periodic performance engineering reports for architects, developers and PMs to review.
- Contribute for internal publishing of design tradeoffs, code best practices and lessons learned
- Support in triaging and troubleshooting of highly distributed services in production environment
- Performance Modelling capability based on Performance Test Numbers for a predefined application Non Functional Requirement
- Understanding of Microservices/CGROUP and Namespaces in Linux
- Deep Understanding of Linux Memory management
- Deep Understanding of IO Subsystem (IO subsystem layers, Type of IOs, Caching, Filesystems, RAID)
- Understanding of Compute subsystem with in-depth knowledge of scheduling of process, thread and goroutines/LWT
- Understanding of process state, context switches, system calls
- Knowledge of at least one language - GoLang, Python or Java. Should be able to code independently
- Ability to build Cost Profile for Application based on test results[CPU, Memory, IO and Network]
- Ability to profile CPU and Memory consumptions or raw dumps. Familiarity with traces, thread dumps, debug log
- Extraordinary software engineering talent
- Minimum of 3 years’ hands-on experience in performance engineering
- Effective verbal and written communication skills
- BS or MS in Computer Science or related degree from recognized university
- Previous experience with financial services or payments processing domain is a big plus
- Deep understanding of Docker and Kubernetes is a plus
- Deep understanding of Kafka is a plus
- Deep understanding of Relational Database is a plus
- Deep understanding of any NoSQL Database is a plus