DevOps and Tools…
DevOps refers to the methodology and strategy used to introduce automation to an environment. This will ensure that a project is delivered efficiently and effectively.
To achieve this, certain tools are employed and certain principles and practices are adopted. Want to know the tools and how to set them up? Click on the links provided for the tools you want. Interested in learning DevOps? Check out the DevOps Made Easy program.
The Cloud Infrastructure…
Lately, more and more organizations are embracing the cloud because of the many benefits it offers over maintaining on-site servers. Can you tell how many vendors have thrived in this space? Many, including Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, IBM Cloud, and many others. Do you want to create accounts or register as users on the foregoing cloud platforms? The following links should help you: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, and IBM Cloud.
Now, we have cloud platforms! There is a need to gain access to them using SSH tools like MobaXterm, Git Bash, iTerm2 (successor to iTerm and replacement for Terminal on macOS), PowerShell, and many more.
Oh! You may need to transfer files or resources from server to server, you will need FTP tools. What is FTP? Easy one, FTP is the acronym for File Transfer Protocol. I use the “scp” command most of the time. However, if you don’t want to use that, you have Filezilla, WinSCP, PuTTY, and PuTTYgen at your beck and call.
IaC Tools…
Servers and resources could be created one by one. However, there may be requirements for many servers to be created. Who would want to create 100 servers, one at a time when a script could be written to create all 100 servers simultaneously? The relevance of IAC tools cannot be over-emphasized. Popular infrastructure provisioning tools include Terraform and CloudFormation.
“Configuration management” is to “infrastructure provisioning” just as butter is to bread. When you create 100 servers with an infrastructure provisioning tool, you want to install applications on all 100 servers using a configuration management tool like Ansible, Chef, or Puppet. You cannot just afford to do this one by one.
Application Development…
Are you in the business of writing codes or maintaining them? Either way, you need code repositories for storing different versions of codes remotely. GitHub, GitLab, and BitBucket are popular. However, there are many others too.
Several languages are used in writing codes for software development. Some of the most popular languages include Python, Java, NodeJS, and JavaScript. Nevertheless, there are many more languages that cannot be listed in this post.
Although, codes can be written anywhere including a notepad or a piece of paper. However, developers and DevOps professionals will use code editors and Integrated Development Environments like Notepad ++, Visual Studio Code, Eclipse, PyCharm, and IntelliJ IDEA to code smartly, efficiently, and effectively. Software Development Kit like JDK is also employed.
The Build Process…
Depending on the programming language, a compatible build tool will be used for the build. Java-based applications will for example use Ant, Maven, or Gradle. While Python-based applications and NodeJS-based applications use PyBuilder and NPM respectively.
Is code quality important to you? If you want to check for code coverage, duplications, and vulnerability, you should employ some code-quality analyzers and Static Application Security Testing Tools like SonarQube, and SonarCloud. Otherwise, do nothing! Aha… I know that is not a choice.
For disaster management, backing up artifacts is very important. Hence, the relevance of artifact repositories like Nexus, and JFrog,
The Deployment Process…
Application deployment is very important. Web-based applications may be deployed in application servers like Tomcat, or JBoss/Wildfly. On the other hand, enterprise-based applications will be deployed in an application server like JBoss/Wildfly.
The web servers will be at the presentation tier of the three-tier architecture. Some commonly used web servers are Apache HTTP Server, and Nginx
The DevOps methodology involves the introduction of automation into the environment. Hence, CICD Tools Jenkins, Azure DevOps, and UrbanCode are used to set up pipelines that will automate the build and deploy processes.
Pipelines will typically be scripted to make it possible for the codes to be reusable. Apache Groovy is used for writing Jenkinsfile and setting up pipelines using Jenkins.
With micro-services architecture getting more and more popular, containerization is the only way to optimize resources. Would you instead set up micro-services on multiple servers and end up wasting resources? I would instead use a containerization tool like Docker to package my application together with the base application and other dependencies.
Images are stored in container repositories like DockerHub, Nexus, Elastic Container Registry, Azure Container Registry, and Google Container Registry. Containers can be created and started as required from those images.
Do you know that containerization alone is not sufficient? Hence, the need for container orchestration tools. Container Orchestration Tools like Kubernetes, Openshift, Mesos, and Docker Swarm are used for deploying containerized applications. These tools achieve high availability, fault tolerance, scalability, and reliability.
The Data-Tier Architecture…
If your requirement is to work on database servers, some include MongoDB and PostgreSQL DB Server. There are many more that can be considered. Hence, the existence of many database tools or clients including SQL Workbench, and DBeaver.
Collaboration is key in the software development/project lifecycle. Phone calls, emails, or SMS are not so effective. Hence, the need to adopt tools like Slack, and Discord for effective collaboration.
The Post-Deployment Monitoring…
Don’t you want to know if the project is a success? Infrastructure monitoring and application performance monitoring are key to ensuring that the application or project is working as desired. However, this cannot be effectively achieved manually. Hence, tools like New Relic, Grafana, Site24X7, AppDynamics, and Nagios will help achieve automated monitoring.
Other important tools include Virtual Box, VMWare, and Vagrant for virtualization; Vault for secrets holding; and Packer for VM image creation.
But wanna say that this really is quite helpful. Thanks for taking the time to write this.
Thank you very much for your kind words.
This was beautiful Admin. Thank you for your reflections.
Thank you bambuslot!
Quality contents.
I will surely come again again.
Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.