Friday, January 14, 2022

SCRUM - A Framework for Project Management

 

Scrum Overview

Cloud Computing

 


%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22%26lt%3Bfont%20style%3D%26quot%3Bfont-size%3A%2018px%26quot%3B%26gt%3BCloud%20Computing%26lt%3Bbr%26gt%3B%26lt%3B%2Ffont%26gt%3B%26lt%3Bul%26gt%3B%26lt%3Bli%20style%3D%26quot%3Btext-align%3A%20left%26quot%3B%26gt%3B%26lt%3Bfont%20size%3D%26quot%3B3%26quot%3B%26gt%3BDelivery%20of%20computing%20Services%26lt%3B%2Ffont%26gt%3B%26lt%3B%2Fli%26gt%3B%26lt%3Bli%20style%3D%26quot%3Btext-align%3A%20left%26quot%3B%26gt%3B%26lt%3Bfont%20size%3D%26quot%3B3%26quot%3B%26gt%3BOffer%20-%20Faster%20Innovation%20%2C%20Flexible%20Resources%26lt%3B%2Ffont%26gt%3B%26lt%3B%2Fli%26gt%3B%26lt%3Bli%20style%3D%26quot%3Btext-align%3A%20left%26quot%3B%26gt%3B%26lt%3Bfont%20size%3D%26quot%3B3%26quot%3B%26gt%3BPay%20for%20only%20the%20cloud%20service%20you%20use%26lt%3B%2Ffont%26gt%3B%26lt%3B%2Fli%26gt%3B%26lt%3Bli%20style%3D%26quot%3Btext-align%3A%20left%26quot%3B%26gt%3B%26lt%3Bfont%20size%3D%26quot%3B3%26quot%3B%26gt%3BHelps%20Lowering%20operating%20cost%26lt%3B%2Ffont%26gt%3B%26lt%3B%2Fli%26gt%3B%26lt%3B%2Ful%26gt%3B%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22330%22%20y%3D%22180%22%20width%3D%22400%22%20height%3D%22400%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%223%22%20value%3D%22Servers%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22430%22%20y%3D%2240%22%20width%3D%22160%22%20height%3D%22160%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%224%22%20value%3D%22Software%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22380%22%20y%3D%22520%22%20width%3D%22160%22%20height%3D%22160%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%225%22%20value%3D%22Database%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22710%22%20y%3D%22300%22%20width%3D%22160%22%20height%3D%22160%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%226%22%20value%3D%22Intelligence%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22230%22%20y%3D%22150%22%20width%3D%22160%22%20height%3D%22160%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%227%22%20value%3D%22Storage%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22620%22%20y%3D%22130%22%20width%3D%22160%22%20height%3D%22160%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%228%22%20value%3D%22Networking%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22620%22%20y%3D%22470%22%20width%3D%22160%22%20height%3D%22160%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%229%22%20value%3D%22Analytics%22%20style%3D%22ellipse%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Brounded%3D0%3Bshadow%3D0%3Bdashed%3D0%3Bcomic%3D0%3BfontFamily%3DVerdana%3BfontSize%3D22%3BfontColor%3D%230069D1%3BfillColor%3D%23f5f5f5%3BstrokeColor%3D%23666666%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22200%22%20y%3D%22380%22%20width%3D%22160%22%20height%3D%22160%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E

Configuration Management Tools

 




Sunday, January 9, 2022

Building an base image (Amazon Machine Image (AMI)) using Packer

 Requirement:

Create and upload a new ubuntu image (AMI) in amazon cloud using packer and version control.

Steps Involved: 

  1. Create a free-tier account with aws.amazon.com
  2. Install packer in your local system
  3. Configure the aws user account to authenticate from packer
  4. Define and Create the base config for building a base image using package HCP format
  5. Run the packer utility and pass the config file.
  6. Validate the first base image in was management console.

How to install brew command-line utility in macOS

Requirement:

In order to install packages in macOS , we use "brew" command-line utility.

Installation Steps:

For installing "brew" utility follow below steps:

  1. (As a normal user) Download the install.sh script
    • curl -O https://raw.githubusercontent.com/Homebrew/install/master/install.sh
  2. (Provide execute permission to the downloaded script file install.sh)
    • chmod +x ./install.sh
  3. (Start the script execution)
    • ./install.sh
  4. (Add the default Homebrew install path to default .zprofile)
    • echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/$USER/.zprofile

    • eval "$(/opt/homebrew/bin/brew shellenv)"
Finally execute the command brew help and test the installation

Sunday, December 26, 2021

How to make a user part of group in macOS Big Sur 11.6

Scenario: You are using the MacBook (with macOS Big Sur 11.6) for the first time and you wanted to install "brew" (or) "wget" (or) any other command-line utility

Let's consider user name is "webuser" and you wanted to make this user part of a "wheel" group to execute sudo commands. Use the command "dseditgroup"

$ (Run the command as root user in macOS)

$ dseditgroup -o edit -a webuser -t user wheel

o: Operation - read, create, edit, delete , checknumber 

a: Name of the record to be added to the group specified by group name

t: Type of record to be added to or deleted from group specified by groupname. Valid values are user, computer , group or computergroup

wheel: groupname

Monday, December 21, 2020

DevOps | Automation | Migration :: Subversion (SVN) to GitHub Enterprise Migration with 500GB+ data and 50,000+ Commits.

 

Subversion is a Centralized Version Control system and GitHub Enterprise is distributed version control system.

In one of the project I recently lead the team for migrating code-base with over 10+yrs old application code-base of 500+GB data of telecom software application, including commit history from legacy SVN to Enterprise grade GitHub. Supported in validating the workflow with muti-project dependencies for over 46+ components successfully.Some of features used are described briefly below:-


SVN:


  1. SVN Externals was handling multi-module project dependencies in Subversion.
  2. All the artifacts of the application code base were directly stored in Subversion server.


GitHub Enterprise:


  1. GitHub was used to version control code/config or human readable file format. The maximum file size it supported was 100MB as de facto standard.
  2. Binaries/Artifacts were version controlled using GitLFS (Long File Storage)
  3. Multi-project dependencies were handled by Git Sub-module


Bridging of SVN and GitHub:


  1. git-svn utility was used to convert the SVN revision no based commits to GitHub Commit SHA-IDs
  2. Shell Script was used to handle preparation of authors file , import of SVN data and upload to GitHub
  3. GitHub API integration with Terraform were used for handling org/repo/team/GitHub branch protection.
  4. "git svn rebase" operation can be used to migrate the delta changes over a period of time.
  5. Jenkins Automation Server configuration to migrate SVN jobs to GitHub.


Developer Validation:


  1. sourcetree from Atlassian is best suited tool for - integrating GitHub/GitLFS/Git Submodule as a one stop solution.
  2. Sourcetree tool supports GitHub , GitHub Enterprise , GitLab and Bit Bucket

I hope the post will be useful for folks working in DevOps and Managing the software version control using SVN and if you have any plan in pipeline to migrate to GitHub Enterprise.


Challenges:


  1. Migration from SVN to GitHub was not free from challenges, we had quite a bunch in managing SVN index data generated from git-svn utility.
  2. We had commit history ranging from 100 to 50,000+ commits and it took days to migrate a specific telecom product releases.
  3. git-filter branch utility was used to clear index data reference, matching false positive files which blocked the migration or push operation to GitHub Enterprise repositories. 

 

I would like to hear your experience if you have been going through any issues in your SVN migration activity  and love to support if you have face any challenges.

 

References:

  1. https://www.sourcetreeapp.com/  - Free Sourcetree tool
  2. https://www.atlassian.com/git/tutorials/migrating-convert - git-svn utility
  3. https://www.hashicorp.com/blog/managing-github-with-terraform - GitHub API and Terraform onboarding