DEVOPS DAY 1
What we’ll cover?
What is DevOps?
Where did DevOps come from?
What problems led to the creation of DevOps?
How DevOps different from traditional IT and Agile?
7 signs that shows you need DevOps
DevOps stages and tools
Roles, Responsibility and skills of a DevOps engineer
Future of DevOps
Q&A
What is DevOps?
* DevOps is a software development approach with the help of which you can develop superior quality software quickly and with more reliability. It consists of various stages such as continuous development, continuous integration, continuous testing, continuous deployment, and continuous monitoring.
* The term DevOps is a combination of two words namely Development and Operations. DevOps is a practice that allows a single team to manage the entire application development life cycle, that is, development, testing, deployment, and monitoring.
* The ultimate goal of DevOps is to decrease the duration of the system’s development life cycle while delivering features, fixes, and updates frequently in close synchronization with business objectives.
Where did DevOps come from?
* There are tons of stories about the DevOps origins, but it is not created out of the whole cloth. Its seeds were planted many years ago and recently nurtured by expert IT professionals in several disciplines. Two primary ancestors of DevOps are given below:
* ESM (Enterprise Systems Management): People involved in the initial phases of DevOps are system administrators. These experts brought the key ESM practices to DevOps like configuration management, automated provisioning, system monitoring, and the toolchain approach, etc.
* Agile Development: DevOps can be considered as an outgrowth of the agile. It is simply extending the Agile principles beyond boundaries of the code to the entire delivered services.
“When you are going agile without DevOps, it is like racing with a tractor instead of a car. You can do laps, but it will not move faster, and ultimately you are going to waste a lot of fuel without having any fun.”
Evolution of DevOps
The concept of DevOps started with the incubation of the first computer program code, written using Fortran in the year 1957. This created one of the first ‘developer’ jobs. In 1967, with the launch of ARPANET, (the network that became the basis for the Internet) a network of engineering jobs and network operations centers were created. Fast forward to 2003, Google hires Ben Treynor to lead the first set of “site reliability engineers” to run a production environment that was separate from the development environment. The team was responsible for maintaining a high uptime (99.97%) while working with the developers to ensure that operations ran smoothly for their customers. Just a few years down the lane, in 2009 Flickr combines “Dev” and “Ops” in an attempt to solve the ‘finger pointing’ problem between the developers and the operations team. Enter John Allspaw and Paul Hammond with the methodology for deploying ‘devs’ and ‘ops’ (DevOps) in cooperation, publicly for the first time. The solution was proposed at an O’Reilly Velocity Conference where the two suggested integrating development and operations into an automated infrastructure.
In 2009 again, a Belgium based engineer named Patrick Debois organizes a small conference on “agile system administration”. As a mean to advertise for his conference on Twitter, he created a shortened hashtag “DevOps” from development and operations, thus giving birth to the term “DevOps”. Today, DevOps Day is a global movement where developers and operations professionals from across the world get together to discuss about automation, testing, security and organizational culture to avoid the friction between dev and ops.
Modern day and age (2017) – As artificial intelligence permeates almost each and every aspect of our lives, we can witness signs of DevOps further evolving and maturing with the mantra to “automate, automate and automate”.
What problems led to the creation of DevOps?
Watch this video link : https://www.youtube.com/watch?v=mBBgRdlC4sc&t=50s
How is DevOps different from Traditional IT?
Traditional IT | DevOps |
---|---|
Once the order for new servers is placed, the development team starts working on testing. The development team have to continue with heavy paperwork as required by enterprises to deploy the infrastructure. | Once the order for new servers is placed, the development team and operations team start the paperwork to set up new servers that result in better visibility of infrastructure equipment. |
Projections about failover, data center locations, redundancy, and storage requirements are not clear as no inputs are available from the development team even if they have the depth knowledge of the application. | Projections about failover, data center locations, redundancy, and storage requirements are 100 percent clear because of accurate inputs given from the development team. |
In old software development processes, the operations team has no idea of the progress of the development team. Operation team has to prepare a monitoring plan as per their own understanding. | In DevOps, the operations team have a complete idea of the progress of development. Operations team and development team work together to develop a monitoring plan that caters to the current business, and IT needs |
Before go-live, the load testing may crash the application, and the release may get delayed. It affects the overall cost of the project and project delivery deadline. | Before go-live, the load testing makes the application a little slow. The development team quickly fixes bottlenecks, and the application is released on time. |
How is DevOps different from Agile?
Agile | DevOps |
---|---|
Emphasize breaking down barriers between developers and management. | DevOps is about software deployment and operation teams. |
Addresses gap between customer requirements and development teams. | Addresses the gap between development and Operation team |
Focuses more on functional and non-functional readiness | It focuses operational and business readiness. |
Agile development pertains mainly to the way development is thought out by the company. | DevOps emphases on deploying software in the most reliable and safest ways which aren't necessarily always the fastest. |
Agile development puts a huge emphasis on training all team members to have varieties of similar and equal skills. So that, when something goes wrong, any team member can get assistance from any member in the absence of the team leader. | DevOps, likes to divide and conquer, spreading the skill set between the development and operation teams. It also maintains consistent communication. |
Agile development manages on "sprints. It means that the time-table is much shorter (less than a month) and several features are to be produced and released in that period. | DevOps strives for consolidated deadlines and benchmarks with major releases, rather than smaller and more frequent ones |
7 Signs that Show You Need DevOps
Developers and Operations engineers are two different organizational teams, and if these teams are found to be on the wrong track that it signifies that you need DevOps.
seven signs that can help you in getting the answer whether you need DevOps or not:
* The development team is not able to detect software defects at the early age of its development
* Agile methods are used to speed up the software development process, but as soon as the application goes to production department all methods become ineffective
* Testing and development team members are not able to access resources timely and so the development process delays
* You are not able to identify the exact problems of development, testing, and production department
* Simple human errors are often creating hurdles during the development and deployment process.
* Once the app is in production, developers think that their job is over.
* At the time of the problem, both development and operation teams start blaming each other.
What are the Features of DevOps Implementation?
“DevOps is not a goal but a never-ending process of continual improvement.”
DevOps offer continuous integration and continuous delivery. It makes the product delivery cycle quicker, and enterprises become able to launch the software timely without compromising its quality.
Following are the factors that will improve as a result of DevOps implementation:
Predictability: DevOps decreases the failure rate of new product releases.
Maintainability: The process improves the overall recovery rate at the time of the release event.
Improved Quality: DevOps improves the quality of product development by incorporating infrastructure issues.
Lower Risk: Security aspects are incorporated in SDLC, and the number of defects gets decreased across the product
Cost Efficient: Cost efficiency is improved due to DevOps that is always an aspiration of every business organization.
Stability: DevOps implementation offers a stable and secure operational state.
Streamlined Delivery Process: As DevOps provides streamlined software delivery, marketing effort is reduced up to 50%. It happens due to the mobile application and digital platform.
“DevOps is truly not just the unicorns of big IT hubs like Amazon, Google, Facebook, etc. but it can be adopted by almost any organization today instead of their sizes.”
DevOps Stages and Tools
DevOps have various stages such as continuous development, continuous integration, continuous testing, continuous deployment, and continuous monitoring constitute the DevOps Life cycle.
Continuous Development Tools Used: Git, SVN, Mercurial, CVS
This is the phase that involves ‘planning‘ and ‘coding‘ of the software. You decide the project vision during the planning phase and the developers begin developing the code for the application.
There are no DevOps tools that are required for planning, but there are number of tools for maintaining the code.
The code can be in any language, but you maintain it by using Version Control tools. This process of maintaining the code is known as Source Code Management.
After the code is developed, then you move to the Continuous Integration phase.
Continuous IntegrationTools: Jenkins, TeamCity, Travis
Process Flow:
This stage is the core of the entire DevOps life cycle. It is a practice in which the developers require to commit changes to the source code more frequently. This may be either on a daily or weekly basis.
You then build every commit and this allows early detection of problems if they are present. Building code not only involves compilation but it also includes code review, unit testing, integration testing, and packaging.
The code supporting new functionality is continuously integrated with the existing code. Since there is a continuous development of software, you need to integrate the updated code continuously as well as smoothly with the systems to reflect changes to the end-users.
In this stage, you use the tools for building/ packaging the code into an executable file so that you can forward it to the next phases.
Process Flow:
This is the stage where you test the developed software continuously for bugs using automation testing tools. These tools allow QAs to test multiple code-bases thoroughly in parallel to ensure that there are no flaws in the functionality. In this phase, you can use Docker Containers for simulating the test environment.
Selenium is used for automation testing, and the reports are generated by TestNG. You can automate this entire testing phase with the help of a Continuous Integration tool called Jenkins.
Suppose you have written a selenium code in Java to test your application. Now you can build this code using ant or maven. Once you build the code, you then test it for User Acceptance Testing (UAT). This entire process can be automated using Jenkins.
Continuous DeploymentTools Used:Configuration Management – Chef, Puppet, Ansible Containerization – Docker, Vagrant
Process Flow:
This is the stage where you deploy the code on the production servers. It is also important to ensure that you correctly deploy the code on all the servers. Before moving on, let us try to understand a few things about Configuration management and Containerization tools. These set of tools here help in achieving Continuous Deployment (CD).
Configuration Management is the act of establishing and maintaining consistency in an application’s functional requirements and performance. Let me put this in easier words, it is the act of releasing deployments to servers, scheduling updates on all servers and most importantly keeping the configurations consistent across all the servers.
Containerization tools also play an equally crucial role in the deployment stage. The containerization tools help produce consistency across Development, Test, Staging as well as Production environments. Besides this, they also help in scaling-up and scaling-down of instances swiftly.
Continuous MonitoringTools Used: Splunk, ELK Stack, Nagios, New Relic
Process Flow:
This is a very critical stage of the DevOps life cycle where you continuously monitor the performance of your application. Here you record vital information about the use of the software. You then process this information to check the proper functionality of the application. You resolve system errors such as low memory, server not reachable, etc in this phase.
This practice involves the participation of the Operations team who will monitor the user activity for bugs or any improper behavior of the system. The Continuous Monitoring tools help you monitor the application’s performance and the servers closely and also enable you to check the health of the system proactively.
DevOps Tools
Who is a DevOps Engineer?
Roles, Responsibilities, and Skills of a DevOps Engineer
DevOps engineers work full-time. They are responsible for the production and ongoing maintenance of a software application's platform.
Following are some expected Roles, Responsibilities, and Skills that is expected from DevOps engineer:
Able to perform system troubleshooting and problem-solving across platform and application domains.
Manage project effectively through open, standards-based platforms
Increase project visibility thought traceability
Improve quality and reduce development cost with collaboration
Analyze, design and evaluate automation scripts & systems
Ensuring critical resolution of system issues by using the best cloud security solutions services
DevOps engineer should have the soft skill of problem-solver and quick-learner
Organizations using DevOps processes
What is the future of DevOps?
They are lots of Change likely to happens in the DevOps world some most prominent are:
Organizations are shifting in their needs to weeks and months instead of years.
We will see soon that DevOps engineers have more access and control of the end user than any other person in the enterprise.
DevOps is becoming a valued skill for IT people. For example, a survey conducted by Linux hiring found that 25% of respondent's job seeker is DevOps expertise.
DevOps and continuous delivery are here to stay. Therefore companies need to change as they have no choice but to evolve. However, the mainstreaming the notion of DevOps will take 5 to 10 years.
Comments
Post a Comment