Tuesday, November 1, 2016

Jenkins Interview Question

1) What is Jenkins?

Jenkins is an open source continuous integration tool written in Java. It keeps a track on version control system and to initiate and monitor a build system if changes occur.

2) What is the difference between Maven, Ant and Jenkins?

The most basic difference is:
Maven and Ant are Build Technologies whereas Jenkins is a continuous integration tool.

3) Which SCM tools does Jenkins support?

Jenkins supports the following SCM tools:
  • AccuRev
  • CVS
  • Subversion
  • Git
  • Mercurial
  • Perforce
  • Clearcase
  • RTC

4) What is continuous integration in Jenkins?

In software development, multiple developers or teams work on different segments of same web application so you have to perform integration test by integrating all modules. In order to do that an automated process for each piece of code is performed on daily bases so that all your codes get tested. This process is known as continuous integration.

5) What is the relation between Hudson and Jenkins?

Hudson was the earlier name and version of current Jenkins. After some issue, the project name was changed from Hudson to Jenkins.

6) What is the requirement for using Jenkins?

For using Jenkins, you have to need a source code repository which is accessible. For example, a Git repository and a working build script, e.g., a Maven script, checked into the repository.

7) What are the advantages of Jenkins?

Advantage of Jenkins includes:
  • Bugs tracking are easy at early stage in development environment.
  • Provides a large numbers of plugin support.
  • Iterative improvement to the code.
  • Build failures are cached at integration stage.
  • For each code commit changes an automatic build report notification generates.
  • To notify developers about build report success or failure, it is integrated with LDAP mail server.
  • Achieves continuous integration agile development and test driven development.
  • With simple steps, maven release project is automated.

8) How to make sure that your project builds doesn?t break in Jenkins?

You must follow these steps to make sure that your project builds doesn?t break in Jenkins:
  • First, perform successful clean install on your local machine with all unit tests.
  • Check all your code changes.
  • Synchronize with repository to make sure that all required config and POM changes and any difference is checked into the repository.

9) How can you move or copy Jenkins from one server to another?

Follow these steps to move or copy Jenkins from one server to another:
  • First, copy the related job directory and slide a job from one installation of Jenkins to another.
  • Make a copy of an already existing job by making clone of a job directory by a different name.
  • Renaming an existing job by rename a directory.

10) Which commands can be used to start Jenkins manually?

You can use any one of the following commands to start Jenkins manually:
  • (Jenkins_url)/restart: Forces a restart without waiting for builds to complete.
  • (Jenkin_url)/safeRestart: Allows all running builds to complete.

11) What are the most useful plugins in Jenkins?

Some most useful plugins in Jenkins:
  • Maven 2 project
  • Amazon EC2
  • HTML publisher
  • Copy artifact
  • Join
  • Green Balls

12) How to create a backup and copy files in Jenkins?

If you want to create a back-up of your Jenkins setup, just copy the directory that saves all the setting, build artifacts and logs of Jenkins in its home directory. You can also copy a job directory to clone or replicate a job or rename the directory.

13) How can you clone a Git repository via Jenkins?

If you want to clone a Git repository via Jenkins, you have to enter the e-mail and user name for your Jenkins system. Switch into your job directory and execute the "git config" command for that.

14) How can you setup Jenkins jobs?

Follow these steps:
  • Select new item from the menu.
  • After that enter a name for the job and select free-style job.
  • Then click OK to create new job in Jenkins.
  • The next page enables you to configure your job.

15) What are the two components Jenkins is mainly integrated with?

Jenkins is integrated with these two components:
  • Version Control system like GIT,SVN
  • And build tools like Apache Maven.

Thursday, October 27, 2016

Release management

Q1 ) what is release and deployment management ?

Release management is the process of managing, planning, scheduling and controlling a software build through different stages and environments; including testing and deploying software releases

Q2) what is scope and objective of Release Management ?

Scope of Release & Deployment Management:

The scope of Release and Deployment Management includes the processes, systems and functions required to package, build, test and deploy a release into production in accordance with the Service Design Package (SDP). This includes handover to the Service Operation lifecycle stage.

Objective of Release & Deployment Management:

The objective is to ensure that there are clear consistent plans that everyone understands and follows, that releases are managed efficiently and effectively through to deployment and use and that the new service and supporting systems are capable of being operated successfully and deliver the agreed service requirements (Utility and Warranty).


Goals of Release & Deployment Management:

The goal of Release and Deployment Management is to build, test and deliver new or changed services successfully into the production environment and use within required timescales and with minimal disruption to existing services.

Q3) what are the daily activities of a Release manager ?

Facilitates release planning meetings with key stakeholders to identify proper sequencing of release packages. Ensures that issues and risks are identified, understood, and dealt with in a manner that mitigates risk to scope and schedule.

Defines and documents the release recommendation for each release and/or change to production. Includes release scope, schedule, deliverables, and roll back plan. Reviews release recommendation with key stakeholders.

Oversees release decisions and processes in terms of the big picture/cross-departmental impacts.

Maintains release management schedule for specific (or assigned) system(s).

Documents and communicates all changes for a release in release notes which are published to both the internal team and the client.

Attends change management such as CABs and deployment planning meetings to collect data and information pertaining to the release.


Q4) What is the branching strategy you used ?

Release Branching: develop on trunk, keep a branch for each release.

Feature Branching: develop each feature in a separate branch, only merge once stable.

Release branches are very useful, and even absolutely required, if you need to maintain several versions of your app.

Feature branches also are very convenient, notably if one developer needs to work on a huge change, while others still release new versions.

So to me using both mechanisms is a very good strategy.

Q5)Explain me one tough scenario you faced and come out of it with brilliance ?

When DR is active , because of production environment is down. Our business partners still will contact production environment which will not work.

To address this specific case for B2B partners introduced a gateway in both Dr and production environment which configured under a load balancer . whatever gateway is up either DR or Production that will contact B2B applications.

Q6) Tell me an improvement you suggested , that saved revenue ?

Moving static content website to CDN , instead of maintaining own private CDN.

Integrating beta testing into regression testing.

Q7) what are the release approaches ?

Phased :

Basically, you have your new feature coded tested and even merged into trunk but not yet deployed to production.

You deploy, and then...

Well, pretty much nothing happens. The new feature doesn't show up for any users. The cause of this isn't a mystery, because you also added code to turn off the feature by default, and you then only turn it on for a small group of users .

In any case, you monitor the group you turned the feature on for (either you simply making sure nothing bad happens like servers becoming unstable, or you are checking that users use the feature, or that the new feature changes user behavior in the way you expect, or ...), and if all goes well you continue to expand the group in 'phases' until it is finally on for all users.

In your next deployment, you can remove the switching code for that feature or change.

BigBang Release:

The new or changed service is deployed to all user areas in one operation.

Big bang option

The new or changed service is deployed to all user areas in one operation.

Phased approach

The service is deployed to a part of the user base initially, and then this operation is repeated for subsequent parts of

the user base via a scheduled rollout plan.

Push and pull

A push approach is used where the service component is deployed from the centre and pushed out to the target

locations. In terms of service deployment, delivering updated service components to all users – either in big bang or

phased form – constitutes push, since the new or changed service is delivered into the users’ environment at a time

not of their choosing.

A pull approach is used for software releases where the software is made available in a central location but users are

free to pull the software down to their own location at a time of their choosing.

As some users will never pull a release it may be appropriate to allow a pull within a specified time limit and if this is

exceeded a push will be forced, e.g. for an antivirus update.


Q7) what are the specific cases that you opted for phased approach?

for features whose testing was not covered under regression cycle

because of time constraints or geographical constraints(say some feature to be behaved in specific way in a country .. during testing few users can be marked as IP zone of that country .. this a test data creation. but not complete testing ).

in these scenarios phased manner is suggested.

Q8) what is the knowledge transfer mechanism after go live ?

Knowledge transfer – This is the activity through which one unit (e.g. group or department) is affected by the

experiences of another. The form of knowledge transfer must suit those who will use it, examples of criteria/examples

that can be used are:

„ „ Learning styles

„ „ Knowledge visualisation

„ „ Driving behaviour

„ „ Seminars, webinars and advertising

„ „ Journals and newsletters

Q9) what is the baseline in the perspective of Release and Deployment management ?

agreed description of the attributes of a product, at a point in time, which serves as a basis for workable artifact [ tag in SVN]

Roll back: application is straight forward ,.. backup or symlink change

for DB , though we took golden copy before release

after release and before rollback transactions will not cover ... if we rollback to previous golden copy.

for that DBAs will run some EODs.. not sure that process

Q10) what is the reporting mechanism ? what do you generally publish as part of RM role ?

-> Release calendar

-> Release status

Q11) what is Definitive Media Library ?

A Definitive Media Library (DML) is a secure compound in which the definitive, authorized versions of software package configuration items (CIs) are stored and protected. A DML consists of one or more software libraries or file-storage areas, referred to as repositories.

Q12) packing structure in a case of build ?

War : Web modules which contain Servlet class files, JSP Files, supporting files, GIF and HTML files are packaged as JAR file with .war (web archive) extension



Q13) what are the release policies ?

The Release Policy represents a set of rules for deploying releases into the live operational environment, defining different approaches for releases depending on their urgency and impact.

The Release Policy typically contains the following information:

Release identification

(Release identification, numbering and naming conventions)

Requirements

(Requirement that only software from the DML may be included in Releases)

Release levels

For each release level, e.g. major, minor, emergency releases:

Definition of release level

Expected frequency

Roles and responsibilities as well as entry and exit criteria for the different stages of the Release and Deployment Management process (these may be modified for specific transitions as the necessity arises)

Approach and guidelines for grouping Changes into Releases

Planning and documentation requirements, e.g.

Minor Release deployment uses the simpler Minor Change Deployment process and is documented in Release Records and Change Records

Major Release deployment requires setting up a formal project with full documentation

Emergency Release deployment requires authorization by ECAB and is planned, coordinated and documented by a Major Incident Team

Guidelines for different approaches to Release deployment

What are the specific conditions which make a certain approach the preferred option, e.g.

    "Big-bang" vs. phased deployment

"Push" vs. "pull" deployment

Automated vs. manual deployment

Constraints for Release deployment

Service Level and Operational Level Agreements typically specify availability targets, including allowed windows for maintenance during which the service might be unavailable. Unless Emergency Releases are required, Releases are routinely deployed during these maintenance windows. Release Management therefore needs to translate the service-specific constraints into Release deployment constraints for the systems, applications and other components which are required for the service to be available.

Service-specific Release deployment constraints as defined in the Service Level and Operational Level Agreements

Service A

Allowed frequency of new releases according to Release type

Release windows and constraints (e.g. Saturday 01:00 – 04:00, not in December)

Service B

Release deployment constraints for systems, applications and other components supporting the above services

System A

Allowed frequency of new releases according to Release type

Release windows and constraints (e.g. Saturday 01:00 – 04:00, not in December)

System B

Preferred mechanisms

(Preferred mechanisms to automate the deployment of Releases)

Q14) Release and Deployment phases and significance ?

Release Management Support

Process Objective: To provide guidelines and support for the deployment of Releases.

Release Planning

Process Objective: To assign authorized Changes to Release Packages and to define the scope and content of Releases. Based on this information, the Release Planning process develops a schedule for building, testing and deploying the Release.

Release Build

Process Objective: To issue all necessary Work Orders and Purchase Requests so that Release components are either bought from outside vendors or developed/ customized in-house. At the end of this process, all required Release components are ready to enter the testing phase.

Release Deployment

Process Objective: To deploy the Release components into the live production environment. This process is also responsible for training end-users and operating staff and circulating information/ documentation on the newly deployed Release or the services it supports.

Early Life Support

Process Objective: To resolve operational issues quickly during an initial period after Release deployment, and to remove any remaining errors or deficiencies.

Release Closure

Process Objective: To formally close a Release after verifying if activity logs and CMS contents are up to date.

Q15) who decides release rollback ?  steps to rollback in optimal time ?

Program or project manager will be the decision maker on the release.

Having automation scripts to revert to previous war as described under rollback plan in release deployment plan in case a failure.

When something goes wrong during deployment, there are three general ways in which we can deal with it:

Rollback - revert to using the previous version of the software

Roll-forward - fix it and deploy a new version

Roll-over - try again, maybe it was an intermittent problem

Q16) why CI and CD are essential and how it helps Release Management ?

Continuous integration is being used in Agile release management to speed the time to delivery without sacrificing quality. Executive managers, project managers and development teams can use this guide to help understand and implement continuous integration as part of their release management strategy.

The processes involved in software development such as writing, building, integrating, testing, debugging, and deploying software applications can be very time-consuming and filled with complexity. Continuous integration, by automating and integrating the different parts of these processes that are repeatable, allow development teams to dramatically improve delivery time. At the same time, automation test can execute tests in a fraction of the time of manual test efforts, freeing up testers to do more exploratory testing, ultimately leading to a higher quality product. The whole team is more productive because they are able to focus on the creative parts of the processes that can’t be automated.

Q17)what is the difference continuous deployment and continuous delivery?

Continuous Integration

Continuous Integration is a software development practice in which you build and unit-test software every time a developer checks in new code. This provides Agile software teams the rapid feedback they need to respond to market demands and eliminate problems quickly.

Continuous Delivery

Continuous Delivery (CD) is a software development practice in which continuous integration, automated testing, and automated deployment capabilities allow high-quality software to be developed and deployed rapidly, reliably and repeatedly with minimal manual overhead.

Continuous Deployment
Continuous Deployment is a software development practice in which every code change goes through the entire pipeline and is put into production, automatically, resulting in many production deployments every day.

With Continuous Delivery your software is always release-ready, yet the timing of when to push it into production is a business decision, and so the final deployment is a manual step. With Continuous Deployment, any updated working version of the application is automatically pushed to production. Continuous Deployment mandates Continuous Delivery, but the opposite is not required.


Q18)how CI cnd CD is achieved in your company?

CI : 1 HP

CD : 2HP

Q19)what is release calendar and how do you measure and publish progress of release on golive date?

The following table provides a template for a release schedule
Release #: This is the release number. This will be allocated either manually by the
Release Manager or automatically by an IT service management tool.
Release type: This defines the type of release. For example: major, significant, moderate,
minor, emergency, etc.
Description: A brief description of the release will be listed.
Status: Shows the current status of the release. For example: pending release,
released, installed, activated.
Approval status: This column shows the current approval status of the release. For example:
pending approval, approved, under review, etc.
Risk level: The risk level will indicate the risk of the release to the business. A high risk
would indicate that the release, if unsuccessful, will impact immensely on the
organization itself.
High, medium and low.
Priority: Priority is used to sort out which releases will occur first. This will be a
constant changing value, especially as the needs of the business may change.
of high, medium and low.
Performed by: Shows who will actually be performing the release.
Planned start date: The planned start date for starting the release.
Planned end date: The expected end date for the release.
Release date: The actual day that the release will be released into the IT infrastructure

Q20) who is held responsible for project delay?

unrealistic timeline
judgement error
client response time
work load on other projects
complexity of the project
loss of employees

Devops phases and tool

This is an example diagram that illustrates the phases and tool used in various phases.

Every organization will not use same set of tools , but similar tools which are open source , in-house or licensed ones. 

Will go through each phase one by one 

Thursday, October 20, 2016

Devops Introduction

What is Devops ?


Below is a good video to showcase how Devops is better than traditional waterfall model and even agile development.

Watch the video ..