Devops a methodology

DevOps is a set of practices that emphasize the collaboration and communication of both software Developers and IT operationprofessionals while automating the process of software delivery and infrastructure changes, which aims at establishing a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably.

"which ultimately means building digital pipelines that take code from a developer’s laptop all the way to revenue generating prod awesomeness"


some myth to burst 



Myth1 - DevOps replace Agile
DevOps is a next step of agile
DevOps principles and practices are compatible with agile
agile is an enabler of DevOps
not a replacement, but is a logical continuation
a 'deployable piece' of code rather than a 'potentially ship-able piece' of code after each sprint

Myth2 - its "All Dev & NO Ops"
the nature of IT Ops work may change.
ops collaborates far earlier in the software life cycle with Devs.
Devs continues to work with Ops long after the code is in prod.

Myth3 - DevOps is just automation
it requires automation for sure.. But thats not all.. its much beyond that..

Myth4 - Devops is a Tool/Product
its rather a combination of tools
we don't buy DevOps.. instead we do DevOps


In an organisation where everything gets automated for seamless delivery the generic logical flow will be:
  1. Developers develop the code and the source code is managed by Version Control System tool like Gitthen developers send this code to git repository and any changes made in the code is committed to this repository.
  2. Then Jenkins pull this code from the repository using the git plugin and build it using tools like Ant or Maven.
  3. Configuration management tool like Ansible/Puppet deploys this code & provision testing env. and then jenkins releases this code on the test environment on which testing is done using tools like selenium
  4. Once the code is tested, pipelines configured using Jenkins send it for deployment on the production server (even production server is provisioned & maintained by tools like Ansible/Puppet)
  5. After deployment it is continuously monitored by tool like Nagios.
  6. Docker containers provide quick environment to test the build features. 
  7. If its a microservice architecture, kubernetes is the best place to deploy your services.



Day to Day activities for a DevOps Professional

 
1. Make sure that the pipeline is running smoothly
 This is one of the most important task of a DevOps engineer to make sure that CI/CD pipeline is intact and fixing any issue or failure with it is the #1 priority for the day. They often need to spend time on troubleshooting, analysing and providing fixes to issues.

2. Interaction with other teams
Co-ordination and collaboration is the key for DevOps professional to be successful and hence daily integration with Dev and QA team, Program management, IT is always required.

3. Work on Automation Backlog
Automation is soul of DevOps so DevOps engineering need to plan it out and I can see DevOps engineer spending lots of time behind the keyboard working on Automating stuff on daily basis.

4. Infrastructure Management
DevOps engineer are also responsible for maintaining and managing the infrastructure required for CI/CD pipeline and making sure that its up and running and being used optimally is also part of their daily schedule. Working on Backup, High Availability, New Platform setup etc.

5. Dealing with Legacy stuff
Not everyone is lucky to work on latest and newest things and DevOps engineers are no exception hence they also need to spend time on legacy i.e. in terms of supporting it or migrating to the latest.

6. Exploration
DevOps leverage a lot from the various tools which are available, there are many options as open source so team need to regularly check on this to make sure the adoptions as required, this is something which also require some effort not on daily but regular basis. What are open source options available to keep the cost at minimum?

7. Removing bottleneck
DevOps primary purpose is to identify the bottlenecks / Manual handshakes and work with everyone involved (Dev / QA and all other stakeholder) to remove them so team spend good amount of time in finding such things and build the Automation Backlog using this.

8. Documentation
Though Agile / DevOps stresses less on the documentation, it is still the important one which DevOps engineer does on daily basis, Be it Server Information, Daily Week charted, Scrum / Kanban board or Simple steps to configure / backup or modify the infrastructure, you need to spent good amount of time in coming up these artifacts.

9. Training and Self Development
Self leaning and Training is very useful in getting better understanding and many organisations encourage their employee to take the time out and do some of these and same holds true for DevOps folks as well, So learn something new everyday.

10. Continuous Improvement as Practice
Last but not least, It’s up to the DevOps folks to build awareness on the potential of CI/CD and DevOps practices and building a culture of leveraging it for doing things better, reducing re-work, increasing the productivity and optimising the use of existing resources

Five projects that can help you learn DevOps


1. Continuous Integration/Delivery (CI/CD) Pipeline Setup: Create a CI/CD pipeline using tools like Jenkins, GitLab CI/CD, or GitHub Actions. Automate the build, test, and deployment processes for a simple web application or any other software project.

2. Infrastructure as Code (IaC): Learn to provision and manage infrastructure using tools like Terraform or AWS CloudFormation. Create scripts to deploy and configure resources in cloud environments like AWS, Azure, or Google Cloud.

3. Containerization with Docker: Practice creating Docker containers for various applications. Learn how to build, run, and manage containers. Experiment with Docker Compose for managing multi-container applications.

4. Monitoring and Logging: Set up monitoring and logging solutions using tools like Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), or Splunk. Create dashboards and alerts to monitor system health and track application logs.

5. Configuration Management: Use tools like Ansible, Puppet, or Chef to automate configuration management tasks across multiple servers or instances. Write playbooks or manifests to define the desired state of the infrastructure.




Start with small projects, gradually increasing complexity as you become more comfortable with the tools and concepts. Remember, hands-on practice and experimentation are key to mastering DevOps!

--

4 comments:

Anonymous said...

great stuff to read

un known said...

I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously in their life, he/she can earn his living by doing blogging.thank you for thizs article. devops online training

for. said...

Great Article Cloud Computing Projects

Networking Projects

Final Year Projects for CSE

JavaScript Training in Chennai

JavaScript Training in Chennai

The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training

Python said...

Thank you for sharing with us..
DevOps Online Training

Post a Comment