Menu
Scroll to Top
Curriculum Associates
At Curriculum Associates (CA), we believe a diverse team leads to diversity in thinking, making our products better for teachers and students. If you read this job description, feel energized by what you see here, and believe you could bring passion and commitment to the role, but you aren’t sure you meet every qualification, please apply! Above all, we are looking for the right person!
Summary:
As a Senior Performance Engineer, you will be a key member of the Quality Engineering team supporting and driving improvements in performance, scalability, reliability & resiliency of our products and services. You will support the continued growth of i-Ready (more students & educators, more concurrent use, more data, more services and new products) through testing, automation, tuning, technical design review, and production monitoring.
A proven history of performance engineering in support of Node.js and/or Java Web applications is necessary. Knowledge of testing, measuring, analyzing, and trouble-shooting performance at the Service layer, Database layer, Runtime engine (e.g. v8, JVM) and OS is expected. Understanding of service-oriented architectures and reliability is also needed.
Essential duties/responsibilities:
Acts as a primary owner of performance test development within your team. Monitor performance of the system(s) your team. Build dashboards that combine performance and usage metrics. Lead the team in building a shared monitoring practice to improve production awareness, proactively identify performance issues, and anticipate future scaling needs. Identify opportunities to improve logging and instrumentation to improve performance monitoring, advocate for these practices on your team. Frontend Performance Testing: build / modify frontend functional automation to incorporate google lighthouse and capture core web vital metrics with continuous tests. Backend Performance Testing: build and maintain a synthetic load harness for services that can be used for nightly performance tests, on-demand scalability / stress tests. Backend Performance Analysis: profile slow business transactions and isolate problems to the business layer or data layer of the application. Analyze slow performing database queries. Tooling: create scripts and tools that assist with data setup, teardown, and results analysis Demo tools to both the functional team you are supporting, and the Performance team.
Required Job Skills and Abilities:
Performance Test Design – experienced developing performance test strategy, identifying tools and framework needs necessary to realize the strategy, evaluation and modeling of current and future production load, how to adjust test design for different informational goals (e.g. stress, capacity planning, scalability, reliability), data needs and strategies to manage test data to support tests. Web Application Performance Reporting – explain test results in context, examine and troubleshoot data from Service Layer, Database, Runtime Engine (v8, JVM), OS, and supporting infrastructure (load balancers, firewall, http servers, CDNs). Effectively
communicate (spoken, written and visually) quantifiable results to stakeholders. Provide recommendations to improve performance and/or inform release decisions. Web Applications – you are fluent in JavaScript and/or Java and understand how Node.js and or Java web applications work. You know the lifecycle of a session, how database connection pooling works, how HTTPS requests are handled. You can articulate tradeoffs between memory, latency and throughput in the context web application. Performance Test Frameworks – you have proven experience with one or more prominent performance testing frameworks (Gatling, JMeter, k6), and understand how to incorporate it to design a test harness that supports the needs of the performance testing strategy. You have designed and maintained a synthetic load test harness and used it to support a variety of performance testing needs. Test Data Management – comfortable writing scripts / tools to manage test data setup / cleanup to support high volume performance tests. Familiar with database backup and restore processes and tools. SQL Query Profiling – you have deep knowledge of a relational database engine (MySQL or similar). You can explain the EXPLAIN, plan, and suggest changes to the query and/or schema to improve execution of poorly performing queries. Application runtime profiling - Experience using runtime engine profilers to analyze heap memory, CPU usage, and identify performance bottlenecks by examining runtime internals (e.g. within v8 or JVM). API Testing and HTTP – solid understanding of HTTP and experience driving load testing through RESTFUL and plain HTTP endpoints. Experience with GraphQL is preferred. Infrastructure & Application Monitoring – experience using a log aggregator tool like Splunk, Graylog, or Elk. Experience using APM tools like DataDog, New Relic, Grafana. Linux & Docker – you are comfortable in the command line, analyzing logs, and measuring performance of processes. You know how to build a docker image.
Required Education and Experience:
Combination of education and industry experience amounting to 7 years of experience software testing.
3 years JavaScript or Java programming
3 years SQL and relational databases
3 years testing web applications
2 years or more API testing
2 years or more performance testing a web application with one or more prominent testing frameworks (Gatling, JMeter, k6 or similar)