Traditionally, application development, testing, deployment, support (monitoring) were all treated as separate entities, and multiple departments (vendors) were involved in the completion of the software lifecycle. This resulted in a fragmented approach to the process, people, tools, later impacting the final product performance, features, cost, schedules and quality.
Acceptance of cloud platform as de facto service line brought many changes of procuring and managing infrastructure. As a result, Open source tools have earned significant acceptance for each segment of IT function across the world, thereby increasing their popularity and versatility day-by-day.The competitive shift seems visible as there are companies like Oracle, SAP that are also offering Cloud along with Amazon, Google, Salesforce, and Microsoft. There are multiple other cloud companies as well apart from the aforementioned companies. With cloud acceptance, an addition of Infrastructure/servers is just a click away which along with credible open source tools has paved way for Dev-Ops. With open source tools, Build, QA, Pre-prod machines can be added as exact replicas and configurations as needed, in a fraction of the time.
Automation is the goal (no manual intervention) - A developer can run, build with choice of open tools, QA team can create a QA system as replica, latter deploy to production seamlessly and quickly.
Few Vendors like SAP HANA, Oracle Exadata have built end-to-end appliances integrating applications, development, Infrastructure, monitoring performance as one-stop shop for business. However, they are closely coupled and are based on proprietary technology.
Most companies sensing the market potential, opportunity and demand are integrating open source tools (and with cloud too) into a framework to offer business value. Microsoft Azure and OpenShift are designing framework with inclusion of major and popular tools like GIT, Jenkins, Docker etc. They offer end-to-end capability from applications development to monitoring with wide options to choose tools and platforms at each and every step. Linux versions and Windows for platforms, database options from RDBMS to NOSQL, Platform services of Hadoop eco system from different vendors along with open source tool options listed below are selected as combinations from the wide choice.
DevOps is 3C, Code to Container to Cloud Harnessing the power and convenience of DevOps is quite simple too. Whatever language the code is written in, it’s quite easy to adopt to DevOps.
1) The code should be in a repository (GitHub, Docker Hub)
2) Compile the code – Build with Maven
3) Package (Executable)
4) Ensure appropriate Plug-in are in place for the languages Java, Python, Ruby etc.
5) Docker will help to create the container (self-sufficient libraries, compilers etc.)
6) This container can be ported to different environments - Continuous integration – Jenkins/Chef/Puppet etc., depending
7) AWS/Azure is full-time supporting Dockers, so deployment is simple.
Build: Maven/Ant/Make/MS Build
Testing Tools: Junit/Selenium
Repository management: Docker Hub
Continuous Integration: Jenkins, Visual Studio
Configuration management: Chef/Puppet/Ansible/salt
Containers: Docker, Kubernetes
Collaboration: Jira, Team foundation, slack
BI/Monitoring: Kibana, Elasticsearch, Nagios
Jenkins: Web-enabled tool through application or web server like Tomcat, for continuous build, deployment, testing – integrated with build tools like Ant/Maven etc. and source code repository Git, it also has mastered and dump slaves etc.
Vagrant: A Vagrant is a tool that helps DevOps teams to create and configure lightweight, reproducible, and portable development environments. It also features easy-to-use workflows and focuses on automation, saving DevOps teams time in setting up development environments.
PagerDuty: DevOps tool that helps businesses to enhance their brand reputation. Provides real-time alerts, easily detects and resolves incidents from development through production, offers real-time collaboration system & user reporting and supports Platform Extensibility. It is an incident management solution supporting continuous delivery strategy.
Prometheus: An open-source service monitoring system and time series database, powers DevOps teams’ metrics and alerting. Offers support for more than ten languages, popular with teams using Grafana.
Docker: Container comprises package it all up in a box, the application, and its dependencies. It runs as an isolated process on host operating system. Sharing the kernel with another container. It enjoys resource isolation and allocation benefits like VM’s but is much more portable and efficient.
GitHub: Git is a popular open source version control system. It’s a web-based hosted service for Git repositories. GitHub allows you to host remote Git repositories and has a wealth of community-based services that make it ideal for open source projects.
Ansible towers: Deployment automation of workloads. It's though yum scripts based on push mechanism, agentless uses SSH.
Chef and Puppet are agent-based pull mechanism for deployment automation of work units.
Kubernetes: Open source orchestration system for Docker containers. Groups containers into logical units for easy management and discovery handles Scheduling on nodes and actively manages workloads to ensure their state matches users declared intentions.
An organization can consider the introduction of selected tools to cater to a specific purpose or can choose to implement a framework like OpenShift or Azure with pre-configured tools, integrated into frameworks. Like
Automating infrastructure, workflows configuration management
Continuously measuring application performance.
Automate code repository, build, testing, workflows, deployment
Virtualization, Containerization, load balancing
Full Stack - OpenShift stackv3 with below framework
Standard containers API - (XPaas+Docker Hub + Marketplace)
Container-optimized OS – Dockers
Web-scale orchestration - (Kubernetes)
Expanded choice of services - OpenShift
Enhanced developer and operator exp -OpenShift
Industry standard PaaS Stack -(RHEL+Atomic)
This is a unique and extensive program covering every aspect of software life cycle, which integrates multiple technologies, platforms, tools posing numerous challenges that need to be handled with high skill, precision and experience.