Site Reliability Engineer, DevOps
We are seeking a highly motivated and talented Site Reliability Engineer to work on a comprehensive suite of technologies which make up our DevOps toolchain. The DevOps team at Qualys is responsible for building and maintaining our DevOps toolchain which is then used by all product and service teams to enable their build, continuous integration, release management, continuous delivery, infrastructure provisioning, configuration management, secrets management, observability, container orchestration and service mesh efforts.
Working with a very strong team of DevOps engineers and architects, you will combine software development and systems engineering skills to build and run distributed, scalable and highly reliable systems. The ideal candidate will write software to optimize their day to day work to more efficiently manage our DevOps toolchain deployed across our 100+ platforms.
- Co-develop and participate in the full lifecycle development and operation of the Qualys DevOps toolchain
- Increase the effectiveness, reliability and performance of the DevOps toolchain by identifying and measuring key indicators, and then making any necessary changes to systems in an automated manner
- Support the DevOps team before releases through activities such as capacity planning, building deployment automation, building a strategy for monitoring and alerting, and participating in the testing/verification process
- Ensure that the DevOps technologies are maintained properly by measuring and monitoring availability, latency, performance and system health
- Participate in the development process by supporting new features and releases with an ownership mindset
- Develop tools and automate the process for achieving large scale provisioning and deployment of DevOps technologies.
- Participate in on-call rotation for DevOps technologies. At times of incidents, lead incident response and be part of writing detailed no-blame postmortem analysis reports so we’re continually improving and growing
- Propose improvements and drive efficiencies in systems and processes related to capacity planning, configuration management, scaling services, performance tuning, monitoring, alerting and root cause analysis.
- 3+ years of relevant experience in running distributed systems at scale.
- Expertise in one of the programming languages: Java, Python or Go.
- Proficient in writing bash scripts.
- Good understanding of SQL and NoSQL systems.
- Good understanding of systems programming (network stack, file system, OS services).
- Understanding of network elements such as firewalls, load balancers, DNS, NAT, TLS/SSL, VLANs, etc.
- Skilled in identifying performance bottlenecks, identifying anomalous system behavior, and determining the root cause of incidents
- Knowledge of JVM concepts like garbage collection, heap, stack, profiling, class loading, etc.
- Knowledge of best practices related to security, performance, high availability and disaster recovery.
- Demonstrate a proven record of handling issues, planning escalation procedures, conducting post-mortems, impact analysis, risk assessments and other related procedures.
- Able to drive results and set priorities independently
Bonus Points if you have:
- Experience with managing large scale deployments of search engines like Elasticsearch
- Experience with managing large scale deployments of message-oriented middleware such as Kafka
- Experience with container and orchestration technologies such as Docker, Kubernetes, etc.
- Experience with monitoring tools such as Graphite, Grafana and Prometheus
- Experience with HashiCorp technologies such as Consul, Vault, Terraform and Vagrant
- Experience with configuration management tools such as Ansible, Puppet or Chef
- In-depth experience with continuous integration and continuous deployment pipelines
- Exposure to Maven, Ant or Gradle for builds