If you are part of a company looking to optimize its delivery, you will have seen at least 5 definitions of DevOps. Top Google results call it “a culture fostering collaboration”, “a union of people, process and tools”, “an approach to culture, automation and platform design” and even “a philosophy”. All of these are correct, however we are fans of straightforward and practical definitions: DevOps is a roadmap to operational excellence in software engineering.
A huge misconception in the software business is that you can hire a single person and have them oversee the whole DevOps pipeline. It is close to impossible to find someone with an experience so broad. Let’s take a look at the below roadmap and see what it truly means to have a proper DevOps set-up in your company.
The base of the pyramid is automating repetitive tasks and scenarios, so that your engineers end up with less manual work on their plate. You will need experience in writing scripts using languages such as Python, Ruby or Go. (Yes, Go can be used for scripting.)
2. OS Server Administration
An organisation’s servers, be they physical or virtual machines, should be supported by an expert skilled in OS administration. Depending on business choice, companies will search for people who specialise either in Linux/Unix or Windows servers - rarely can you find a unicorn who works with both.
3. Network & Security
A company is like an organism and networks are its circulatory system. You need a network engineer who lives and breathes protocols: HTTP, DNS, SSL. Jokes aside, this is the person who designs, maintains and secures your private network infrastructure. For example, a common security practice is to deploy intrusion prevention systems (IPS) that detect and stop malicious activity. IPS are not the same thing as firewalls, although they are similar in that they both prevent unwanted interactions. Sometimes hackers manage to sidestep both IPS and firewalls, so it’s instrumental to conduct regular penetration testing of networks and endpoints, and isolate vulnerabilities.
This is where your application or product comes to life. Say you’re running a popular international ecommerce store - chances are you have a database of products and a web server fetching the right pages in answer to search criteria. It’s slow and annoying to have pages loading from ground zero everytime, so 10/10 times you introduce in-memory caching. To keep this ecosystem up and running, you would count on the shared efforts of a system administrator and a database engineer.
5. Infrastructure as Code
Even if you live the dream, there comes that one system update that messes up everything. If you’re running a high-availability and/or client-facing business, you need a quick way to revert back to a safer older version while you diagnose and isolate the issue. Infrastructure as Code is a descriptive versioning model that automates server provisioning. If you have engineers managing this properly for you, rollbacks are as easy as pie. IaC itself is not simple at all, though. It’s achieved through a combination of: Configuration management - all physical and virtual assets your company operates with are known and tracked. Puppet and Ansible are most commonly used for that task. Docker containerisation - packaging isolated applications that are executable on their own. Orchestrated (automated) deployment of containerised applications with Kubernetes. And, last but not least - infrastructure provisioning, or the art of making sure you are always configuring the same system dependencies. Our personal favourite provisioning tool is Terraform.
6. Continuous integration and continuous delivery
Software applications are a product of teamwork. But how do you streamline everyone’s contribution into a single project? The answer is continuous integration, or regular merging of your engineers’ code into a common repository branch. Building on that, the next step is continuous delivery - working in short cycles and releasing new versions at the click of a button. To automate your build-test-deploy cycle, you would likely turn to Jenkins.
7. Version control
We already spoke about Infrastructure as Code above. IaC stemmed from the software engineering practice of version control: recording a chronological set of files with various versions of your code, so you can track changes, rollback to old versions or replicate your repository on a new instance. Git is the most common versioning tool, although some teams opt for SVN and CVS.
8. Monitoring and logging
Monitoring gives you an overview of your applications’ state and helps you detect mishaps so they don’t occur again. You can monitor various criteria like performance, integrity, availability etc. The choice of monitoring tools is vast, but we recommend Zabbix and Grafana. Logging will help you examine events related to the state of your application in more detail. You can analyse malfunctions, see what caused them and remove the disturbance for next time. The ELK stack can be your best friend for this. It’s an acronym for three funky named open source projects: Elasticsearch (search & analytics), Logstash (data processing) and Kibana (data visualisation).
9. Cloud engineering
Like it or not, everyone is “floating in the clouds'' now. A decent cloud architecture provides you with unmatched standardisation, speed, availability, and collaboration while sparing you the cost & hassle of managing on-premise bare metal. To support your transition journey, you need skills in cloud engineering - including but not limited to design, implementation, maintenance and support of cloud-based infrastructure. Selecting the right partner is key. The biggest market share is currently taken by AWS, Microsoft Azure and Google Cloud Platform. At Technofy, we have chosen to trust and partner with AWS - the leading cloud computing provider, and the most versatile in our opinion.
There it is, the full DevOps roadmap. DevOps is not a single job, it’s the fruit of collaboration between domains. To cover all described areas, you will need to build a team of diverse experts and give them the right tools, and it obviously is a complex and costly organisation to setup. At Technofy, we are by your side to deliver the DevOps expertise, choosing an approach that will best fit your organisation and delivery standards:
- Our DevOps as a Service approach is ideal if you are a start-up or a corporate, looking for a fixed price service while completely handing over the responsibility of DevOps and the automation of your cloud. You simply have to choose the level of service you need and the part of delivery management you want to outsource.
- Our Professional Services model is ideal in the frame of partnership, as you will be able to quickly supplement, or complement, your services to your clients through our DevOps expertise à la carte.
Subscribe to DevOps services? Get in touch to learn more!