Sumedh Meshram

A Personal Blog

DevOps: The Journey So Far and What Lies Ahead

If you have been in the IT industry for over 10 years, I am sure you have seen the evolution and massive transformation DevOps brought in as organizations continue to shift from optimizing for the cost to optimizing for speed, and that shift is exponentially increasing its pace to adopt DevOps. Today, when I see life before and after DevOps, I can easily see that some terminologies have been changed in our daily life primarily because of DevOps adoption.

a) Manual => Automated

b) Physical Datacenter => Virtual Private Cloud

c) Outages => High Availability/Zero downtime

d) Enterprise/Web archives => Containers

and the list goes on and on…

DevOps, which started as a buzzword, is now becoming a standard for every organization in order to meet the demands of time to market and release better products to stay ahead of the competition, and that’s the reason big names like Google, Netflix, Amazon, and Facebook are heavily investing in it and have experienced the value coming out of it.

So, what exactly has DevOps changed?

No More Working in Silos

DevOps has improved the software development culture and mindset. Welcoming new changes, blameless culture, transparency, accountability, embracing failures, right collaborations, and communication between different teams are some of the keys organizations have enabled to successfully unlock DevOps culture.

Time to Market

DevOps enables organizations to develop and deploy software faster and more efficiently enabled by an end-to-end automated and integrated process using CI/CD pipelines. Continuous Delivery allows developers to continuously roll out tested code that is always in a production-ready state and can be released to production based on business approval. As soon as a new feature or story is complete, the code is immediately available for deployment to test environment, UAT, or production.

DevOps-as-Code

Over the last few years, there has been a tremendous development on how automation has been done. Pipeline-as-Code to automate CI/CD pipelines, Config-as-Code to manage configurations and orchestration tasks, Infrastructure-as-Code to automate environment provisioning are gaining momentum. Languages like Groovy and Python where the core OOPS concepts are required are being used for most of the automation. Also, unit test cases are written for every automation to validate their code similar to how application development tests their code. This has enabled and encourages many application developers to understand DevOps workflows holistically, gain expertise, and contribute, which was earlier mere a black box for them.

Software Killed Hardware

Gone were the days when sysadmins were heavily involved in receiving new hardware, and then setting and configuring new servers with each server having a custom configuration. Today the servers, network, firewalls, load balancers, and everything else is virtual, living somewhere at Amazon or Google or Microsoft. Today, you write software to provision, manage and decommission infrastructure. Upgrading resources to a new server, adding identical servers, securing infrastructure are all driven by software.

Containers and Microservices to Maximize Deployment Velocity

Microservices have enabled developers to have the freedom to make changes to one service, create a Docker image, and deploy it independently without impacting other services in the system. If there is an issue in any service, it can easily be isolated to one single service so that a fast rollback can be made easily. This speed of deployment with minimal risk is the primary reason why organizations like Netflix and Amazon have adopted microservices-based architectures, ensuring they are eliminating as many bottlenecks as possible to release the application to end users. Platform-as-a-Service tools like Amazon ECS, Google Kubernetes, and Redhat OpenShift have helped enterprises to adapt to microservices architecture and migrating their existing applications to microservices and dockerized in production.

Cloud Encourages the Birth of Many Startup Businesses

Cloud computing provides an added advantage to the start-up business. Businesses previously required heavy time and money for housing, powering, and cooling infrastructure. With the cloud, there are limited upfront capital costs as it provides the ability to match revenue with expenses since you pay only for the resources you use. For a festive season or other cases of peak traffic, you can easily scale up and down your infrastructure.

DevOps Predictions

With technology evolving at a rapid pace, DevOps will continue to gain momentum and break barriers. Here are high-level predictions what lies ahead in DevOps world.

Cloud Migration

Cloud adoption will continue to evolve. New startup businesses are already adopting cloud for hosting their applications. There has been a substantial increase in the big enterprise giants who migrated their physical data centre to the cloud and this trend will continue to gain momentum for their survival.

Continuous Deployment Is So Close, Yet So Far

While continuous integration and continuous delivery practices have enabled organizations to release new features to the market in the most efficient way, there are hardly any buyers who want to adopt continuous deployment. Product-based companies like Amazon and Netflix are making frequent strides with continuous deployment, but financial firms are still focused on having a robust application and infrastructure with performance and security being their primary areas, with the desire to release features to market using a manual trigger.

Serverless Computing

Renowned training company A Cloud Guru is running their application on serverless architecture. There are no infrastructure costs they have to pay, as they pay based on the number of visits they get to their course content. This allows them to offer their courses cheaply, which also provides them with an added competitive advantage as compared to their competitors. AWS Lambda, Google Cloud Functions, Azure Functions are all examples of Function-as-a-Service platforms that support serverless architecture. The only concerns many IT leaders shared are their fears over vendor lock-in. Choosing a cross-vendor programming language and adopting standardized services over fully managed services provided OOTB by cloud provider are two ways to avoid vendor lock-in fear when adopting serverless architecture.

DevSecOps 

Security is going to play a major role as more and more applications will be migrated to the cloud. Whether it’s an application, VM, container or an entire network, one needs to understand the entire process and lifecycle and ensure there is no corner left for any vulnerability for an outsider to hack into your application or your system and this can be achieved only when you integrate all flavours of security testing in your DevOps process.

SRE for Service Management

In general, an SRE team’s responsibility is to ensure the service is available all the time, and that application health and monitoring and emergency response that has been done by the Ops team. However, this is changing and organizations are looking for engineers who can code as well and take care of ops. For example, Google has put a cap of 50% on the overall ops work for all SREs and in the remaining 50% of the time, SREs are actually doing development. They found this model has many advantages as SREs are directly modifying code, building and supporting the system, and bridging the gap between the product development teams and SREs during cross training of new features release.

Cognitive DevOps

Cognitive DevOps will excel in developing an automated system that should be capable of resolving problems and providing solutions without any human intervention. It uses machine learning algorithms that will help deal with the real-time challenges faced in DevOps by gathering and analyzing data across different environments which will eventually lead to smooth and error-free releases. IT operations analytics, network performance analytics, security analytics, application performance management, digital performance management, and algorithmic IT operations are some of the key areas vendors are targeting to implement cognitive operations in the journey to move from DevOps to NoOps.

I would like to summarize this blog by stating that technology is changing at a very rapid pace and DevOps is fueling the demand with its workflows, tools, and practices. With so much already achieved in the last decade and so much to achieve in years to come, the DevOps journey ahead will be exciting and full of surprises.

Useful Git Commands

Git is a most widely used and powerful version control system for tracking changes in computer files and coordinating work on those files among multiple people. It is primarily used for source code management in software development, but it can be used to keep track of changes in any set of files.

Git was developed by Linus Torvalds in 2005 as a distributed open source software version control software and of course, it is free to use. As a distributed revision control system it is aimed at speed, data integrity, and support for distributed, non-linear workflows.

While other version control systems e.g. CVS, SVN keeps most of their data like commit logs on the central server, every git repository on every computer is a full-fledged repository with complete history and full version tracking abilities, independent of network access or a central server.

However, almost all IDEs support git out of the box and we do not require to submit the git commands manually but it is always good to understand these commands. Below is a list of some git commands to work efficiently with Git.

Git Help

The most useful command in git is git help which provides us with all the help we require. If we type git helpin terminal, we will get:

 
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
 
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
 
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
 
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
 
           <command> [<args>]
 
 
These are common Git commands used in various situations:
 
 
start a working area (see also: git help tutorial)
 
   clone      Clone a repository into a new directory
 
   init       Create an empty Git repository or reinitialize an existing one
 
 
work on the current change (see also: git help everyday)
 
   add        Add file contents to the index
 
   mv         Move or rename a file, a directory, or a symlink
 
   reset      Reset current HEAD to the specified state
 
   rm         Remove files from the working tree and from the index
 
 
examine the history and state (see also: git help revisions)
 
   bisect     Use binary search to find the commit that introduced a bug
 
   grep       Print lines matching a pattern
 
   log        Show commit logs
 
   show       Show various types of objects
 
   status     Show the working tree status
 
 
grow, mark and tweak your common history
 
   branch     List, create, or delete branches
 
   checkout   Switch branches or restore working tree files
 
   commit     Record changes to the repository
 
   diff       Show changes between commits, commit and working tree, etc
 
   merge      Join two or more development histories together
 
   rebase     Reapply commits on top of another base tip
 
   tag        Create, list, delete or verify a tag object signed with GPG
 
 
collaborate (see also: git help workflows)
 
   fetch      Download objects and refs from another repository
 
   pull       Fetch from and integrate with another repository or a local branch
 
   push       Update remote refs along with associated objects
 
 
'git help -a' and 'git help -g' list available sub-commands and some concept guides.
 
See 'git help <command>' or 'git help <concept>' to read about a specific sub-command or concept.
 


Command git help -a will give us a complete list of git commands:

 
Available git commands in '/usr/local/git/libexec/git-core'
 
  add                     gc                      receive-pack
 
  add--interactive        get-tar-commit-id       reflog
 
  am                      grep                    remote
 
  annotate                gui                     remote-ext
 
  apply                   gui--askpass            remote-fd
 
  archimport              gui--askyesno           remote-ftp
 
  archive                 gui.tcl                 remote-ftps
 
  askpass                 hash-object             remote-http
 
  bisect                  help                    remote-https
 
  bisect--helper          http-backend            repack
 
  blame                   http-fetch              replace
 
  branch                  http-push               request-pull
 
  bundle                  imap-send               rerere
 
  cat-file                index-pack              reset
 
  check-attr              init                    rev-list
 
  check-ignore            init-db                 rev-parse
 
  check-mailmap           instaweb                revert
 
  check-ref-format        interpret-trailers      rm
 
  checkout                log                     send-email
 
  checkout-index          ls-files                send-pack
 
  cherry                  ls-remote               sh-i18n--envsubst
 
  cherry-pick             ls-tree                 shortlog
 
  citool                  mailinfo                show
 
  clean                   mailsplit               show-branch
 
  clone                   merge                   show-index
 
  column                  merge-base              show-ref
 
  commit                  merge-file              stage
 
  commit-tree             merge-index             stash
 
  config                  merge-octopus           status
 
  count-objects           merge-one-file          stripspace
 
  credential              merge-ours              submodule
 
  credential-manager      merge-recursive         submodule--helper
 
  credential-store        merge-resolve           subtree
 
  credential-wincred      merge-subtree           svn
 
  cvsexportcommit         merge-tree              symbolic-ref
 
  cvsimport               mergetool               tag
 
  daemon                  mktag                   unpack-file
 
  describe                mktree                  unpack-objects
 
  diff                    mv                      update
 
  diff-files              name-rev                update-git-for-windows
 
  diff-index              notes                   update-index
 
  diff-tree               p4                      update-ref
 
  difftool                pack-objects            update-server-info
 
  difftool--helper        pack-redundant          upload-archive
 
  fast-export             pack-refs               upload-pack
 
  fast-import             patch-id                var
 
  fetch                   prune                   verify-commit
 
  fetch-pack              prune-packed            verify-pack
 
  filter-branch           pull                    verify-tag
 
  fmt-merge-msg           push                    web--browse
 
  for-each-ref            quiltimport             whatchanged
 
  format-patch            read-tree               worktree
 
  fsck                    rebase                  write-tree
 
  fsck-objects            rebase--helper
 


And command git help -g will give us a list git concepts which git think is good for us:

 
The common Git guides are:
 
 
   attributes   Defining attributes per path
 
   everyday     Everyday Git With 20 Commands Or So
 
   glossary     A Git glossary
 
   ignore       Specifies intentionally untracked files to ignore
 
   modules      Defining submodule properties
 
   revisions    Specifying revisions and ranges for Git
 
   tutorial     A tutorial introduction to Git (for version 1.5.1 or newer)
 
   workflows    An overview of recommended workflows with Git
 


We can use git help <command> or git help <concept> command to know more about a specific command or concept.

Git Configuration

Image title

 

Git Commit and Push

Image title

 

Git Checkout And Pull

Image title

 

Git Branch

Image title

 

Git Cleaning

Image title

 

Other Git Commands

Image title

Cheap MLB Jerseys maillot de foot pas cher www.fotballdrakter.org