Successful software projects are delivered quickly, accurately, and reliably through DevOps practices. To achieve a high level of consistency, automation is the key.
As is the case with many software problems, a solution often requires working collaboratively with other people, and people are harder to automate. Being able to provide transparency in how work is done and communicated becomes crucial.
Let’s review a few tips and best practices to evaluate how you might improve your DevOps workflows.
1. Simple is better than complex
Tasks are difficult and error-prone when they’re complicated. Software problems can be complicated. A system is complex when it has many components, so it’s important to strive for simplicity. One way to do that is by minimizing the number of components.
If you are looking for ways to make incremental improvements, keep your workflows small and focused. Minimize the number of systems you introduce and need to look at—whether that’s to find notifications, where to find tasks to do, how many systems are parsing log files, or where to look to gauge the health of systems overall.
You want to automate as much as possible, but not at the expense of making things so complex that you are fighting human behavior or spend all day babysitting automations.
Be sure to keep your workflows small, focused, and simple. That way, you can more easily adapt and reuse what you have in future projects.
2. Track your work
This may seem obvious, but I’m often surprised at how few engineers track their work consistently. Sometimes the issue requires a heart-to-heart between managers and teams about the appropriate ways to engage. I’m a big fan of using Personal READMEs where both manager and engineer can come to an understanding of what’s expected.
Sometimes the manager needs to understand the value of an engineer who wants to experiment to add variety to their day-to-day work or who doesn’t want to be nagged about the status of a project that needs more deep thought. Likewise, the engineer may need to understand the goals for managing a schedule, reporting KPIs, and having an accurate view of team status.
Low-value work often looks urgent because it’s delivered through an email or a phone call. Once all incoming requests are put in the same bucket as other work, priorities across teams can be viewed transparently. Procrastination and distraction are reduced because it’s possible to focus on the tasks near the top of the list, where high value is prioritized.
If you can achieve the discipline of tracking your work consistently and transparently with trust, you’ll experience numerous benefits, including:
- Less time needed to research and write root cause reports
- Associating code commits with the task for bidirectional correlation
- Clearly identifying the changes made as a service moves across runtime environments
- Traceability that provides a leg up for understanding
More opportunities for automation are available when you have a consistent pipeline for tracking work.
3. Use good CI/CD tools
The value provided by continuous integration/continuous delivery (CI/CD) tooling has accelerated in recent years because of competition. GitHub, GitLab, and other services are driving progress through automation features. It is worth a periodic evaluation to see if the effort required in making a switch from your current tools pays off.
At a minimum, you should have automation where:
- A commit triggers a hook for quick smoke test validation
- A merge request initiates automated builds and deployments
- Deployment to a new environment kicks off notifications
This doesn’t need to be an overly complicated initiative. Any simple test can add information and help establish CI/CD as a practice from the start. Don’t overthink it, but make sure you provide users more signal than noise.
4. Give context for insights
Like the McFly family photo from Back to the Future, something that changed in the past may be causing issues today. The longer time passes without a resolution, the more the context fades away and is lost.
Timely alerts and messaging are crucial for proper response to a problem. Staring blankly at a dashboard looking for blips in the matrix is an example of repetitive operations work to get away from. The logs, metrics, and other performance and monitoring reports on those dashboards are good forensic tools. But context is needed for insights that let us know when and where to look to bring things back to their natural order.
5. It’s not done until you tell someone
Your build completed, your tests passed, your code merged. Where’s the party?
A task, project, or deployment isn’t complete until that status has been communicated to the people (and tools) that need to know. “Done” means your end user (whether internal or external) is aware of and delighted by what the team’s efforts have produced. You need to tell them!
Using messaging tools to communicate status throughout your process is a great way to add automation to a workflow. It’s important not to overwhelm with information. Instead, deliberately curate relevant details.
You want to communicate relevant events that will help your users choose topics that interest them. By connecting people with the process, you can help focus on the stuff that matters.
Bonus: Tools to help you start tracking
Want to track your work? Consider learning about powering Jira workflows. Want to use good CI/CD tools? Integrating Jenkins with contextual channels might be helpful. Are you looking to keep things simple? Managing multiple Active Directory identity providers across multiple organizations is complex, but simple solutions are available.
Finally, ChatOps with Mattermost can also become part of your efforts. Messaging integrations often start out as entertaining chat responses, but most teams quickly see the advantage of bringing collaboration between team chat, bots, and relevant tools and workflows together, which can make day-to-day work more fulfilling.
Take a look at the existing Mattermost integrations and find a couple of the tools that you’re already using for deployment.
To learn more, check out some of our related reading including the Mattermost integrations documentation, our ChatOps homepage, and our blog post Build better workflows: Announcing the Mattermost DevOps integration set.