Infrastructure Engineer (Developer Tooling)
We're looking for Infrastructure Engineer to work closely with the development teams and customer-facing teams to continuously improve, support, secure, and operate our production and test environments.
We believe in automating our infrastructure as much as possible and pursuing challenging problems in a sustainable and repeatable way. Currently, our infrastructure processes petabytes of data every month through hundreds of servers.
The goal of infrastructure engineers is to boost developer teams' productivity and happiness by improving our development environments and continuous deployment setup. We're building development environments and CI pipelines on Kubernetes, as it's not possible to run our tens of microservices and their databases on a single laptop. We have 10 product development teams working on providing value to our customers. They typically maintain one or more microservices that interact with each other. Teams continuously deploy their code to production. We run over 1000 dedicated servers in our private cloud.
Learn how engineers work at Smartly.io.
What You'll Do:
- Design, build and maintain the core tools used by our development teams
- Build a great development experience for our developers
- Help product development teams debug issues in production
- Solve problems for fellow developers at Smartly by understanding what slows down our developers and creates useless manual work, and come up with both short-term workarounds and long-term solutions
Projects You Might Be Working On:
- We’re just starting the team, so we’d like you to help to define which projects should be worked on. Technologies we use include Kubernetes, Ansible, Docker, Logstash, Jenkins, Grafana, and others.
- Move our continuous build infrastructure to cloud. We have 70+ developers building production services in our Helsinki office. Using public clouds, we could give the product development teams more control over their builds while scaling more flexibly our infrastructure.
- Request tracing: make it easier for any Smartly developer, when debugging, to trace a request from its source down to every service it touched.
- Improve development environment automation: our developers can set up a full copy of the Smartly environment for development. As we’re growing the team, we’d like this to be a smoother and more reliable experience.
- Standardise continuous deployment workflow: our teams write Kubernetes manifests for services and typically use Jenkins to deploy master branch automatically to production. With over 30 services, this starts to become inefficient and error prone. In some cases, we might need more flexibility like ability to pause automatic deployment or require manual trigger for deployments that potentially change a lot of data.
- Making our PHP framework more testable: while we have tests written in PHP, a lot of tests are written as Python-based integration tests that would be faster to work with as PHP-based tests
What we're looking for:
- One who strives to produce high quality, maintainable code. At Smartly.io we use mainly TypeScript, Ruby, and PHP.
- Experienced throughout the full software life-cycle in a large-scale project
- Can debug complex problems across the stack
- Experienced working with containers
- Familiar with automated build pipeline, continuous integration, and continuous delivery tools
It’s not expected that any single candidate would have expertise across all of these areas. We have a team of experienced engineers helping each other.
Benefits of Working at Smartly.io:
- Work with the nicest and brightest teammates in a self-organizing team.
- Opportunity to travel to meet customers, Facebook and Smartlies at our offices around the world via our Developer Rotation program.
- Competitive salary + option plans.
- Recharge yourself with full 5 weeks of paid annual leave.
- Healthcare insurance/service.
- Wellness and personal development (tools, events, etc.) reimbursement.
- Enjoy weekly breakfasts and quarterly dinners with the team.
What to expect from our recruiting process
1. First meeting: before diving deeper into your tech skills, we want to know who you are and what motivates you. This is also an opportunity for you to learn more about Smartly.io.
2. Technical interview: we’ll discuss various areas from frontend development to networks, security, and development methods. We’re trying to get a clear overview of your skills and where you could learn more. We don’t expect anyone to be an expert in everything.
3. Coding exercise: we’ll be doing code review/pair programming an Ansible playbook to make sure that you can also work with code. Previous experience with Ansible is not necessarily required, as the session will be very interactive.
4. Meet your future DevOps team to learn what they are working with. After that the final interview with our Engineering Director and your team lead.