I sat down with Ricardo Félix, the lead DevOps Engineer at Uniplaces to talk about DevOps best practices for startups. Uniplaces is the leading online marketplace for booking student accommodation (and they are hiring). Before joining Uniplaces, Ricardo was the VP of Engineering at Codacy and a Senior DevOps Engineer at Miniclip.
For a newly founded startup, what are the top 3 DevOps-related things developers should pay attention to?
The priority for developers is to build a great product loved by customers. On this path there are a couple of things that developers and CTOs especially, should keep in mind:
- Keep the code architecture and infrastructure as simple as possible. Everyone joining the company should be able to understand it. Taking advantage of serverless services on AWS, Google Cloud Platform or Microsoft Azure is definitely a big step forward in enabling startups to deliver better products with less effort.
- The continuous integration tool (CI) is the backbone of a well-performing engineering team. Investing resources in an excellent CI tool and its configurations from the beginning will avoid a lot of pains on building and deploying software.
- Having a good and clean code base will keep developers motivated over time. No engineer wants to join a company with a messy code base, and that doesn’t have clear and well-defined development standards. You can also take advantage of linters to enforce your standards and help junior developers to improve their coding skills.
When does a startup know it needs a full-time DevOps Engineer?
Like everything in life, it depends on which stage your company and development team is currently at. 😛
Typically it happens when developers start complaining they’re spending too much time working on infrastructure, when the team is taking too long to deploy or simply when there are no automation tools in place.
Startups have to keep in mind that DevOps is actually not a sysadmin on steroids or a developer who can do infrastructure and deployment automation. Sure they will take care of the infrastructure, implement best practices, processes, and tools that will help both Ops and Dev to be successful at their job. But DevOps is really just a methodology and not a position per se. It’s part of everyone’s responsibility to behave and enforce it since both ops and devs work and ultimately exist, to enable the business.
What are the essential skills the first DevOps hire should have?
Hiring your first DevOps, call it engineer or evangelist, is a tricky topic. Between an infrastructure engineer that has a Dev mindset or a developer that can also do Ops the choice is tough. There are no silver bullets. Hiring a DevOps can accelerate a software team exponentially, but it can also significantly slow it down if too many processes are brought in too early.
For the first DevOps hire, soft skills are essential to be able to solve an organization’s problems efficiently. It is my firm opinion that soft skills are more important than technical skills on your first DevOps hire.
What did you focus on during your first weeks at Uniplaces?
During the first few weeks, I focused on looking at existing development processes and pain points, and to my surprise, most of the things just needed to be standardized since the team already had a really strong DevOps culture. I started by coding the infrastructure with Terraform. In between, I’ve also planned on standardizing the delivery and deployment pipelines to ship better code faster.
I’ve also pushed for many teams across Uniplaces to start using Confluence for documentation, and I helped to customize Jira to make it work better with our development workflows as well with creating new workflows and projects for Infrastructure, Data and IT.
Can you describe the process from code to production at Uniplaces?
We have a diversified tech stack at Uniplaces that is mostly selected by our developers on the different tech verticals that we have here.
You can give it a look at Stackshare.
Regarding the process of taking code from development into production, it seems important to mention that we use the classic Git-flow model. Feature branches need to be reviewed by at least two engineers: one senior engineer that will look for performance, logic and security and one junior engineer that will try to learn and add value to the pull request.
One of our next milestones will be to have linters in place via pre-commit hooks. Standards will be defined by the leads of each language.
When it’s ready to be merged our CI, TeamCity from JetBrains will run unit and functional tests, and if everything passes, it will create a Docker with the artifact.
That Docker is then automatically deployed in staging, and after we run QA and QE tests in staging, we deploy it to production in just one click.
What is the cross-team practice, tool or feature that you put in place that had the most impact in your company?
Without hesitation, it is the implementation of Jira in combination with Confluence from Atlassian. In the past, different teams at Uniplaces used Spreadsheets, Jira and Trello but since there was not any integration in between it sometimes created a roadblock to transparency and sync between teams.
What is the biggest challenge in your current role?
We need to create the foundations for scaling the team to the next level. As a fast-growing organization, we will, of course, run into issues but the DevOps culture we have implemented on the engineering team will surely help us weather the storm.
How important is Security in your DevOps role?
Security is becoming more and more the responsibility of DevOps. There are a lot of exciting security frameworks out there that allow for security testing to be included on your development lifecycle, and soon it will be as important as code reviews.
This being said we have regular internal initiatives into making security something that everyone has on the top of their heads as one of their top priorities when developing as well as a bug bounty program in place in case we are contacted by someone regarding potential security bugs.
What excites you the most about the future of DevOps?
Definitely that more and more organizations are embracing the DevOps methodology.
Even though many organizations are mostly following the hype of their competitors looking for DevOps; they’ll end up with the benefits of having people working within their companies that will care about all the things DevOps care about.
I’m also very excited about the growing number of companies that are taking the initiative to have both DevOps and SRE (Site Reliability Engineering) teams. Understanding the difference of scope and the importance of both is what, in my opinion, will allow for tech teams to excel at enabling the business they work for.