Back to School: DevOps 101
I love the Fall. The cooler nights. A fresh pack of pencils. The sound of a quiet house. And the feeling like it is time to learn something new. For me, it’s time to really dig in and understand what DevOps is all about. My team is blogging about it and using it on a daily basis. We are structuring our teams to be more agile – but then I often get stuck on the purpose of some of the key tools and technologies used to incorporate DevOps principles in what we do.
I start with the purpose. Why DevOps? As a data-driven company, we deliver value-based solutions based on best practices. In order to do this, we need to incorporate the right tools mixed with proven methodologies and processes so we can deliver at a high velocity.
Best Practices + Automation = Higher Velocity
That’s where DevOps comes in. Eclipsys is not a software development company – but we need to start thinking about the work we do as if we were. It is good for our customers, and it is good for our team. We hire the top technical talent at Eclipsys and that talent does not want to be doing the same task over and over. They want to be learning new things and overcoming new challenges. Incorporating DevOps helps to create the kind of culture where people want to work.
Full transparency, my knowledge around DevOps is minimal – so I am working to educate myself and thought I would share some high-level notes I have on some of the key terms and tools.
Continuous Integration vs. Continuous Delivery (CI/CD):
The first time I heard CI/CD – I had to Google it – Continuous Integration and Continuous Delivery. I understand this as a cornerstone process of DevOps. CI/CD simply is the implementation of small and ongoing updates in a reliable fashion. This ensures that you can continue to make improvements to your apps or code in small increments without impacting your production users. All the tools that are fundamental to DevOps should really incorporate CI/CD.
There is a multitude of automation tools – each one is used for different tasks. To automate configuration – you would use Ansible.
Ansible is one of the tools used for server provisioning and configuration management to simplify the automation process. If you are planning to do a configuration task more than once – you should automate it and Ansible can do that for you. Configuring a VM, cloud provisioning, database creation or patching, software updates or orchestration – any repeatable task. It uses human-readable code and is simpler to use than Python. Here is a blog on how to use Ansible to launch an OCI instance by Kosseila Hd a Senior DBA at Eclipsys.
Terraform by HashiCorp:
Similar to Ansible, Terraform is also a tool that allows you to automate routine tasks. Whereas Ansible is more for configuration management, Terraform is an Infrastructure as a Code tool that enables you to build or change infrastructure in an automated fashion in the cloud. You don’t use it to manage existing software – instead, it allows you to create or destroy servers or other cloud services. Terraform is platform agnostic and is the go-to tool for managing multi-cloud infrastructure. Like Ansible it is easy to use, and the code is human readable. Check out Roopesh Ramklass’ presentation from Oracle Developer Live on how to build modern, cloud-native applications using Kubernetes, Terraform, and serverless technologies on OCI: https://youtu.be/B-XLbMXGb-E. or check out some of our team’s blogs on using Terraform: https://eclipsys.ca/category/terraform/
Containerization is another important term in DevOps. This is where you take all the components required for your application or software and package them together into a container. This allows for reliable deployment of your application to an environment. Containers are isolated, but they use the same operating system instead of having to deploy a new VM each time. Both Kubernetes and Docker are examples of tools for containerization. Kubernetes allows you to deploy containers in a clustered environment, while Docker runs on a single node.
Today our team walked through a demo of GitLab – our tool of choice as our DevOps platform. When you start to see the power of DevOps you realize that we can codify our expertise and spend our time improving it. As a team, we have so much knowledge and best practices but they are siloed and singular – using a repository allows for collaboration and continuous improvement with automation and version control with Git Repository. As I watched the demo, I started to think about cookies. Who doesn’t associate DevOps with cookies? I started making chocolate chip cookies during our first lockdown last year. The BEST recipe I found is https://www.bettycrocker.com/recipes/ultimate-chocolate-chip-cookies/77c14e03-d8b0-4844-846d-f19304f61c57. Like a Git repo – I have a binder with all my favourite recipes – including this one. Each time I make it, I make small adjustments to the recipe and record my alterations. I have adjusted the cooking time, the amount of butter used, the number of chocolate chips and which pan I use to bake them. I have also come up with an efficient process for gathering the ingredients and cleaning up that makes the overall cookie making experience nearly automated. Now, my kids can make my recipe and they turn out just as good as mine!
DevOps is a methodology that can bring reliability and repeatability to the tasks we do day in and day out. It allows for better collaboration within our teams by providing a way to share knowledge and best practices. It can reduce mistakes and reduce the amount of time that our team spends on repeatable tasks. All in all, it makes good business sense to start to apply these principles to everything we do in IT and in cookie making.