Tuesday, March 12, 2019

Day to Day activities for a DevOps Engineer





Day to Day activities for a DevOps Engineer and Team


1. Make sure that the 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 and fixing any issue or failure with it is the #1 priority for the day. They often need to spend time on troubleshooting, analyzing and providing fixes to issues.


2. Interaction with other teams
– Co-ordination and collaboration is the key for DevOps to be successful and hence daily integration with Dev and QA team, Program management, IT is always required.


3. Work on Automation Backlog – Automation is soul of DevOps so DevOps engineering need to plan it out and I can see DevOps engineer spending lots of time behind the keyboard working on Automating stuff on daily basis.


4. Infrastructure Management – 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.


5. Dealing with Legacy stuff – Not everyone is lucky to work on latest and newest things and DevOps engineers are no exception hence they also need to spend time on legacy i.e. in terms of supporting it or migrating to the latest.


6. Exploration – DevOps leverage a lot from the various tools which are available, there are many options as open source so team need to regularly check on this to make sure the adoptions as required, this is something which also require some effort not on daily but regular basis. Ex. What are open source options available to keep the cost at minimum?


7. Removing bottleneck – DevOps primary purpose is identify the bottlenecks / Manual handshakes and work with everyone involved (Dev / QA and all other stakeholder) to remove them so team spend good amount of time in finding such things and build the Automation Backlog using this. Ex. How we can get builds faster?


8. Documentation – Though Agile / DevOps stresses less on the documentation, it is still the important one which DevOps engineer does on daily basis, Be it Server Information, Daily Week charted, Scrum / Kanban board or Simple steps to configure / backup or modify the infrastructure, you need to spent good amount of time in coming up these artifacts.


9. Training and Self Development
– Self leaning and Training is very useful in getting better understanding and many organizations encourage their employee to take the time out and do some of these and same holds true for DevOps folks as well, So learn something new everyday...


10. Continuous Improvement as Practice – Last but not least, It’s up to the DevOps folks 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 optimist the use of existing resources. Go and talk to people to build the DevOps and Continuous Improvement culture.


Thanks for Reading...

Atlassian Collaboration Tools




Best Atlassian Collaboration Tools

For the success of product management in enterprises, you need to utilize certain tools for better build and visibility. With a tool, you can create a roadmap of the app that you plan for release and present it to your stakeholders. These tools would help you create milestones that aid in decision making and achieve business goals. The tools can also help you prioritise the different features of your app, collaborate with different teams and reach milestones faster than planned. Enterprises have begun to work with Atlassian tools and agile methodology to achieve their business goals. In this article, we will be explaining about 6 of the most important Atlassian collaboration tools that help in better product development and management.

1. JIRA – for Agile
JIRA is the #1 Atlassian project management tool for agile teams.

JIRA can support any type of Agile methodology be it Scrum, Kanban or any methodology of your choice. With JIRA, you can plan, issue track and release your software as planned and with the best results. JIRA comes in three packages:


With the base software
             Includes JIRA Core and 
             JIRA Agile
             JIRA service desk

Here are the main features of JIRA:

Sprint Planning Tools

With JIRA, developers can estimate stories, adjust the sprint scope, adjust velocity and do a lot more. Sprint, in product development, is the Scrum term for iteration. Scrum teams need to ensure that the project moves as planned and they do this by setting a time period for the completion of a particular part of the project.

Through the Scrum approach, you assemble all the requirements of the project and then use them to define the project. JIRA offers some best sprint planning features like version management – for tracking versions and progress, easy backlog grooming– for re-prioritizing user stories, bugs, etc. and story points – for maintaining accuracy in future sprints.

Daily Scrums or Standups

Once the project starts, you plan the necessary sprints, then divide them once again with a set of requirements for each. To ensure there are regular inspections and project reviews, daily scrum meetings are held. JIRA helps you to review the previous day's work followed by setting targets on what needs to be completed on a particular day.

Tracking and Managing Sprints

Each time a sprint is completed, you review it to check whether anything needs to be done to improve in the next sprint. Thus in each sprint, you have a functional part of the project that would be thoroughly tested before moving into the next.

JIRA features like Sprint permissions, Custom issue types, Workflows and Release hub gives you a clear idea of the progress of the work done in each sprint so that your team can effectively identify any bottlenecks in the tasks assigned.

Effective Retrospectiveness

At the end of sprints, you can hold a retrospect meeting to go through the product once again to gauge its performance. If necessary, changes and adaptations will be planned and made. This can be done with JIRA retrospective scrum reports like Burndown chart, Velocity chart, Cumulative flow diagram, among a few.

Other features of JIRA include:

Scrum Boards – Scrum boards gives you a overall view of the activities done within each sprint.

Out-of-the-box reports - You can rely on the real time insight of team performance over each sprint.

Roadmap planning – A very useful feature when you need to plan and forecast a real-time roadmap.

Custom Filters – With the help of JIRA Query Language (JQL), you can immediately capture all the critical issues.

1000+ addons – Helps you to put in addons like Portfolio for Jira, Zephyr, and so on.

Customizable workflows – You can customize the workflow anyway you want it.

Another distinctive feature of JIRA is that it can be easily integrated with tools like Confluence, Bitbucket, HipChat,etc. using a rich set of APIs.

2. Confluence - for Documentation
Confluence is a team collaboration software used for documentation, written in Java. Atlassian markets it; hence it works seamlessly with other Atlassian products like JIRA, Bamboo, FishEye, etc. Confluence offers commendable transparency and it's flexible too; so all the team members can work in an organized manner.

Whether it’s creating, publishing or even accessing company information, the team can do all this work in a single platform, making it easy for projects to move without a hitch. With its team documentation feature, you can easily capture and store all the work done by your team, so everyone stays on the same page at any point of time.

The main features of Confluence are:

It can Create Anything - With Confluence, you have the power to create anything be it meeting notes, project plans, product requirements. You can even add multimedia and dynamic content.

Instant Feedback in Context - The feedback on the work can be given on the work itself, complete with inline comments, eliminating the need for email or chat.

Integration in a Single place - There is space for everyone in the team, however big or small the project is. It helps in keeping the knowledge and information in one place, which can be searched and found at will.

Work while You Move – It helps you to work from anywhere; for example, when you are travelling, you get updates about your team’s work. Also teams spread across the globe will have no problems sharing their work with you. This is achieved through Confluence Cloud app.

Disaster Recovery – As disaster recovery strategy is a key benefit of Confluence, it plays an important role in business continuity. The entire file system will be fully replicated.

Efficient Document Management – Confluence makes it easier to make documents, centralise all of the contents and plan for iterations

Can be Connected with JIRA – This helps in better transparency, thereby aiding in connection with customers.

Besides these features, Confluence can be easily synchronised between desktop and mobile - you can easily navigate your saved data from desktop to your smartphone and vice-versa without the fear of losing any of your work data.

3. Crucible - for Code Reviews
Crucible is a web-based collaborative code review tool that helps you monitor and detect major defects and improve codes. It is lightweight - meaning it has less syntax and can be easily implemented by distributed teams to get quick code reviews, complete with inline comments and threaded conversations.

With Crucible, you can be assured of high quality codes because flaws are immediately detected. It gives you reports and reviews of the code status, enabling you to have an idea of the changes to be made.

Take a look at the main features:

Code Review Tool - Reviewing the code with this tool would help catch some major errors in the code structure. This would trigger discussion among the team members at the end of which changes could be made.

Clear Inline Discussions - You can get right into the code with inline comments, mentions and threaded discussions if you want to communicate with your team members.

Well-Organized Activity Streams - With the help of the Activity streams feature, you know what is happening in your project at any given point of time, complete with comments and all.

Simple Audit and Compliance - You can use Crucible to trace the history of a particular code review which you accessed or skipped earlier.

Integration with Jira, Github and Bitbucket - With the integration with JIRA, Github and Bitbucket, you can handle and resolve code issues in a single time-saving interface. This allows you to improve your development workflow through email notifications, side-by-side diffs, smart commits - both pre and post commits, Source and Review Tabs. You can use Crucible’s native repository access and connect to Git repository, and a Git hosted in Bitbucket Server makes it much easier. To interact with Git repository, you need to execute the Git command separately.

4. FishEye – for Version Control
FishEye is an Atlassian owned advanced revision control browser and search engine. It allows you to compare, visualize, track and search for code changes - all in a single platform. The main advantage of FishEye is that it gives a visualized form of all the code changes that’s made in the repository.

Used mainly for open source projects, the term ‘revision control’ in FishEye also means version control. When large amounts of information are present, and you need to make changes to a few of them, then you can make the revisions and each change would be given a number.

Some of its superb features include:

Diff Tool – FishEye comes with a Diff Tool that gives you a side by side comparison and understanding of the code changes

Perfect Activity streams – Real time activity streams in FishEye gives you an idea of what’s happening in your project. Gives overview of commits, JIRA software issues and Crucible review activities.

Accurate Code Search – With FishEye, you can make code searches easy with just file names, usernames, wild cards and so on.

Tracking Code Activity across any SCM - FishEye makes it easier for you to browse, index and search from different source code management systems like SVN, Git, Mercurial, CVS and Perforce.

Integrates with Jira, Bitbucket - Once your FishEye is set up, it allows you to configure JIRA automatically. The integration would give you a quick and guided path to software development process. The integration with Bitbucket, and adding the repositories are quick and can be done with a single click. This makes indexing, browsing and searching easy.

Usage alongside Crucible - Using Subversion, Git, Mercurial, CVS or Perforce would help you to integrate Crucible and FishEye for extracting information and managing code reviews.

5. Bitbucket – for Collaborative Revision Control

Bitbucket acts as Git solution for professional teams. Its main functions are coding, managing and collaborating with the team. And it doesn’t merely collaborate; it can do this at a large scale. Written in Python using Django, Bitbucket enhances the functions of revision control systems like Git and Mercurial.

Here are some of its main features:

Effective Code Collaboration – Bitbucket enables code collaboration using using pull requests. This helps in more efficient code reviews.

Massive Scaling – Integrated with Bitbucket Data Center for a fast performance

Flexible Deployment Models – Flexibility is one of the greatest features of Bitbucket, irrespective of the size of the team or its location. You can manage in the cloud, Bitbucket Server & Data Center.

Branch Permissions –Helps in eliminating errors by controlling the actions. You need to get granular permission at each level.

Inline discussions – The team can hold discussions right in the source code.

Diff Views and 3rd Party Integrations - Integrates beautifully with Bamboo for continuous integration, HipChat for team chat and with other systems through Bitbucket web hooks.

Integrates with other Atlassian Products – Bitbucket works with other Atlassian products to help build high quality, performing software.

Bitbucket Pipelines -Bitbucket Pipelines helps you to build, test and deploy from Bitbucket. The good news is that you don’t need to integrate this tool specially to build accounts or agents. You can easily connect the repository with your Continuous Integration tool.

Additionally it makes the entire development workflow seamless, right from code to the deployment stage. All you need to do is select the repository, activate the pipelines and that’s it. Add Bitbucket-pipelines.yml file to the root of your repository to activate Bitbucket Pipelines. Now you can see the build statuses whenever and wherever you need it.

Git LFS

Git Large File Storage by Bitbucket is actually a Git extension and developed by Atlassian, that lets you handle large files with ease. The download is done during the checkout and not during cloning or fetching. Git LFS does the downloading differently by replacing the large files with tiny pointer files and stores the files in a local Git LFS cache. These are then handled automatically during normal usage.

When new commits are pushed, the files from the local server are transferred to the remote Git LFS store attached with your Git repository. And when you checkout, commits with Git LFS pointers would either be replaced with files from your local Git LFS cache or taken from a remote store. The advantage with Git LFS is that you don’t need to change the Git workflow at checkouts.

Bitbucket Data Center

BitBucket Data Center is the upgraded version of Bitbucket server whenever required, Atlassian’s Bitbucket being the Git code management solution for enterprise teams. It is extremely useful as a non-premises Git repository management solution for larger enterprises, providing high availability and infrastructure flexibility. Bitbucket Data Center uses a cluster of Bitbucket Server nodes for the following functions:

Clustering - where you can run your Bitbucket instance on a cluster of multiple nodes, offering scalability with no downtime, high performance and availability.

Smart Mirroring - providing local mirror nodes in different geographical locations enable quick and trouble-free clones and fetches.

6. Bamboo – for Continuous Integration

Bamboo allows you to focus on coding while it does all the Continuous Integration faithfully. It performs a number of functions like creating multi-stage build plans, setting triggers for builds and assigning agents for all crucial builds and deployments. It does all the testing and deployment in a single workflow.

You can do Continuous Integration testing automatically and quickly with Bamboo. Catching bugs with Bamboo is much easier because you can make use of both parallel automated tests and agile development.

One of the clear-cut feature of Bamboo is that it integrates smoothly with a host of softwares. It connects with repositories like Git, Subversion, Perforce, etc., supports build tools like Ant and Maven, testing tools like Selenium, PHPUnit and JUnit besides importing data from Jenkins. Here’s a snapshot of its other features:

Rich Tech Stack - Use Bamboo with any language and technology, especially with AWS CodeDeploy, Amazon S3 and Docker. You have the freedom to make free add-ons, choose from a growing variety of available tasks for both build and deployment.

Excellent for Deployment - Bamboo makes it very easy for deployment projects and environments.

Dedicated Agents - This helps in running hot fixes and critical builds. You no longer have to wait in the queue for fixing the critical bugs even with free build agents.

Wide Visibility - For the release managers, there is a great visibility on what’s going live. The Ops teams can expect what will happen during deployment and what they will be responsible for.

Integration with other Atlassian Products - When Bamboo integrates with Bitbucket, FishEye, HipChat and JIRA, there is amazing traceability, right from the development stage to the final delivery stage. Additionally, visibility is enabled for pull requests, deployments, builds and more.

Running Parallel Tests - Run batches of tests in parallel with more than 100 remote test builds, and gives feedback on a timely basis.

Proper Quarantine - Distinguish between the red and green builds, while keeping the green builds with a single click quarantine.

Effective Branch Detection - No suffering of code quality here. New branches like Mercurial, and SVN repos are detected, while CI theme automatically there.

Product Management in Brief




What is the aim of releasing a product? To meet client goals and to help in business realization, right? Through correct product management techniques, it is possible for a company to align itself with client goals and aspirations. So what is Product Management? It is a paradigm function that aims to drive a new product into the market with clever strategies. It should be aligned with customer demands in order to achieve market clarity. Product Management may be a fancy term now, but companies were doing it for a long time ago. Even before this term was coined, companies used to assemble talented people to identify the market requirement or to address a pain point. Once proper brainstorming is done, a product will be released into the market after a few iterations and tweaks. A product strategy would be introduced whereby the company’s business goals would be realized. 

A product management strategy would address the following aspects: 

1. How prepared is your product to meet the different requirements of your target segment? 
2. What steps you need to follow to make a punch release? 
3. What about the pricing and licensing details of the product? 
4. How are you going to position the product in the market? 

Pillars of Product Management

Here are seven main steps that would ensure you have good product development and release. 

1. Idea Generation 
Every big thing happens with a germ of an idea. Similarly, before each product is released into the market, you need to have an idea of the product. This idea is then whetted and grown through several brainstorming and discussion phases. The viability of the product would be tested through a SWOT analysis. SWOT means analyzing the Strength, Weakness, Opportunities and Threats concerning various possibilities. While analyzing SWOT, consider the current market trends as well. 

2. Idea Selection 
You have a plethora of ideas, many of them really good. As it is not possible to go forward with all the ideas, the next would be to screen them all and go with the ones that would seem best under the circumstances. Considering the market potential, affordability and the ROI are important aspects. 

3. Roadmapping 
A product roadmap is the next important step in product management. It is like a visual document that would contain all the details of your product, the direction it is moving and what you expect to get from it in the end. Roadmap will contain your product strategy and how your product would come out in general. 

4. Development 
This is of course, the product development stage where a prototype of the product would be created and passed on to the technical and marketing department for their approval. Based on the prototype, the marketing team would devise a strategy that would be ready to go by the time the product is ready for release. Agile methodologies and coding are followed here. ‪It is also a fact that developers now deviate from the traditional project management methodologies ‬to adopt agile practices where the focus is on different aspects of the program, in different iterations. They also introduce the art of coding to their development work to ensure it is easy to read, understand, modify, maintain and enhance. 

5. Testing/Quality Analysis 
Once the product is developed according to the prototype, it needs to go through stringent testing and Quality Analysis programs. Testing will also involve the actual product as compared to the prototype. This process is very important to refine the different elements of the product right to the stage where you need to position it for marketing. 

6. Launch 
Just prior to the launch phase, the people behind the product work in close alliance with the engineers, developers, marketing team and customer support team to ensure the product meets specifications. And once the coding is perfect and there are no more bugs or errors, the product would be ready for launch in the market. 

7. Customer Feedback 
The entire product development stage faces fruition only when you receive customer feedback. Customer feedback might bring attention to any shortcomings that you’ve missed during the product development stage. Thus it is a valid step for validating the quality of your product in the market.





Monday, February 25, 2019

Roles and Responsibilities of a DevOps Engineer


DevOps Engineer is somebody who understands the Software Development Lifecycle and has the outright understanding of various automation tools for developing software.




DevOps Engineer works with developers and the IT staff to oversee the code releases.

The main goal of DevOps is to increase the quality of the 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.

DevOps Engineer should have
• Someone with experience of DevOps tools.
• Implement automated deployment and script configuration
• Implement DevOps solutions for team collaborations
• Achieve continuous integration and continuous delivery


Role of DevOps Engineer:

DevOps, there is more scope for visit changes in the code, which includes continuous automating and sending. It’s not anticipated that would compose the code ideal starting with no outside help yet picking the correct blend of coding, how to coordinate a few components of SQL information is important as a part of DevOps engineer role.

A DevOps engineer needs to connect with the team to deal with the difficulties emerging in the coding or scripting part which includes libraries and programming advancement packs to run the product on different OS and for sending.

DevOps Engineer is responsible for taking care of the IT foundation according to the business needs of the code which can be deployed in a hybrid multi-tenant environment which needs persistent checking of the execution. DevOps engineer must know about development tools which compose the new code or upgrade the current code.

DevOps Engineer needs to deal with code which needs to fit across multi-tenant environments including cloud. Henceforth a DevOps Engineer role a cross-practical part which oversees and handles programming that is assembled and deployed across challenging applications.



I am penning down some of my thought from my own experience as well some study I have done. 

Make sure that the pipeline is running smoothly – This is one of the most important tasks of a DevOps engineer to make sure that CI/CD pipeline is intact and fixing any issue or failure with it is the #1 priority for the day. They often need to spend time on troubleshooting, analyzing and providing fixes to issues.

Interaction with other teams – Co-ordination and collaboration is the key for DevOps to be successful and hence daily integration with Dev and QA team, Program management, IT is always required.

Work on Automation Backlog – Automation is the soul of DevOps so DevOps engineering needs to plan it out and I can see DevOps engineer spending lots of time behind the keyboard working on Automating stuff on daily basis.

Infrastructure Management – DevOps engineer is also responsible for maintaining and managing the infrastructure required for CI/CD pipeline and making sure that it's up and running and being used optimally is also part of their daily schedule. Ex. Working on Backup, High Availability, New Platform setup etc.

Dealing with Legacy stuff – Not everyone is lucky to work on latest and newest things and DevOps engineers are no exception hence they also need to spend time on legacy i.e. in terms of supporting it or migrating to the latest.

Exploration
– DevOps leverage a lot from the various tools which are available, there are many options as open source so the team needs to regularly check on this to make sure the adoptions as required, this is something which also requires some effort, not on daily but regular basis. Ex. What are open source options available to keep the cost at a minimum?

Removing bottleneck – DevOps primary purpose is to identify the bottlenecks / Manual handshakes and work with everyone involved (Dev / QA and all another stakeholder) to remove them so team spends a good amount of time in finding such things and build the Automation Backlog using this. Ex. How we can get builds faster?

Documentation – Though Agile / DevOps stresses less on the documentation, it is still the important one which DevOps engineer does on a daily basis, Be it Server Information, Daily Week charted, Scrum / Kanban board or Simple steps to configure / backup or modify the infrastructure, you need to spend good amount of time in coming up these artifacts.

Training and Self Development – Self-learning and Training are very useful in getting a better understanding and many organizations encourage their employee to take the time out and do some of these and same holds true for DevOps folks as well, So learn something new every day...

Continuous Improvement as Practice
– Last but not least, It’s up to the DevOps folks 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 optimizing the use of existing resources. Go and talk to people to build the DevOps and Continuous Improvement culture.

I hope you have enjoyed my post on DevOps Engineer, got a question on the topic, mention it in the comments section.

Thanks

Agile Methodology in Brief


Agile is a software development methodology to build software incrementally using short iterations of 1 to 4 weeks so that the development is aligned with the changing business needs.

Instead of a single-pass development of 6 to 18 months where all the requirements and risks are predicted upfront, Agile adopts a process of frequent feedback where a workable product is delivered after 1 to 4 week iteration.





The agile software development emphasizes on four core values.

1. Individual and team interactions over processes and tools

2. Working software over comprehensive documentation

3. Customer collaboration over contract negotiation

4. Responding to change over following a plan




Scrum Process:




Scrum Events

The Sprint

A sprint is a time-boxed period during which specific work is completed and made ready for review. Sprints are usually 2-4 weeks long but can be as short as one week.

Sprint Planning

Sprint Planning team meetings are time-boxed events that determine which product backlog items will be delivered and how the work will be achieved.

The Daily Stand-up

The Daily Stand-up is a short communication meeting (no more than 15 minutes) in which each team member quickly and transparently covers progress since the last stand-up, planned work before the next meeting, and any impediments that may be blocking his or her progress.

The Sprint Review

The Sprint Review is the “show-and-tell” or demonstration event for the team to present the work completed during the sprint. The Product Owner checks the work against pre-defined acceptance criteria and either accepts or rejects the work. The stakeholders or clients give feedback to ensure that the delivered increment met the business need.

The Retrospective

The Retrospective, or Retro, is the final team meeting in the Sprint to determine what went well, what didn’t go well, and how the team can improve in the next Sprint. Attended by the team and the Scrum Master, the Retrospective is an important opportunity for the team to focus on its overall performance and identify strategies for continuous improvement on its processes


Scrum Artifacts

Product Backlog

The product backlog is the single most important document that outlines every requirement for a system, project or product. The product backlog can be thought of as a to-do list consisting of work items, each of which produces a deliverable with business value. Backlog items are ordered in terms of business value by the Product Owner.

Sprint Backlog

A sprint backlog is the specific list of items taken from the product backlog which are to be completed in a sprint.

Increment

An Increment is the sum of all product backlog items that have been completed since the last software release. While it is up to the Product Owner to decide on when an increment is released, it is the team’s responsibility to make sure everything that is included in an increment is ready to be released. This is also referred to as the Potentially Shippable Increment (PSI).

Scrum Rules

The rules of agile Scrum should be completely up to the team and governed by what works best for their processes. The best agile coaches will tell teams to start with the basic scrum events listed above and then inspect and adapt based on your team’s unique needs so there is continuous improvement in the way teams work together.



How the Process is done? An Example!

Having read about the technical jargons of SCRUM. let me try to demonstrate the whole process with an example.

Example:

Step #1: Let’s have a SCRUM team of 9 people comprising of 1 product owner, 1 Scrum master, 2 testers, 4 developers and 1 DBA.

Step #2: The Sprint is decided to follow a 4 weeks cycle. So we have 1-month Sprint starting 5th June to 4th of July.

Step #3: The Product owner has the prioritized list of user stories in the product backlog.

Step #4: The team decides to meet on 4th June for the “Pre Planning” meeting.

The product owner takes 1 story from the product backlog, describes it and leaves it to the team to brainstorm on it.
The entire team discusses and communicates directly to the product owner to have clearly understood the user story.


In a similar way, various other user stories are taken. If possible, the team can go ahead and size the stories as well.

After all the discussion, Individual team members go back to their workstations and Identify their individual tasks for each story.
Calculate the exact number of hours on which they will be working. Let’s check how the member concludes these hours.

Total number of working hours = 9
Minus 1 hour for a break, minus 1 hour for meetings, minus 1 hour for emails, discussions, troubleshooting etc.
So the actual working hours = 6.
A total number of working days during the Sprint = 21 days.
Total number of hours available = 21*6 = 126.
The member is on leave for 2 days = 12 hours (This varies for each member, some may take leave and some may not.)
Number of actual hours = 126 – 12 = 114 hours.

This means that the member will actually be available for 114 hours for this sprint. So he will break down his individual sprint task in such a way that a total of 114 hours is reached.

Step #5: On the 5th of June the entire Scrum team meets for the “Planning Meeting”.
The final verdict of the user story from the product backlog is done and the story is moved to the Sprint Backlog.
For each story, each team member declares their identified tasks, if required they can have a discussion on those tasks, can size or resize it (remember the Fibonacci series!!).
The Scrum master or the team enter their individual tasks along with their hours for each story in a tool.
After all the stories are completed, Scrum master notes the initial Velocity and formally starts the Sprint.

Step #6: Once the Sprint has started, based on the tasks assigned, each team member starts working on those tasks.

Step #7: The team meets daily for 15 minutes and discusses 3 things:
What did they do yesterday?
What they plan to do today?
Any impediments (roadblocks)?

Step #8: The scrum master tracks the progress on a daily basis with the help of “Burn down chart”.

Step #9: In case of any impediments, the Scrum master follows up to resolve those.

Step #10: On 4th July, the team meets again for the review meeting. A member demonstrates the implemented user story to the product owner.

Step #11: On 5th July, the Team meets again for the Retrospective, where they discuss:
What went well?
What did not go well?
Action Items.

Step #12: On 6th July, the Team again meets for pre-planning meeting for the next sprint and the cycle continues.




Scrum Activity Tools

There are several tools that can be used extensively for tracking the scrum activities.

Some of them include:
Jira
XPlanner




I hope the above explanation helps you people.


All the Best for your career.

Sunday, February 24, 2019

DevOps Content


--------------------------------------------------------------------------------------------------------------------------
                                                            DevOps Content
-----------------------------------------------------------------------------------------------------------

1. What’s Agile?

1. Agile methodologies and Scrum
2. Scrum Basics
3. User Stories
4. Estimating User Stories

2. DevOps Fundamentals

1. Recall Waterfall and Agile concepts
2. Differences within Dev and Ops Teams
3. DevOps and Agile – complementary concepts
4. DevOps Definition and need
5. DevOps history
6. Shift left approach to Ops
7. DevOps Principles
8. Benefits achieved using DevOps, trends towards faster delivery
9. DevOps Life Cycle and need for tools

3. Software Version Control

1. What is Version Control
2. Types of Version Control System
3. Introduction to SVN
4. Introduction to Git
5. Git Lifecycle
6. Common Git Commands
7. Working with Branches in Git
8. Merging Branches
9. Resolving Merge Conflicts
10. Git Workflow
11. Hands-on Exercise – 
Git Life cycle Commands
Pushing Code to Github
Stashing Code in git
Creating, Deleting Git Branches
Reverting a Push to GitHub
Merging branches using git merge
Merging branches using git rebase
Resolving merge conflicts using the git merge tool

4. Maven – as a Build tool

  1. Maven Objectives and usage
2. Maven Build Life Cycle and Goals
3. Maven build file POM.xml and its configuration elements with an example
4. Basic Maven commands – practical using CP-DOF case study

5. Containerization using Docker - Part I

1. Introduction to Docker
2. Understanding Docker Lifecycle
3. Components of Docker Ecosystem
4. Common Docker Operations
5. Creating a DockerHub Account
6. Committing changes in a Container
7. Pushing a Container Image to DockerHub
8. Creating Custom Docker Images using Dockerfile
9. Hands-on Exercise – 
Common Docker Operations
Creating a DockerHub Account
Committing Changes to a Container
Pushing container to DockerHub
Creating Local Image Repository
Building an Image using Dockerfile

6. Containerization using Docker - Part II

1. What are Docker Volumes
2. Deploying a Multi-Tier Application using Docker Network
3. Using Docker Compose to deploy containers
4. What is Container Orchestration
5. Container Orchestration Tools
6. Introduction to Docker Swarm
7. Deploying a 2-Node Cluster using Docker Swarm
8. Hands-on Exercise – 
Creating Docker Volumes
Using Docker Compose to deploy multiple containers
Deploying a Multi-Node Cluster using Docker Swarm
Deploying a multi-service app on Docker Swarm

7. Configuration Management using Puppet

1. Need of Configuration Management
2. Configuration Management Tools
3. What is Puppet
4. Puppet Architecture
5. Setting up Master Slave using Puppet
6. Puppet Manifests
7. Puppet Modules
8. Applying configuration using Puppet
9. Puppet File Server
10. Hands-on Exercise – 
Setting up Master-Slave on AWS
Testing Connection of nodes with Puppet
Creating a Manifest
Deploying Manifest on Node
Creating a Module
Deploying sample software on nodes using Puppet Modules and Manifests
Implementing a File Server Module on Puppet

8. Configuration Management using Ansible

1. What is Ansible?
2. Ansible vs Puppet
3. Ansible Architecture
4. Setting up Master-Slave using Ansible
5. Ansible Playbook
6. Ansible Roles
7. Applying configuration using Ansible
8. Hands-on Exercise – 
Installing Ansible on AWS
Creating a Playbook using YAML
Creating an Ansible Role
Using Roles in Playbook

9. Continuous Testing using Selenium

1. What is Continuous Testing?
2. Introduction to Selenium
3. What is Maven?
4. Using Maven with Selenium
5. Creating Test Cases with Selenium
6. Running Test Cases on Chromium Web Driver
7. What is Headless Mode?
8. Hands-on Exercise – 
Using Maven to import dependencies in Eclipse
Create a Sample Test Case for a website using Selenium
Implementing a headless test in selenium using Chrome WebDriver

10. Continuous Integration using Jenkins

1. Introduction to Continuous Integration
2. Jenkins Master-Slave Architecture
3. Understanding CI/CD Pipelines
4. Creating an end to end automated CI/CD Pipeline
 5. Creating Users + Manage + Assign
 6. Jenkins Catlight Notifications
 7. Jenkins Email Notifications 
 8. Jenkins Automated Deployment
 9. Jenkins Delivery Pipeline
 10. Jenkins Build Pipeline
 11. Jenkins Blue Ocean Window
 12. Jenkins Build Monitor View
13. Hands-on Exercise –
Creating a Jenkins Master Slave on AWS
Installing Plug-ins in Jenkins
Creating Jenkins Builds
Creating Scheduled Builds
Triggering Jobs using Git WebHooks
Using the Pipeline Plugin In Jenkins

11. Continuous Orchestration using Kubernetes
1. Introduction to Kubernetes
2. Docker Swarm vs Kubernetes
3. Kubernetes Architecture
4. Deploying Kubernetes using Kubeadms
5. Alternate ways of deploying Kubernetes
6. YAML Files
7. Creating a Deployment in Kubernetes using YAML
8. Services in Kubernetes
9. Ingress in Kubernetes
10. Case Study – Kubernetes Architecture
11. Hands-on Exercise – 
Setting up Kubernetes using kubeadm
Installing Kubernetes using kops and GCK
Creating a Deployment
Creating Services
Creating an Ingress
Demonstrating the use of Ingress, services, and deployments together

12. Continuous Monitoring using Nagios

1. What is Continuous Monitoring
2. Introduction to Nagios
3. Nagios Architecture
4. Monitoring Services in Nagios
5. What are NRPE Plugins
6. Monitoring System Info using NRPE plugins
7. Hands-on Exercise – 
Installing Nagios
Monitoring of different servers using Nagios


------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------

Saturday, January 19, 2019

DevOps Introduction


DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operation (Ops).

 The main characteristic of the DevOps movement is to strongly advocate automation and monitoring at all steps of software construction, from integration, testing, releasing to deployment and infrastructure management. '

DevOps aims at shorter development cycles, increased deployment frequency, and more dependable releases, in close alignment with business objectives.




Definition: - "DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality".

Toolchains:
As DevOps is intended to be a cross-functional mode of working, rather than a single DevOps tool there are sets (or "toolchains") of multiple tools. Such DevOps tools are expected to fit into one or more of these categories, reflective of key aspects of the development and delivery process:



  1. Code — code development and review, source code management tools, code merging
  2. Build — continuous integration tools, build status
  3. Test — continuous testing tools that provide feedback on business risks
  4. Package — artifact repository, application pre-deployment staging
  5. Release — change management, release approvals, release automation
  6. Configure — infrastructure configuration and management, Infrastructure as Code tools
  7. Monitor — applications performance monitoring, end-user experience

Note that there exist different interpretations of the DevOps toolchain (e.g. Plan, Create, Verify, Package, Release, Configure, and Monitor).

DevOps Lifecycle


DevOps is deep integration between development and operations. Understanding DevOps is not possible without knowing DevOps lifecycle.


Here is brief information about the Continuous DevOps life-cycle:



1. Development

In this DevOps stage, the development of software takes place constantly. In this phase, the entire development process is separated into small development cycles. This benefits DevOps team to speed up software development and delivery process.


2. Testing

QA team use tools like Selenium to identify and fix bugs in the new piece of code.


3. Integration

In this stage, new functionality is integrated with the prevailing code, and testing takes place. Continuous development is only possible due to continuous integration and testing.


4. Deployment

In this phase, the deployment process takes place continuously. It is performed in such a manner that any changes made any time in the code, should not affect the functioning of high traffic website.


5. Monitoring

In this phase, the operation team will take care of the inappropriate system behavior or bugs which are found in production.