Tuesday, January 31, 2017

Cloud Platform - Jenkins and Docker


Cloud platform has made the way for programmable infrastructure, which brought automation into SDLC. The ability to make provision of resources, configuring them dynamically, deploying applications and monitoring the entire process have led to the DevOps culture where developers and the operators are collaborating throughout the application delivery lifecycle.

Chef, Puppet, and Ansible are best of the tools for provisioning and configuration. Another software that is crucial for success of DevOps is Jenkins.

Application build, followed by packaging and deployment play a crucial role in release & configuration management. Developers relied on tools like Ant, Maven to compile. Jenkins comes to the rescue of Dev teams. By automating the build process, Jenkins can well coordinate complex workflows required by teams. By integrating with the source code control system, Jenkins can invoke multiple build processes targeting different environments. The output of this process would result in a set of executables exes, or jar files depending on the platform. Jenkins can invoke simple shell scripts to perform pre-build and post-build tasks. This option enables software like node.js, python to take benefit of build automation.

Docker is a preferred environment for software development and testing. DevOps teams find it to more be efficient to configure development and test environments based on Docker. So, instead of deploying the final set of artifacts such as exe / jar files to the target environment, ops teams can now package the entire application as a Docker Image. This image shares the same build version tag before being published to a central registry. It can then be picked up by various environments viz development, testing, and production for final deployment.

DevOps teams are greatly helped by using combination of Jenkins and Docker. The tight integration with source code control mechanisms such as Git, Jenkins can initiate a build process each time a developer commits his code. This process results in a new Docker image which is instantly available across environments.

You cannot ignore Docker, it’s time to include it in the DevOps strategy.


Friday, January 13, 2017

Dev Vs Ops

The Dev

Developers build software and deliver changes quickly, while the IT operations give priority on stability and reliability of the system. This mismatch of goals between the teams in an organisation can lead to conflict, and eventually more cost to the Business.

Developers deliver software after performing testing in development or PTL (path to live) environments. However these systems may not be same as complexly integrated production systems. While doing development, the developers are not really concerned about the production infrastructure as well as the deployment impact due to code changes. 

The Ops

The IT operations (service support) focus majorly on SLAs around uptime and stability. IT ops expect lesser turn around time for code deployment and testing as high volumes of development builds / code changes come their way.

In today’s work these old divisions within organisations are breaking down, with the IT operations and Developer roles merging and following efficient principles like:
  • Automation
  • Continuous deployment
  • Monitoring
  • Security


Benefits of bringing Dev and Ops together

We are here to ENABLE Business. Developers work in collaboration with Operations to impact assess the code change. Developers work more closely with production equivalent environments with similar integration points and live like data. The Operations have better clarity of infrastructure. As a result there is more focus on deployment automation and test automation. Also Monitoring provides more visibility of Dev to Test to Production pipeline for each deployment and better feedback mechanism.

DevOps is an approach to bridge the gap between Agile Software Development and Operations. DevOps doesn’t mean Fire-fighting, DevOps is to help.

Agile and DevOps

In the recent years, the agile software development methodology has started to move downstream towards DevOps. Agile software development primarily focuses on the collaboration between the business requirements and its developers, whereas DevOps focuses on the collaboration between developers and IT operations (DBAs, Network engineers, administrators, infrastructure architects, service support personnel and security). Agile software development provides business the much required agility, DevOps provides IT agility, enabling the deployment of applications that are more reliable, predictable, and cost efficient. With respect to application development, DevOps focuses on development of code, code coverage, unit or component testing, release packaging, and deployment. With respect to infrastructure, on the other hand, DevOps focuses on provisioning, configuration and deployment. Underlying principles include version management, deployment, re-startability, roll back and roll forward.

DevOps is what Agile is to software development


What do we do in DevOps

DevOps can be categorised as C.A.M.S (Culture, Automation, Measurement, Sharing)

Culture:
A successful DevOps is all about people relationships and communication.






Automation:
Machines are really good at doing the same task over and over. Automation guarantees Consistent and Known state. Automation provides Fast and Efficient delivery of products to the business.

What can be Automated?












Measurement

DevOps is an evolving process, hence to evolve there is a need of measurement at every stage to capture the learning's and enable continuous improvement. 
Mesurement assists in

  • Capacity planning
  • Trend analysis
  • Fault finding
  • Plotted on a graph over time

Sharing

Sharing of knowledge base creates redundancy that helps reducing dependencies and increase synergies within the team. Sharing can be in the form of:

  • Share Ideas
  • Share Metrics
  • Ops: Give devs shell access
  • Devs: See what technology can be leveraged

DevOps Lifecycle

Before:

Talk about functional requirements
Talk about non-functional requirements
           – Security
           – Backups
           – Availability
           – Upgradeability
           – Configuration management
           – Monitoring
           – Logging
           – Metrics

During:

           – Communication
           – Source control
           – Automate builds
           – Automate tests
           – Automate deployments (dev, test and production)
           – Collate metrics

After:

Release
          – Retrospective Meetings
          – Continue to Run Tests
          – Monitor Applications and Systems
Issues
          – Post mortem meetings
          – What went wrong, what could be done better

Reduce food wastage with IoT Solution

Ethylene gas is produced by most plants, which use it as a hormone to stimulate growth & ripening . Fruits and flowers under stress can...