Implementing DevOps With Containerization
Cloud and containerization are often two necessary constructs to tackle in the construction of a DevOps environment.
Join the DZone community and get the full member experience.Join For Free
Traditionally, application development, testing, deployment, and support (monitoring) were all treated as separate entities, and multiple departments were involved in the completion of the software lifecycle. This resulted in a fragmented approach to the process, people, and tools, later impacting the final product performance, features, cost, schedules, and quality.
Acceptance of cloud platform as the 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 and 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 vendors. With cloud acceptance, an addition of infrastructure/servers is just a click away which, along with credible open source tools have paved way for Dev-Ops. With open source tools, build, QA, and pre-production machines can be added as exact replicas and configurations as needed, in a fraction of the time.
Automation is the goal. A developer can run, build with choice of open tools, QA team can create a QA system as a replica, latter deploy to production seamlessly and quickly.
Some vendors like SAP HANA and Oracle Exadata have built end-to-end appliances integrating applications, development, Infrastructure, monitoring performance as a 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 a framework with the 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 the Hadoop ecosystem 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 adapt to DevOps.
1) The code should be in a repository (GitHub, Docker Hub)
2) Compile the code and build with Maven
4) Ensure the appropriate plugins are in place for the main languages, like Java, Python, and Ruby.
5) Docker will help to create the container.
6) This container can be ported to different environments
7) AWS/Azure is full-time supporting Dockers, so deployment is simple.
Popular Tools in DevOps
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
Most Frequently Used Tools
Jenkins is a web-enabled tool through the application or a web server like Tomcat, for continuous build, deployment, and testing and can be integrated with build tools like Ant or Maven and source code repository Git.
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 is a DevOps tool that helps businesses to enhance their brand reputation. It provides real-time alerts, easily detects and resolves incidents from development through production, offers real-time collaboration system and user reporting and supports platform extensibility. It is an incident management solution supporting continuous delivery strategy.
Prometheus is an open-source service monitoring system and time series database, powers DevOps teams’ metrics and alerting. It offers support for more than ten languages, and is popular with teams using Grafana.
Docker uses containers that package it all up in a box, the application, and its dependencies. It runs as an isolated process on a host operating system. Sharing the kernel with another container. It enjoys resource isolation and allocation benefits like VMs but is much more portable and efficient.
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 facilitates the deployment automation of workloads through yum scripts based on push mechanism, agentless uses SSH.
Kubernetes is an open source orchestration system for Docker containers. It 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.
Planning The Strategy
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.
This is a unique and extensive program covering every aspect of the software life cycle, which integrates multiple technologies, platforms, tools posing numerous challenges that need to be handled with high skill, precision, and experience.
Published at DZone with permission of Sri Charan V. See the original article here.
Opinions expressed by DZone contributors are their own.