Bengaluru, September 13: Agile is about flexibility, not deviation from plans. This article goes deep into elaborating some of the major areas of the DevOps domain. With one of the best industry experts, we shall get to know the importance of soft skills in DevOps. We are discussing the integration of design thinking in DevOps, empowerment and clear communication. Continuous Validation in CI/CD is explained as a means to ensure high-quality software through automated testing. This interview also outlines best practices for securing containerized applications are outlined, including using official images and implementing security policies. Furthermore, this article emphasizes on the importance of performance testing in cloud-native environment, with a focus on measuring and analysing metrics. Lastly, the conversations shares some essential skills for DevOps practitioners, covering technical proficiency, soft skills, and a commitment to continuous learning and automation.
Let’s dive deep into this discussion with Mr. Siva Adhikarla who is Associate Director of Software Engineering at bigbasket.com. This conversation is led by Mr. Marquis Fernandes who is the India Business Head for Quantic India. Read below to explore a range of insights in the DevOps and Agile space.
Mr.Siva is a leader with more than 20 years of experience in vivid aspects of the domain. His specialties lies in Software Engineering, Quality Engineering, Release Management, Agile Coaching, Product Management, Design Thinking, User Experience Design and DevOps – using agile methodologies on Cloud and Containers.
1. Being an Agile Coach, what is your unique teaching mantra in this industry? Please share some experiences that are special for you
We need to clear up some common misconceptions about Agile. You see, Agile isn’t about deviating from a plan; it’s all about flexibility. It doesn’t derail projects; it customizes them. While we often emphasize flexibility, it’s essential to remember that processes and documentation also play crucial roles.
Let me share a practical example. There was this one Scrum team that had hour-long standup meetings because they were addressing blockers during the standup. To make things more efficient, I suggested breaking it down into a 15-minute standup meeting and a 45-minute post-standup session. During the standup, team members facing blockers would call out who they needed for the post-standup discussion. This way, we could tackle the blockers without monopolizing the entire team’s time, allowing for more productive progress.
And then there was another Scrum team that had the same sequence of updates in their daily standup, which made it less engaging. To add some excitement, I recommended having the Scrum Master start by calling out the first team member. That person would give their update and then nominate the next team member to speak. This simple change injected some dynamism and engagement into their daily standup.
2. What are some crucial soft skills/ qualities to be learned while entering into the realm of DevOps that can help one become a better leader in future?
Many misconceptions arise when people aren’t kept in the loop, especially in a horizontal team like DevOps. DevOps is often viewed differently compared to application teams, and this divide can widen when DevOps work isn’t transparent or timely.
One simple way to bridge this gap is by providing regular updates on what’s happening. You can do this through a ticketing system like JIRA, a messaging platform like Slack, or even through email. Clear documentation of each activity, including step-by-step instructions and SLAs (Service Level Agreements), can also go a long way in helping teams understand what’s happening.
Additionally, I’d recommend having recurring meetings, perhaps quarterly, with the application teams. This gives everyone a sense of what was accomplished in the past quarter and what the roadmap looks like for the next quarter. It’s all about keeping the lines of communication open and ensuring that everyone is on the same page.
3. How can the practice of “design thinking” be applied within a DevOps framework to encourage innovation, empathy, and problem-solving from a user perspective?
This is a thought-provoking question! As a DevOps engineer, your role is that of an enabler. You’re there to empower your primary users—the Dev Team, i.e., developers, QA engineers, and Ops —to smoothly take their code all the way to production, making it the safest and easiest journey possible.
For this to work effectively, it’s essential that the Dev Team has a clear understanding of DevOps practices, the importance of collaboration, automation, and the CI/CD (Continuous Integration/Continuous Deployment) process.
Working closely with the Dev Team, you create and prioritize the DevOps backlog. This means identifying what needs to be done and in what order to enhance the DevOps pipeline.
As you progress, it’s a good idea to create quick prototypes and focus on addressing low-hanging fruits. Embrace the ‘fail-fast’ mentality, which means experimenting and learning from failures. This feedback loop is invaluable in enriching and refining the DevOps backlog, ensuring it aligns with real-world needs.
However, one of the most critical aspects of this role is clear communication. Those soft skills we talked about earlier, such as effective communication, collaboration, and empathy, come into play here. They’re essential for building strong relationships and making sure that everyone is on the same page.
In a nutshell, being a DevOps engineer isn’t just about the technical aspects; it’s about being a facilitator, a communicator, and a problem solver for your Dev Team, ensuring they can navigate the development pipeline seamlessly.
4. How does Continuous Validation fit into the broader CI/CD strategy? How are organizations viewing its importance?
Let’s talk about CI/CD, which stands for Continuous Integration and Continuous Deployment. The main goal here is to reduce the time it takes to integrate code and get it to market faster. In simple terms, it’s all about delivering high-quality software more quickly.
Now, one key ingredient in achieving this ‘high quality’ is automated testing. Automated tests, with good coverage, when combined with CI/CD, are what make this possible.
But there’s another aspect to this, known as Continuous Validation, or Continuous Testing. What this means is that you’re testing your code continuously, all while you’re doing continuous integration and continuous delivery. In other words, it’s about seamlessly integrating automated test suites into your CI/CD pipeline.
These automated tests cover a range of things, from basic sanity checks to functionality tests and regression tests. And it’s not just about running these tests; it’s also about generating test result reports to track how your software is performing.
This concept has become incredibly important in the broader CI/CD story of organizations. The good news is that most test automation frameworks are already designed to smoothly integrate into CI/CD tools.
I’ve actually written a blog post on Continuous Validation that goes into more detail – here.
5. What are the best practices for securing containerized applications, and how can DevOps teams integrate security measures seamlessly?
A secure environment is crucial to protect sensitive data, prevent vulnerabilities, and maintain the integrity of the software. Some practices that I recommend are:
- Usage of official base images, regular vulnerability scans, and minimalistic image size by adding only required dependencies.
- Namespace isolation and appropriate privileges, avoiding running as root.
- Kubernetes security policies includingRBAC (Role-based access control), API security, and secured cluster access, along with container-level logging.
- Encryption and patch management for keeping pods free from vulnerabilities.
6. With the rise of cloud-native technologies, how can QA engineers validate application performance, scalability, and resilience across various cloud environments?
Performance testing, often abbreviated as PT, plays a crucial role in our development process. It’s all about measuring and analyzing performance metrics to see how our system handles increased workloads. The goal is to catch potential issues like slow response times, high CPU or memory usage, memory leaks, crashes, or network latency problems. Through performance testing, we make sure our application is effective and responsive, whether we’re dealing with typical usage or facing a surge in demand.
To help with this, I suggest developing a performance testing framework, a self-service tool that empowers teams to run performance tests on their APIs. This way, they can make any necessary adjustments and effectively compare the results. It’s all about ensuring that our software can handle whatever comes its way.
7. According to a senior experienced leader like you, what should the essential skills of a DevOps practitioner be?
DevOps Practitioner needs a diverse skill set. Some examples are: Scripting like Python, SCM/versioning tools like Git, CI/CD pipelines like Jenkins, Containerization like Docker, Orchestration like Kubernetes, Cloud services like AWS, Azure, GCP for provisioning and managing, IaC tools like Ansible for automated server configurations, APM tools like Newrelic for application monitoring, Log management like Kibana for debugging.
Now, this list isn’t exhaustive, but it’s a good starting point. In addition to these technical skills, you should also possess some key soft skills like effective communication, a commitment to continuous learning, a grasp of security best practices, and a solid understanding of Agile and DevOps methodologies. Plus, automation should be second nature to you. It’s all about having a well-rounded skill set to thrive in the world of DevOps.
To know more about us / publish your article, reach us at
www.quanticindia.com
marquis@quanticindia.com