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.