Tumgik
Text
CI/CD
Tumblr media
What is CI/CD?
This concept is very hot in the IT industry.Everyone is talking about this new concept.Specially to enable DevOps we are using these concepts.If you want to know about DevOps please read my previous blog post titled DevOps.
Alright we will get into this new concepts.I know many of you questioning what does these terms sounds? Why we need these concepts?Ok..Before understanding these concepts will go back few years back and talk about Waterfall model.The client says that he/she wants you to build a software.In this case definetly  takes time to make the software product.Maybe 6 months or 1 year or some times 5 years.You can't simply ask your client to wait for the final product.Because things may change very fast.Client requirements might change ,there can be mis communication between you and client .So we need continuous feedback from the client. That's why the different approach called Agile took in to place.In agile you are responsible to give your client a ready product every 2-3 weeks.Not the entire product but the parts of it.Lets say if you have 10 features ,you can give 1 feature in 2-3 weeks.That will be amazing at the client side and can get continuous feedback from client.Cool..! Does the problem solved yet????
Ok..!Lets assume that you are working on a project and the project has set of modules.You have multiple developers to work on it.You have given one module to each developer to work on it.So the developer write the code and test by his/her self and verify whether the system works on his/her pc.But you missed one thing? Can you guys just guess it???? Yes you missed one thing ,that is integration testing.All the works done by the developers should be integrated in some where.Then the Operation Team take the project and deploy it on the server.But who is responsible for integrating the whole the modules??? That's where we have automation tools.Assume we planned to work for one week and every friday, we integrate the project.Then there will be an automation test proceeded. What if the automation test goes wrong due to the bugs??? Oh no, you don not want to spend your weekend staying in office and fixing it.So that what you can do to solve this problem is Continuous Integration(CI).As name suggest what if you integrate the modules in daily basis? Yes in a day you may doing 5-6 commits.After doing the changes you think its perfectly working and you just submit it to the central repository.Lets say if there are 5 developers, all of these people will commit their works to the repository.The thing automation tool does for us is every time when you commit the code there will be an automation test performed.That means in simple terms, you write the code the test it with the unit testing.Once unit test finished you commit the code and the the automation test will be done.So at the end of every commit we have ready project.Wow that's awesome.You have confidence that the entire software project is working.That is the beauty of CI.
Then what is Continuous Delivery means??
People often mix CI and CD terms together.But they are not same ,they are different.Now you know whats CI.In short terms you have your project ,you are committing very often and automation tests will be held and ready for delivery.You can simply show the working model to the client in mock up server.It not only gives the confidence to you but also make clients happy.Also you can check the performance of the system.This is called as continuous delivery.You are not deploying the software into the production server but you are keep it ready for the deployment in an any given point.Delivery is making the software available for the deployment.Now i hope you guys got an idea of these terms.
Ok, i can hear some of you asking your self then what does Continuous Deployment means?
Here is my answer.basically continuous deployment is bit scary.Ah...!Because when you commit your code and after the automation test the code will be tightly deployed to the production server.Different companies following different approaches .Some company goes for only Continuous Integration approach.Some goes for Continuous Delivery and some Continuous Deployment.Example people who working in micro services go for Continuous Deployment.Face book is one of the famous example for it.Is that all??
No! Initially you have to make the team to get ready to move on to these approaches and need a pipeline so that every step can happen in the sequence manner.There are different tools available for these approaches.Jenkins is the most commonly use tool for this. Ok, guys finally i hope this post may given you an overall idea about the new terms Continuous Integration,Continuous Delivery and Continuous Deployment.See you soon in next post.
0 notes
Text
Maven
What is Maven?
Maven a java based build tool something similar to existing ANT tool.It is under the license of Apache.When you want to work with a new project you need some 3rd party libraries.Example if you want to create a project where you want to work with MySQL you need a dependency called MySQL connector.If you working with spring you need lots of dependencies minimum 10 to 12.There-for while you working with the project you need to download all the dependencies by yourself.But that's not a good practice as it would be difficult in future if you need to update those dependencies.To solve that problem Maven provides a framework with which you can automatically provide plugins and dependencies for maintaining build process across the projects.
Features of Maven
Model based
Release management
Distribution publication
Auto parent versioning
Consistence build process
Dependency management
Plugin Development
Maven uses the concept of POM(Project Object Model).POM is a fundamental unit of work in maven.It is a XML file that contains information about the project and configuration details used by maven to build the project.This information describes project in all and this information contains name,version,artifact type,source code location,dependencies .It also retains the plugin information and profiles.
Maven's Objectives
Making the build process easy
Providing uniform build system
Providing quality project information
Providing guidelines for the best practices development
Allowing transparent migration to new features.
How to install Maven?
Before installing maven make sure Java JDK is installed on your windows operating system and 'JAVA_HOME' variable is added to the windows environment variable.
Step 1 :
System -> Open Advanced System Settings ->Press Environment variable button ->Set up JAVA_HOME user variable and copy the path of JDK folder and paste to the value ->Copy the path of JDK bin folder and paste it to the system variable 'path' value
Step 2 :
Open the browser and search for download maven.
Click https:/maven.apache.org/download.cgi
Download apache-maven-3.5.3-bin.zip
Extract the downloade zip file
Step 3 :
Once again go to  System -> Open Advanced System Settings ->Press Environment variable button ->Create new user variable and give 'M2_HOME' as the variable name and copy the path of the extracted folder then paste as its value.Create a new system variable and paste the bin folder path as its value.
Step 4 :
Open the command prompt
Type mvn -version and press enter
It will give the version of the maven we installed on the system
0 notes
Text
DevOps
Hi guys! After months, i am here with the new topic which is a new trend in IT industries.Here i will explain what's that magical word in the simple terms.
Tumblr media
'DevOps' is a buzzword which we are hearing about it in everywhere such as journals,blogs also there are conferences decade about this new term .This term came out about before 4-5 years ago as a moment to help the development team and operation team work better together in software development process.
DevOps is primarily about culture.
What does this culture means?
All participants such as Business people,Product Owner,Development Team,Testers,Operation Team   collaborate and consistently communicate each others and produce the software in a better way.These all cross-functional people work with the purpose and have shared goal which is to
'Produce Rapidly Stable High quality Software from concept to Customer'
How was Software developed some time back?
In tradition software development process, Business Analysts,Product Owners have an idea about the features and functionalities that can be take into the end users.They share their knowledge and information to the Development team.The Developers design and code the software and pass it to the QA team.Once the QA team tested the software they will handover the software to the Operation team who take responsibility to bring the system in to live.Though they all working on the same goal there is wall between each of them.This is referred as Wall of confusion.It means all of these separate set of people work silos.
In 2000 significant Agile Development method introduced in software development process.In Agile methodology we broke the wall between the Business analyst,Development team and the QA teams.It helped to produce the software in an iterative manner.But still the wall of confusion is exists between the Development Team and Operation Team.This is where DevOps solves the problem by breaking the wall and combining and making all to work together.
2 notes · View notes