Legacy System Administration To Cloud Enabled DevOps Transformation Journey - Part 1
I have seen that many System Administrators who are working in a legacy environment i.e., traditional physical datacenter based environments find it difficult to move into a Cloud Enabled DevOps environment. I also experienced the same at some point. Though emergence and adoption of Virtualization takes away some kind of legacyness, virtualized workloads in a physical data center are still treated as legacy and existing professionals still work in a similar manner. This is because in a traditional environment each technology stack is managed by different teams and each works in its own silos. They are not happy if somebody from a different domain poke into their territory taking too much interest in their affairs. Technology professionals of each team worked with the same technology for quite a longer duration of time or may be 80 - 90 % of their career hence they have created a comfort zone for themselves. They would find it difficult to come out of their comfort zones and give additional efforts to learn other newer technologies/skills. If somebody from one team would be interested to learn the skills used by another team, they would generally approach those guys from the target team however there is no certainty that he/she would be welcomed by them so easily and instead would consider him/her as a threat and not providing any information. Finally the person got demotivated and returned back to his seat and continued to work with the same stuff.
Before DevOps, Agile practices came into picture however Companies tried to implement it in a worst, vague and boring manner mostly forcefully. Hence in most of the big organizations it is not successful and not widely accepted by the employees because it resulted in additional workloads to be imparted over the standard work in the form of repetitive reporting and stand up meetings which generally does not add any value or improvement in the current work culture. Just everybody is implementing it does not mean that you have to implement it without understanding its pros, cons and without any planning and customizations.
With some motivational approach and mindset change, it could be easily possible to come out of the legacy zone and grab all those skills necessary to survive in the newer upgraded environment i.e. in the world of DevOps and Cloud. Any kind of transformation needs additional efforts to be given. The question is why do we need to transform? You need to transform for your own benefit and for your own survival hence I would think it would make 100% sense and worth to give additional efforts to grab the necessary skills.
This is knowledge zenith age and the advancement of the Internet makes it possible that learning materials are widely available freely on the Internet which anybody can access. The question that need to be considered are:
- What to find?
- How to find it?
- Where to find?
- How to use it?
For quite a long time I wanted to start a series of articles on this same topic where I can discuss the problem I faced myself and how I mitigated it for me or you can say still working it because I believe learning never ends and is a continuous process.
What do you mean by DevOps:
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.
How DevOps Works
Under a DevOps model, development and operations teams are no longer “siloed.” Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operations, and develop a range of skills not limited to a single function.
Does that mean a System Administrator needs to learn software development?
No, a system administrator does not need to become a software developer in order to work in a DevOps environment. However SA should increase his/her programming acumen/skills so that the normal day to day activities could be done faster through some kind of automation.
SA should learn some additional specific tools and coding skills Like:
- Bash Shell Scripting if you are a Linux/Unix Professional
- Powershell scripting if you are a Windows Professional
- Ansible for configuration management because it is one of the most important tools used widely nowadays for automation of IT services. Though it is originally designed to be used under Linux/Unix environment however support for Windows also incorporated now hence could be used with Windows end points as well. There are other tools with similar functionalities available in the market like Chef, Puppet etc however Ansible is the winner.
- Terraform for IAAC (Infrastructure As A Code) which is one of the most widely used tools used for deployment of resources like Virtual Machines on VMWare environment, Public clouds like AWS, Azure and GCP and also with Private clouds based on Openstack etc.
- Increase knowledge on Public Cloud platforms like AWS, Azure and GCP. Start with Fundamentals and then go further with Intermediate and Advanced Professional Skills.
- Knowledge of Linux is highly recommended however not mandatory. Knowing Linux operating systems would help to a great extent towards the journey to DevOps.
- Increase knowledge of Computer Networking at least upto CCNA level (Certification can be done however not mandatory) because going forward in a cloud based platform you need to setup and configure the virtual software defined networking yourself so that the Linux/Windows instances and different apps and services communicate with each other. In a traditional legacy Datacenter Environment, network setup jobs are ideally performed by a separate team in most of the medium and big corporations like IBM, HCL, TCS, Wipro etc. leaving the system administrators focus on their respective fields of work like OS support, DBAs, Application Support etc. However good knowledge of Computer Networking is always a necessity in IT and it helps a lot while troubleshooting complex technical issues.
- Should be familiar with CI/CD (Continuous Integration and Continuous Deployment) practices and the tools like Jenkins which widely used in the Industry.
- Need to have working knowledge of code repository and version control tools like Git and Github/Gitlab etc.
- Another important skills we cannot overlook is of course Virtualization (VMWare OR KVM OR HyperV) which is actually the foundation of a modern cloud.
- Some next gen monitoring and visualization tools like Nagios, Grafana and Prometheus etc.
The above mentioned skills are the most necessary fundamental technical skills necessary to enter into the DevOps world.
Apart from the above technical skills, some soft and behavioral skills are also highly desirable because DevOps is not only about technical skills, transitioning to DevOps requires a change in culture and mindset. Hence the following skills and capabilities are the most important to be successful in DevOps:
- Continuous Learning attitude required because there is huge change and transformation happening in the Technology industry. This happened due to the emergence of newer, sophisticated and more advanced technologies which would replace the older ones. We need to adapt to the newer way of work using the newer technologies, software, IOT enabled hardware, different kinds of tools and apps etc. If we are not able to adapt to the newer technologies, we would become obsolete.
- Understanding of the Software Development Life Cycle is recommended. Need to understand the workflow so that you could be able to impart your specialized skills wherever and whenever necessary.
- Need to understand the Infrastructure Architecture ins and outs of your IT environment so that you could be able to troubleshoot any critical technical issues easily.
- Take Ownership. Never say “that’s not my job." Being into a DevOps culture everything falls under your responsibility. (Taken from Amazon Leadership Principle)
- Start with Why. Ask the question why for everything and then try to find out the answer before or while doing anything i.e. any activity or task.
- Focus on cost optimization options. Designing/Implementing a highly resilient architecture in a cost efficient way is the main focus of every organization to move into a Cloud enabled DevOps environment.
- Maintain Simplicity in every design, activity, task plan etc. is the most important aspect of reducing confusion and errors going forward. It is highly useless to make the environment too complex so that it could be difficult to maintain. Hence it is most important to innovate ways to design processes/procedures and plans cost efficient and at the same time make it simple and secure.
- Open Mindset: I being a Linux professional love Linux however Linux should not work of its own i.e. it has to work with other technologies or you can say that it has to coexist with other components of the Infrastructure Architecture hence along with my core Linux skills I have to acquire other relevant skills like Computer Networking, Some level of scripting/coding, knowledge of Databases, Load Balancers, Familiarity with other operating system like Windows, Directory Services and IAM for authentication and authorization etc. Hence once should keep his/her mind open to grab those other skills. You are not required to be an expert on all of them, however you should have a broad overview about the tools/technologies/skills. Yes, some of them you may need to master if that falls under the essential requirement for your work. You have to use your judgement to decide on that.
Conclusion: It is not difficult to get into this transformation journey. You just need some motivation, mindset change and some extra efforts to start the journey. Most of the relevant base skills you already have and you just need to add a few extra and re-structure and integrate it into the new environment. If your current environment does not support the change or it does not provide any opportunity of implementation of the newer skills, you can always try to figure out other options for implementation. You can even simulate/emulate your current work environment and re-create it in your personal lab environment for learning purposes. Just do not use any proprietary or any kind intellectual property information from your office or work in your lab environment. You can use dummy names etc.
I believe it's sufficient for now hence ending the Part 1 of the article at this point. In my next article i.e. Part 2, I will discuss the practical approach to be followed to get into the realty….Stay Tuned for the same.
Thank You For Reading.
Doubling Profits for service businesses by fixing Profit Leaks in Sales, Teams and Leadership | $1 Billion+ in Deals Closed | Speaker
4yWow ❤️ This article is written with lots of passion and experience faced at ground levels. It is really good to know the difficulties people experience in adapting to new technologies and the reasons there of. True that Upgrading, upskilling is very important to be relavent in the market, but finally it comes to the mindset for the change to first happen within before embracing the new technology. Was a good article, though long, it engages well!!! ❤️
IT Program Manager at Tech Mahindra
4yGood article.
Multi-Cloud Expert | Enterprise Architect | O365 specialist
4yVery detailed article Bibek Chatterjee . It gives much needed insight in the technical and behavioral skills required to transition to DevOps! Thanks for sharing..