Do you love working with OpenStack? Want to make it your career? You may be a relative newbie or a grizzled veteran, either way, there’s a path for you to land your dream job working with OpenStack. Let’s take a look at what employers want in a prospective OpenStack candidate.
What jobs are out there and what skills are employers looking for?
Today, there are many more jobs available for OpenStack experience than resources that exist in the talent pool. The good news is that as of October 2017, LinkedIn listed almost 6,000 jobs, Indeed 2,500 jobs and Glassdoor 2,600 jobs with OpenStack as a title or a requirement. Want more good news? The jobs are at all skill levels. According to Glassdoor, OpenStack jobs have an average salary of about $90,000 per year, at a wide range of experience levels.
So, now that we’ve established there’s high demand, what kinds of positions are being advertised? Let’s break down the four most requested positions by common titles, responsibilities and requirements.
OpenStack developer (aka OpenStack engineer)
In the past, this title has been a catch-all for a position where the candidate be responsible for all aspects of an OpenStack deployment (engineering, operations, infrastructure, onboarding, etc.) This candidate would touch almost every aspect of a production cloud — from planning, deploying and even operating the company’s production and development clouds. However, as production OpenStack clouds have now scaled to very large enterprise levels and beyond, employers have started to create more specialized positions and distilled the responsibilities f0r the OpenStack Engineer down to a subset of the original scope.
Today, some commonly advertised responsibilities of the OpenStack Engineer can include:
- Ownership of internal OpenStack projects to extend or customize OpenStack code to satisfy business requirements
- Working closely with QA and Support teams for bug triage, fix creation and resolution upstream
- Working with upstream OpenStack projects to contribute bugs and any new code back to the OpenStack foundation
Employers are typically looking to hire someone with intimate knowledge of the OpenStack core projects in detail, down to the code level and the ability to create, modify and upstream bug fixes and enhancements. Some examples of requirements (other than prior OpenStack experience) include:
- Skills in software design, problem solving, and object-oriented coding skills; familiarity with the OpenStack core projects and the OpenStack Foundation CI system
- Strengths in coding (Python preferred), data structures, algorithms and designing for performance, scalability, availability, and security
- Demonstrated experience in one or more static and dynamic languages – Java, Scala and/or C++ / Python, Ruby or Node.js
Based on the requirements above, this type of a position is an obvious fit for someone with experience working on one or more OpenStack projects and who is familiar with OpenStack development and bug fixing. It can also be a great for experienced Python programmers with a DevOps background who are looking to get involved with something new. If you love what you’re doing with OpenStack as a volunteer coder, why not get paid to do it as your job?
OpenStack operator (aka OpenStack operations administrator, OpenStack technical support, etc.)
Operational roles for OpenStack clouds are very similar to operational support roles in legacy infrastructure shops, with the addition of specialized OpenStack skills (to operate and troubleshoot the software.)
These specialized skills include:
- Technical troubleshooting of customer reported software issues with an OpenStack cloud
- Helping customers with the Horizon interface, operating cloud management platforms and Heat templates
- Identifying bugs in underlying OpenStack components and collaboration with engineering staff to isolate root cause analysis
This type of position is often advertised at various skill levels. At higher levels, the position may include additional responsibilities like:
- Reproducing customer reported bugs in lab environments and use collaboration and reporting tools like JIRA, Confluence and ServiceNow to manage and report
- Assisting engineering staff by reporting bugs, publishing patches and working with the development team to coordinate upstream patch and bug management
- Providing backline support to customers by interpreting log files and python errors in OpenStack projects
To perform these functions, an employer would be looking for the following skills:
- Senior level Linux OS proficiency in the flavors that the enterprise provides; knowing RHEL/Centos, Ubuntu and SUSE well should cover most bases
- Expert level proficiency in operating an OpenStack cloud via Horizon and/or CLI. The Certified OpenStack Administrator (COA) is a perfect certification and a great starting point for this career
- Knowledge of some scripting language, the ability to read Python logs and excellent communications skills, since the candidate will be dealing with customers
- Familiarity with OpenStack’s CI tools may be needed for anyone interested in the higher-level operations positions.
Some of the other prerequisites employers are looking for in an operations employee are a solid understanding of network and distributed computing and basic network concepts like routing, switching and firewalls. Bash/Ansible/Puppet/Chef scripting is always a plus for anyone who is interested in an operations position, it allows you to automate all the things!
OpenStack site reliability engineer (infrastructure architects/administrators, configuration manager, etc)
While the position of site reliability engineer has been around since 2003 when Google hired a team of seven software engineers to run a production environment, it’s relatively a new career path to the OpenStack realm. The position is about 50 percent traditional ops work such as incidents, on-call and break-fix intervention. The rest of the time, site reliability engineers are tasked with the responsibility of creating scalable and highly reliable software systems. Therefore, anyone considering this OpenStack career would spend about half of their time testing out new OpenStack features, scaling OpenStack and ensuring that the environment is highly reliable at scale.
Some common responsibilities may be:
- Using DevOps processes, creating and automating methods to scale OpenStack compute, control and storage within and across data centers
- Automate the backup, failover and disaster recovery procedures of an enterprise OpenStack environment
- Develop, automate and manage patching procedures for underlying OSes, tools and OpenStack components
As you can see, this position has a very broad set of responsibilities from infrastructure management to testing new OpenStack features and projects. Thus, the skills needed to perform these functions also span a large set of domains. A SRE would typically be from either a software development or systems administration background with very strong skills in configuration languages and automation. While a strong operations background is also very desirable to perform highly on tasks like high availability, disaster recovery, backups and scaling.
Some common skills requirements include:
- Expert level Linux OS troubleshooting. Ability to troubleshoot issues with the underlying components of OpenStack when investigating incidents or testing new features and projects
- Senior to expert level programming ability. Demonstrated ability to use configuration languages like Puppet, Chef, Ansible, Salt, Bash to create automations and manage systems
- Senior level OpenStack experience. Must know architecture, operations and be able to troubleshoot bugs within OpenStack to achieve root cause analysis
OpenStack architect (cloud architect, cloud infrastructure architect, OpenStack solution architect, etc.)
So far, we’ve listed positions that can deploy, expand, operate and govern OpenStack clouds. What if an employer is looking to begin their OpenStack journey or looking to expand their cloud organically? What if they need someone to marry business strategy challenges with cloud based technical solutions? What kind of position could be hired to design and architect these comprehensive cloud solutions? This is where the OpenStack/Cloud Architect role fits in.
Cloud architects are typically responsible for the some of the following:
- Lead strategy for cloud adoption, cloud application design (OpenStack / multi-cloud / hybrid), management and operations.
- Use established and new architectures create tactical plans for cloud deployments using legacy and emerging compute, network and storage options
- Design and plan cloud architecture using least cost, least risk and most efficient solutions and have the ability to communicate them to executive management.
Similar to the positions above, this sampling of responsibilities could differ based on the employer’s requirements and how siloed the organization is. Other than having significant cloud experience in OpenStack, experience in one or more of the other cloud platforms is helpful. This is typically a senior level position due to experience being one of the main ingredients employers are looking for.
Some other skills employers are looking for this type of position are:
- Expert OpenStack/cloud architecture skills. Understanding not only the technical challenges of cloud, but being able to answer how certain cloud functionality will solve business challenges.
- Demonstrated currency of cloud knowledge. Not only do architects have to know cloud platforms well, they must also be current on latest features, functionality and maturity of the latest technology in cloud. Experience is very important in this position.
- Ninja level communications skills. Many times, OpenStack and cloud architects have to present ideas, designs and solutions all the way up to the executive level. Sometimes a candidate might even need to bring a customer up to speed from the very beginning of cloud technology. Trust me, it’s like speaking martian to a dolphin sometimes, but it’s the architect’s job to translate and be understood.
Other related positions – DevOps engineer, CI/CD engineer, cloud software architect
Some positions being offered by employers today may not even involve working on OpenStack itself but are positions that need to know how to use OpenStack as a tool for infrastructure as code. If your current job requires developing application code in Java, Node.js, Python, Go or any number of other application programming languages used in the cloud today, it’s a good chance that you’ll have to learn how to interact with infrastructure APIs like OpenStack’s. Since half of the Fortune 100 is running OpenStack, it’s going to be a safe bet for your career to skill up on OpenStack technology before your company installs a corporate OpenStack cloud.
As platforms-as-a-service evolve and containers become even more popular, developers working on distributed infrastructure will have to become even more knowledgeable and flexible on how they are deploying code. Some of this knowledge involves the tools around DevOps and its myriad of tools. How these tools interact with OpenStack and other cloud platforms is invaluable now and will be increasingly more valuable in the future.
Additionally, container technology (Docker, Kubernetes, etc.) shows up in a fair amount of all of the job categories above, so I would be remiss if I didn’t recommend that all job seekers learn the fundamentals of containers and container management platforms.
With a bit more knowledge of what employers are looking for, hopefully this will help you evaluate your tool belt to make sure you’ve equipped yourself with the proper skills for an OpenStack career.
Now get out there and land that OpenStack dream job!
About the author
By day, Ben Silverman is a principal cloud architect for OnX. An international cloud activist, he’s also co-author of “OpenStack for Architects.” He started his OpenStack career in 2013 by designing and delivering American Express’ first OpenStack environment, worked for Mirantis as a senior architect and has been a contributing member of the OpenStack Documentation team since 2014.