Showing posts with label DevOps. Show all posts
Showing posts with label DevOps. Show all posts

Friday, March 1, 2019

Why should I move from Dev to DevOps?

In this post i am sharing Why should i move from Dev to DevOps. DevOps is short for Development (Dev) and Operations (Ops), which is basically why you shoud move forward to become a DevOps .Of course, this is not to say that’s all about the money. It simply shows that DevOps are few and that DevOps skills are very valued in the job market.

The lack of DevOps is hardly surprising since to become a DevOps, one should have not only technical but also strong managerial skills.

Becoming a DevOps is a huge step forward professionally for most developers. If you are a strictly technical person, don't’ do it. You won’t be very satisfied with the cultural and managerial aspects of DevOps, I suppose.

For the record, it is much easier to jump on the consulting bandwagon as a DevOps. Many organizations (SMEs) may not need to hire DevOps engineers full-time, yet they need DevOps as well. Here is when DevOps consulting comes into a picture.DevOps is the future of how software is developed and processes in IT are managed. DevOps is tightly connected with cloud and cloud computing, process automation, CI/CD, containers, microservices, and so on.


You are better off learning what DevOps is now. Maybe you will need to become one.

The main benefits of DevOps

(a) Speed: With DevOps comes high velocity. So the developers can innovate faster and solve queries. Till date, the results have been precise and optimum.

(b) Delivery: The frequency and pace of releases are faster. This helps in quick product improvement. Fixings bugs might not be easy, but one can certainly fix it in less time with rapid delivery. On top of all this, DevOps offers continuous integration and continuous delivery to automate the software release process.

(c) Reliability: DevOps helps in maintaining the quality of application updates and infrastructure changes. So, at a higher velocity, the delivery is of the same quality. This is why DevOps is quite reliable.

(d) Bigger Scale and Collaboration: DevOps is adopted by IT giants. This means that it is capable of operating and managing big infrastructures with reduced risk. Under the DevOps cultural model, one can build more effective teams emphasizing on values like ownership and accountability. Team collaboration is also easier with DevOps.

(e) Security: Moving quickly is good, but one should also be able to retain control and preserve compliance, while in quick action. The DevOps model makes sure that one doesn’t give up on any security concerns. DevOps offers features like automated compliance policies, fine-grained controls, and configuration management techniques.

DevOps certainly offers good features, but this is just a generalized approach. So let us move on to specific case studies.

Thursday, February 28, 2019

Why do we need DevOps?

In this post i am sharing  What is DevOps and why do we need DevOps Engineer for IT Industry. DevOps simply enables development and operation teams to work together. It reduces the time that is taken by teams to reflect the changes. DevOps environment can be accomplished via various tools, technologies, and processes. It simply denotes the quick way to develop software with maximum efficiency. The main goal of DevOps is to increase the quality of product to a great extent and to increase the collaboration of Development and Operation team as well so that the workflow within the organization becomes smoother.

Overall, the everyday task of a DevOps architect is to look after every software development process and create an automated, efficient delivery pipeline that helps build software rapidly and effectively. 


The industry today is moving towards automation. We want to get rid of manual work which is prone to errors, inefficient and expensive. This is exactly what DevOps focuses on. With the wide range of tools provided, everything is organized and automated. A small team of skilled employees can take the responsibility which previously required teams of even 100 people! DevOps also brings together the development and operations team under one umbrella. This means, they now share ideas and understand each other's responsibilities better. All this gives better output at a quicker pace with lesser iterations.

That was from the industry perspective. The importance of DevOps on a personal level is also crucial to understand. Having the skills to be a DevOps engineer, makes you indispensable in the long run. You will be filling the shoes of probably 10 other employees who are sticking to the traditional approaches. DevOps culture improves the IT service delivery agility on the basis of: Communication, Collaboration Integration. It is the platform that identifies the relationship between various tools, ideas, and themes of software development and IT operations, using rapid iterations and continuous improvement. 

Thursday, December 20, 2018

What are the Prerequisites to learn DevOps?

In this post you will learn the prerequisites to learn DevOps. DevOps, as you know is Dev+Ops. So, technically you must know how Development and Operations work.

However, if you look at a bigger picture, DevOps is not just automating Ops to help Dev. Its more about adding value to the organization, by means of adopting “DevOps Culture”

DevOps is basically a culture. You can say software engineering culture. Aim or objective of DevOps is unifying software development (Dev) and software operation (Ops). DevOps is a broad area and it involves many tools at different stages/phases. This culture minimizes the gap between developers and business operations by providing collaboration layers to both. Developers in DevOps want continuous innovation and product enrichment whereas Ops department oversees costing and delivery. It is basically a way of implementing the development and operations together. There is a single team that is collaborating with each other at every phase whether it is development, testing, deployment or operations. Prerequisites to learn DevOps involve:



This way, there are certain per-requisites to become a DevOps.

  • Knowing your Tech-stack, be it OS, DB, Middleware etc which includes Linux/Windows, Tomcat/Weblogic, Apache/Nginx etc.
  • Having know-how of Build and Deployment process. What to build, how to build, how to deploy etc.
  • Some knowledge about daily Ops activities such as restarts, maintenance, backups etc
  • From tool/technology point of view, there are no “defined per-requisites”.
  • However, in most of the cases, basic knowledge of Jenkins, Ant/Maven, Java, Shell/Python/Ruby is required and some knowledge about Docker/Cloud (AWS), Chef/Puppet etc is an added plus.
  • Non-technically speaking, you must know how to add value. How to speed up release cycle from Dev to QA to Prod. Yes, this involves automation at each and every level. What you should know is the final goal and how you divide it into pieces is more important. Thats why it is essential to know end-to-end release cycle of you organization which includes personnel from various teams/departments such as Dev, QA, Project Mgmt, Prod Support and many more.
  • Familiarity of concepts like CI, CD, Release Engineering are a pre-requisite. And so, should have experience on tools like Jenkins, Bamboo, CircleCI, etc.


A DevOps person should not only be technical-oriented. As you add more value to organization, you must posses some qualities such as good communication skills, a good vision to plan and execute, leadership qualities and what not.

Tuesday, December 18, 2018

Is DevOps a Good Career?

In this post you will know whether DevOps is good for career or not.It is really depends on what you are passionate about. I would choose passion over all other considerations or else you will burn out and the money won’t help (I’ve been there). Any position you pursue in tech is going to require your complete dedication to achieve success.

However, I think the DevOps area has a lot of growth potential in the future. While I can not speak to your interests I can tell you why I am drawn to the field after being a web based software developer and a data driven research programmer.

I have learned through experience in large and small organizations that if you are operations staff you’d better be automating your job, and if you are a developer you have to face the inevitability of getting down and dirty with operations if you are to stay relevant. Developers who won’t administer/monitor, and admins who won’t develop will increasingly become less and less valuable to organizations needing to stay competitive.

DevOps is exciting because you are always working with and integrating new technologies and solving new challenges. Essentially your job is to find a happy balance between operations and developers. This relationship is delicate and can blow up if not regulated. As a devops specialist your job is to integrate these two different mindsets. This requires that aspects of IT be securely shared so that you don’t have the blame game (which I myself have been a party to). Developers need to continually push code and operations want to keep everything running smoothly. The more integrated the systems and processes in use, the easier it is for each to do their job.

I personally like to think of IT as three separate phases that all contribute to the ultimate success of the enterprise tech ecosystem; packaging, automation, and scaling.

Packaging:

DevOps is great if you like to explore and work with a variety of technologies and processes. I think one of the first things to consider is the packaging of IT that the tech teams use to provide the organizations products and services. The better packaged and more maleable the packaging the easier it is to keep everything standardized and reusable.

If you like playing with configuration management systems (Puppet, Chef, Ansible, etc…) and digging into imaging systems such as Docker you will like DevOps. I would caution that it is VERY important to create highly configurable packaging of the IT systems in use so that they can evolve as the organization’s needs change. This also makes it easier to modify for production, QA, staging, and development environments.



If you think about it, the amount of new technologies and services being released into the market is growing exponentially (especially with the addon potential of all the open source frameworks in existence). In DevOps no technology is off limits and you find yourself continuously working with, integrating, and automating different technologies. As the amount of tech and services grow, so to is the demand for people who can put it all together into golden images (configuration managed images on different environments).

My personal goal is to create machines as machine manageable data objects that are completely hands off on the production and QA environments. The goal is to allow programs written by different teams to efficiently automate as much as possible without needing to login to the machine. To me this is fun, and I think if you like variety and being a middleman (glue) you would like it.

Automation:

Your automation potential is only as good as your ability to package the infrastructure in a form machines can work with effectively. If you come from a development background you most likely have had to deal with brittle environments (at least in testing new technologies, which you should be continuously doing).

The DevOps specialist makes it easy for programmers and operations to automate their jobs so that we don’t have to reinvent the wheel over and over again. Ultimately, if the automation is good enough we can realize a scalable architecture (which is the end goal).

You should like scripting a lot. You don’t need to be the best programmer to accomplish this but the more integrated your approach the easier it will be to build on your previous work (which I like). Automation brings the machines to life and if you like seeing a bunch of moving pieces come together to achieve some measurable outcome you will like this part of the job.

I would recommend that you know at least one glue language; Ruby, Python, Go, etc… The more flexible the language, the better. Although, the beauty of automation is that many different languages can be brought together to create a unified system. If something needs to be built for speed, it’s easy enough to design that part in a language like C or Go while allowing other tasks that need more flexibility to be written in a higher level language. You definitely want to become very good at shell scripting which many times ties everything together.

There are two primary types of automated systems you will be developing; fire and forget scripts, and continuously running daemons (or agents). You should know when to apply each.

I personally can not see automation becoming less in demand in the future. The promise of the cloud is built on automation, and enterprise usage of the cloud is growing rapidly throughout organizations of all sizes and types.

Scaling:

If reusability is a passion of yours, I think you would definitely like DevOps. I believe the biggest factor in the successful tech organizations of the future will be their ability to scale rapidly while being able to deflate when not needed to minimize costs in downtime. Customers want speed. They don’t care about the tech behind the application as long as the application is reliable, zippy, and meets their needs.

If you can create packages of IT that can be easily automated in a portable fashion then I think you will have great prospects in the tech world in the future. Companies like Google and Facebook would never have gotten as popular as they are if they had not learned to scale their IT effectively.

Scalability is not easy to achieve and many would rather not have to worry about it, which explains the growth of scalability as a service offerings. But somebody has to know how. Think about the problems of the future; Data analysis, AI, internet of things, mobile consumption, scalable web driven apps, etc… While all of these tech areas require different skills to develop on their own, each is absolute garbage without the same fundamental building blocks. Want to jump from mobile to AI? DevOps could allow that. Want to play with that new SaaS service that is all the rage these days? DevOps can allow that.

DevOps is about being the glue that holds everything and everyone together, and to me that is what makes it so exciting. The possibilities are limitless and the technologies are always growing and evolving. And if you don’t focus on DevOps, you will still have to manage infrastructure as a developer anyway (even if only for yourself).

When I first started programming I started with a passion for machine learning in C, then over time I started creating Drupal sites for organizations large and small. Over time I felt suffocated by the limited nature of the technologies people expected me to work with day in and day out. It wasn’t that I did not like the technologies, but I felt like I was in single technology hell. And once you gain a lot of experience in a specific technology or system people just expect you to focus on that area; recruiters, managers, developers, everyone… With DevOps variety is part of the job description so if you ever feel trapped by technology and find yourself looking to the stars wondering what the hell did I get myself into, DevOps can free you from that limited mindset.

That is why I got into DevOps. I certainly don’t claim to be the best or the most experienced out there, but I am a heck of a lot happier these days. And I am constantly learning new things that I can apply to any new project, whether it be a new AI platform or a mobile application. I can spread my wings and I believe since you are asking this question, maybe you want to as well.

At the end of the day your happiness and the passion you feel for what you do is all that really matters.

Saturday, December 15, 2018

Top 5 Technologies to learn in 2019

In this post you will know the best programming languages/technologies should learn in 2019 to survive in IT industry with high Package.In present IT,it is very difficult to determine one particular technology as the best among others,because everyday is a evolution in computing and every single paves a way for a new technology.

But,according to the present job scenario and stack overflow popularity,the below technologies have good growing opportunities:

1. Artificial Intelligence:


It covers technologies that are used for prediction purpose.The technology stack of AI constitutes

Machine Learning
Deep Learning
Computer Vision
Human Computer Interaction
Robotics

2. Data Science:

Data Science is all about cleaning,analyzing,organizing,preparing and visualizing the data.



It requires the following things to be included:

Statistics
Machine Learning
Data mining
Data Analytics

3. Big Data and Cloud Computing:


These are another boom areas to be considered as the trending technologies in the present IT sector . It is because of the importance of data in the life of every individual and consistent improvement in social networks and eCommerce traffic.

4. Android Development:



As the internet users are more comfortable with using android apps than websites,the demand of android development becomes very high.The two popular ways of building android apps are through:

Java
Kotlin

5. DevOps:


Devops is the combination of Development and operations team in a software organization,which is advanced version to agile development.


Wednesday, December 5, 2018

What are the daily activities of DevOps Engineer?

In this post you will understand everyday activities of DevOps Engineer. The work of DevOps engineer is the most agile in current organization structure, I tried to put down some of the important day-to-day work items below,

Make sure that the CI/CD 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, which requires to spend time on troubleshooting, analysing and providing fixes to issues. 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. Ex. Working on Backup, High Availability, New Platform setup etc.

Interaction with multiple project teams (Dev and QA team, Program management, IT)for integration

Automate Automate Automate... for manual tasks to remove bottlenecks and dependencies between teams

Dealing with Legacy stuff and work on migration policies

Document everything you can for others to follow and refer to

Continuous Exploration of new tools and how to update current stream/pipeline.



It’s up to the DevOps team in any organization 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. Go and talk to people to build the DevOps and Continuous Improvement culture...

The tasks of the DevOps engineer might vary based on the area which he is focussing on

For infrastructure position - He will have a responsibility to automate the infrastructure provisioning and writing recipes for creating the necessary infrastructure needed for the application teams. He might also help in automating the patching process and also take part in the infrastructure refresh.

For the Build and Deployment Position - He will responsible to creating the delivery pipeline which will help to propagate the code from one environment to another. He will also play a support role in supporting the delivery pipeline and try to integrate more tools into the pipeline

For monitoring position - this corresponds to creating the necessary dashboards for application and infrastructure monitoring and also creating the self heal routines which are necessary to send in the proactive alerts to the necessary consumers.

DevOps Architect/Engineer Is Responsible For-

  • Analyzing, executing, and streamlining DevOps practices
  • Automating processes with the right tools
  • Facilitating development process and operations
  • Establishing a suitable DevOps channel across the organization
  • Setting up a continuous build environment to speed up software development and deployment process
  • Architecting overall, comprehensive, and efficient practices
  • Guiding developers and operation teams in case of an issue

Thursday, November 1, 2018

What is Deployment in DevOps?

In this post you will know the meaning of Deployment in DevOps. Deployment is updating your code on the servers. Servers can range from one to thousands. You need proper tools and strategies to deploy the code to server and refresh the site. To avoid breaking Live website, code is deployed to various stages. Testing-Staging-PreProd-Prod. Testing is where all the devs code are merged and deployed for internal testing. Staging is where client tests it as per the requirements. PreProd is same as Production. To make sure nothing breaks or there is no impact on any other feature.

Best Practice: code deployed to Production should never be rollback or reverted in master branch of git. That's why we have so many stages in deployment. You can automate this with CI/CD.. Learn more on CI/CD and also Docker. In Docker you deploy an image with os and code. It's a state of your application. You don't just deploy code folder but whole system at a stable state with everything working.




The main benefits for continuous deployment appear as a result of reducing lead time, the time elapsed between the identification of a requirement and its fulfillment, with two main consequences:

1. For each feature, after it is developed, an earlier return on investment, which lessen the need for large capital investments

2. Earlier evaluations from users on each new feature, which allows for A/B testing to establish which of several possible implementation is preferred by clients

CI and the two CDs can provide an outstanding environment for the entire DevOps team, while the benefits greatly outweigh the challenges, and high quality can be achieved even for very large capacity and scale systems, while delivering value and innovation very fast in same time.

What is Blue/Green Deployment?

In this post you will learn about Blue-Green Deployment. This is a concept of dividing your production environment to two halves. One will have the current version of the product and serves customer requests. The other half will be upgraded to the next release and will be tested. There will not be any downtime and the risk of deployment failure is absolutely minute. It is one of the major causes of headaches for DevOps and the rest of the project team alike. Especially for large enterprise products, continuous delivery is required and here's one of the ways how to do it right.Blue-Green deployment means to have two identical environments at given time, one of which is active(blue), other as idle(green). The updates are pushed to idle environment and are tested. Then traffic is switched to idle environment(green). Hence idle(green then) becomes active(blue now) now and the previously active (blue then) becomes idle(green now).
If things go wrong (even after thorough testing!) then traffic is switched back to previously active environment.



Rolling deployments, traffic switch-over is nicely handled by terraform with its ability to create immutable infrastructure. While switching over, it waits for current requests to be serviced and send all new requests to newly activated environment, hence zero downtime.

Benefits

  • You can test your production without pausing the production
  • This way offers a rapid way to rollback


Drawbacks

  1. The project becomes more complex (which is solved by automating the workflow)
  2. The database might be incompatible (which is solved by database refactoring techniques)



Wednesday, October 24, 2018

Best Tools in DevOps

In this post you will know the most popular tools in DevOps. The DevOps tools can be categorized in five groups depending on its purpose in the particular stage of DevOps lifecycle.

The following are the DevOps tools can be categorized in five groups depending on its purpose in the particular stage of DevOps life cycel.


 1 .Continuous Integration: Jenkins, Travis, TeamCity
 2. Configuration Management: Puppet, Chef, Ansible, CFengine
 3. Continuous Inspection: Sonarqube, HP Fortify, Coverity
 4. Containerization: Vagrant, Docker
 5. Virtualization: Amazon EC2, VMWare, Microsoft Hyper-V


1.)Continuous Integration Tools

Jenkins

Jenkins is an open-source continuous integration server written in Java. It helps developers in building and testing software continuously and monitors externally-run jobs such as cron jobs and procmail jobs.

Travis

Travis CI is an open-source hosted, distributed continuous integration service used to build and test projects hosted at GitHub.

2.)Configuration Management Tools

Puppet Labs
 Puppet is arguably the most well-established of these configuration management platforms. It tends to be favored by organizations whose DevOps push was driven by ops people who like the simplicity of its declarative programming language and gentler learning curve

Chef

Chef tends to offer a greater degree of flexibility than Puppet for those who have the skills to program infrastructure via this Ruby-driven platform.



3.)Continuous Inspection Tools

Sonarqube

SonarQube is the central place to manage code quality. It offers visual reporting on and across projects and enabling to replay the past code to analyze metrics evolution.

HP Fortify

HP Fortify Static Code Analyzer (SCA) helps verify that your software is trustworthy, reduce costs, increase productivity and implement secure coding best practices.

4.)Containerization Tools

Docker

DevOps teams use this containerization tool as an open platform that makes it easier for developers and sysadmins to push code from development to production without using different, clashing environments during the entire application lifecycle.

Vagrant

Vagrant is an open source product described as Virtual Machine (VM) manager. It is a wonderful tool that allows you to script and package the VM config and the provisioning setup with multiple VMs each with their own configurations managed with puppet and/or chef.

5.)Virtualization Tools

Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2) provides virtualization using scalable computing capacity in the Amazon Web Services (AWS) cloud. Amazon EC2 decreases capital expenditure by eliminating the investment in hardware upfront cost.

VMWare

VMWare provides virtualization through a gamut of products. It’s product vSphere virtualizes your server resources and provide critical capacity and performance management capabilities.

High Paying Jobs after Learning Python

Everyone knows Python is one of the most demand Programming Language. It is a computer programming language to build web applications and sc...