At Curriculum Associates, we believe in the potential of every child and are changing the face of education technology with award-winning learning programs like i-Ready that serve a third of the nation’s K–8 students. For more than 50 years, our commitment to making classrooms better places, serving educators, and supporting accessible learning experiences for all students has driven the continuous improvement of our innovative programs. Our team of more than 2,500 employees is composed of lifelong learners who stand behind this mission, working tirelessly to serve the educational community with world-class programs and support every day.
A proven history of performance engineering in support of Ruby and/or Java Web applications is necessary. Knowledge of testing, measuring, analysing, and trouble-shooting performance at the Service layer, Database layer, Runtime engine, 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. Work with the performance team in the US and support a project driven by a team in Austrailia.
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 (Ruby, 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 Java OOP or Ruby, and understand how 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 of a Java or Ruby 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 - JVM Performance & Internals – Knowledge and experience with JVM tuning and heap dump analysis. Experience using runtime engine Javaprofilers 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 Java Programming
1 year Ruby 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)