DevOps session 13: Automate git SETUP using bash scripting.

Image
  Bash scripting: A Bash Shell Script is a plain text file containing a set of various commands that we usually type in the command line. It is used to automate repetitive tasks on Linux filesystem. It might include a set of commands, or a single command. For example ,to install GIT we need to update the packages, then install git and check if installation is done using Linux commands. We can write all the command in a .sh file and we can execute the file to do all the steps mentioned above. Lets start with example from hello-world. 1.Open terminal and check the root of the bash using below command. CMD: which bash you can see path like  /usr/bin/bash or /bin/bash . 2.Create a hello-world.sh file and paste the below lines. CMD: nano hello-world.sh You can see editor ,add below lines #!/bin/bash # declare MSG variable MSG="Hello World" # print variable on a screen echo $MSG To save the file use CTRL+X, then CTRL+Y and press ENTER 3. To execute the file we need to ad...

DevOps session 1: Evolution of Software development




Evolution of Software development 


1.Traditional waterfall model

This model is a traditional methodology and a first-of-its-kind software development model that follows a linear software development approach. Each phase in the waterfall model is completed before it moves on to the next phase. In the sequential type of software development, each phase is distinct and has to be very clear from the very beginning. The phases begin with requirement gathering followed by analysis, design, coding, testing, and deployment.

Waterfall model is helpful and appropriate for situations such as projects having the following criteria:

  • Requirements of the project are fixed, and clear.
  • Documentation is clear
  • The definition of the product is stable.
  • Technology is not dynamic and well understood.
  • No hazy requirements.
  • Enough resources are available with the required expertise to support the product.
  • The key should require the development side instead of the financial
  • The project is a short

Disadvantages:

  • Making changes in middle of project will be difficult.
  • Testing will be delayed because it depends on development and bug fixes, retesting multiple times.
  • Clients involvement is very less.
  • High risk when a  failure occurs
  • Integration will be at the end.
  • Not suitable for complex projects.

2.Agile Development

Agile is a continuous integration and deployment approach which is iterative in nature. It derives its principles from Lean methodology. Some of the agile approaches can be attributed to the following concepts:

  • Frequent analysis and implementation of changes.
  • Team-oriented leadership or precisely ownership of tasks, by each member of the team.
  • Is usually very self-organized and accountable for its deliverables.
  • Agile seamlessly aligns organizational and customer expectations.
Advantages:
  • Agile model is more reliable than Waterfall
  • Agile allows changes at any stage of the software development process.
  • Agile testing can be made at any stage. Testing and programming can go simultaneously.
  • The focus of Agile is to provide customer satisfaction by allowing customer participation in the project.
  • Agile model is a highly cooperative software development process.
  • Agile model supports the projects in which requirements evolve and need changes
Disadvantages:
  • In Agile, documentation happens throughout a project, and often “just in time” for building the output, not at the beginning
  • It’s challenging to predict efforts like cost, time and resources required at the beginning of a project
  • There is never a clear vision of what the “final product” looks like because adding and  changing the features continuously as per client feedbacks.

3.Devops approach

DevOps emphasizes the constant collaboration and communication between the teams to ensure a seamless development process. The various phases in the DevOps life cycle are focused on constantly monitoring, operating, implementing, and responding to the end-user feedback to ensure continuous integration and deployment.

Following are the phases in the DevOps life cycle:

  • Continuous development - this phase consists of planning and coding activities. Planning involves the overall vision of the project and lists the activities to be performed as per the plan of action.
  • Continuous integration - this phase comprises of integrating code changes as per any added functionality. This phase helps detect bugs at the earliest, with the help of unit testing tools, code review, integration testing, and so on.
  • Continuous testing - a phase that involves continuous testing of the developed software. The testing is usually carried out with the help of automation tools to save time and effort.
  • Continuous feedback - in a beta testing environment, the users of the application provide their valuable feedback on the performance of the application, followed by implementation of those by the developers.
  • Continuous monitoring - Monitoring the performance of the application is a crucial step towards building efficiently performing software. Often issues like memory leakage, server not found, and more are a common phenomenon, which needs to be dealt with regularly.
  • Continuous deployment - each time a change has to take place, the software needs to be updated to incorporate the newly added functionality. Once a code is released, the same gets uploaded on the server, which takes care of the updates on individual devices. The continuous deployment process is accomplished with the help of the Configuration Management process which uses containerization tools to implement updates.
  • Continuous operations - this phase is about maintaining consistency in updating the changes with every new release
Advantages:
  • Features will be developed ,tested and delivered faster.
  •  Agile principles and modular programming allow quicker solutions to forthcoming errors and risks.
  • DevOps helps induce teamwork that enhances communication and collaboration among team members.
  • Increased efficiencies and proper use of development acceleration tools allow automation and a good flow of Continuous Integration/Continuous Delivery (CI/CD) pipeline.
  • Feature will be available to the end user with in less time with Agile and DevOps approach. 


Comments

Popular posts from this blog

DevOps session 10: Git basic commands for daily use

DevOps session 7: Source Code Management/ Version control systems (GIT) || Setup Git on ubuntu

DevOps session 11: Git branching & best practices