DevOps Tools Flashcards
What is your favorite scripting language for DevOps?
In DevOps, we use different scripting languages for different purposes. There is no single language that can work in all the scenarios. Some of the popular scripting languages that we use are as follows:
I. Bash: On Unix based systems we use Bash shell scripting for automating tasks.
II. Python: For complicated programming and large modules we use Python. We can easily use a wide variety of standard libraries with Python.
III. Groovy: This is a Java based scripting language. We need JVM installed in an environment to use Groovy. It is very powerful and it provides very powerful features.
IV. Perl: This is another language that is very useful for text parsing. We use it in web applications.
What is Multi-factor authentication?
In security implementation, we use Multi-factor authentication (MFA). In MFA, a user is authenticated by multiple means before giving access to a resource or service. It is different from simple user/password based authentication.
The most popular implementation of MFA is Two-factor authentication. In most of the organizations, we use username/password and an RSA token as two factors for authentication.
With MFA, the system becomes more secure and it cannot be easily hacked.
What are the main benefits of Nagios?
Nagios is open source software to monitor systems, networks and infrastructure. The main benefits of Nagios are as follows:
I. Monitor: DevOps can configure Nagios to monitor IT infrastructure components, system metrics and network protocols.
II. Alert: Nagios will send alerts when a critical component in infrastructure fails.
III. Response: DevOps acknowledges alerts and takes corrective actions.
IV. Report: Periodically Nagios can publish/send reports on outages, events and SLAs etc.
V. Maintenance: During maintenance windows, we can also disable alerts.
VI. Planning: Based on past data, Nagios helps in infrastructure planning and upgrades.
What are the main features of Nagios?
Some of the main features of Nagios are as follows:
I. Visibility: Nagios provides a centralized view of the entire IT infrastructure.
II. Monitoring: We can monitor all the mission critical infrastructure components with Nagios.
III. Proactive Planning: With Capacity Planning and Trending we can proactively plan to scale up or scale down the infrastructure.
IV. Extendable: Nagios is extendable to a third party tools in APIs.
V. Multi-tenant: Nagios supports multi-tenants architecture.
What is Puppet?
Puppet Enterprise is a DevOps software platform that is used for automation of infrastructure operations. It runs on Unix as well as on Windows.
We can define system configuration by using Puppet’s language or Ruby DSL.
The system configuration described in Puppet’s language can be distributed to a target system by using REST API calls.
What is the use of Kubernetes?
We use Kubernetes for automation of large-scale deployment of Containerized applications.
It is an open source system based on concepts similar to Google’s deployment process of millions of containers.
It can be used on cloud, on-premise datacenter and hybrid infrastructure.
In Kubernetes we can create a cluster of servers that are connected to work as a single unit. We can deploy a containerized application to all the servers in a cluster without specifying the machine name.
We have to package applications in such a way that they do not depend on a specific host.
What is the architecture of Kubernetes?
The architecture of Kubernetes consists of following components:
Master: There is a master node that is responsible for managing the cluster. Master performs following functions in a cluster.
I. Scheduling Applications
II. Maintaining desired state of applications
III. Scaling applications
IV. Applying updates to applications
Nodes: A Node in Kubernetes is responsible for running an application. The Node can be a Virtual Machine or a Computer in the cluster. There is software called Kubelet on each node. This software is used for managing the node and communicating with the Master node in cluster.
There is a Kubernetes API that is used by Nodes to communicate with the Master. When we deploy an application on Kubernetes, we request Master to start application containers on Nodes.
Why Automated Testing is a must requirement for DevOps?
In DevOps approach we release software with high frequency to production. We have to run tests to gain confidence on the quality of software deliverables.
Running tests manually is a time taking process. Therefore, we first prepare automation tests and then deliver software. This ensures that we catch any defects early in our process.
What is Chaos Monkey in DevOps?
Chaos Monkey is a concept made popular by Netflix. In Chaos Monkey, we intentionally try to shut down the services or create failures. By failing one or more services, we test the reliability and recovery mechanism of the Production architecture.
It checks whether our applications and deployment have survival strategy built into it or not.
How do you perform Test Automation in DevOps?
We use Jenkins to create automated flows to run Automation tests. The first part of test automation is to develop test strategy and test cases. Once automation test cases are ready for an application, we have to plug these into each Build run.
In each Build we run Unit tests, Integration tests and Functional tests.
With a Jenkins job, we can automate all these tasks. Once all the automated tests pass, we consider the build as green. This helps in deployment and release processes to build confidence on the application software.
What are the main services of AWS that you have used?
We use following main services of AWS in our environment:
I. EC2: This is the Elastic Compute Cloud by Amazon. It is used in providing computing capability to a system. We can use it in places of our standalone servers. We can deploy different kinds of applications on EC2.
II. S3: We use S3 in Amazon for our storage needs.
III. DynamoDB: We use DynamoDB in AWS for storing data in NoSQL database form.
IV. Amazon CloudWatch: We use CloudWatch to monitor our application in Cloud.
V. Amazon SNS: We use Simple Notification Service to inform users about any issues in Production environment.
Why GIT is considered better than CVS for version control system?
GIT is a distributed system. In GIT, any person can create its own branch and start checking in the code. Once the code is tested, it is merged into main GIT repo. IN between, Dev, QA and product can validate the implementation of that code.
In CVS, there is a centralized system that maintains all the commits and changes.
GIT is open source software and there are plenty of extensions in GIT for use by our teams.
What is the difference between a Container and a Virtual Machine?
We need to select an Operating System (OS) to get a specific Virtual Machine (VM). VM provides full OS to an application for running in a virtualized environment.
A Container uses APIs of an Operating System (OS) to provide runtime environment to an application.
A Container is very lightweight in comparison with a VM.
VM provides higher level of security compared to a Container.
A Container just provides the APIs that are required by the application.
What is Serverless architecture?
Serverless Architecture is a term that refers to following:
I. An Application that depends on a third-party service.
II. An Application in which Code is run on ephemeral containers.
In AWS, Lambda is a popular service to implement Serverless architecture.
Another concept in Serverless Architecture is to treat code as a service or Function as a Service (FAAS). We just write code that can be run on any environment or server without the need of specifying which server should be used to run this code.
What are the main principles of DevOps?
DevOps is different from Technical Operations. It has following main principles:
I. Incremental: In DevOps we aim to incrementally release software to production. We do releases to production more often than Waterfall approach of one large release.
II. Automated: To make releases more often, we automate the operations from Code Check in to deployment in Production.
III. Collaborative: DevOps is not only responsible of the Operations team. It is a collaborative effort of Dev, QA, Release and DevOps teams.
IV. Iterative: DevOps is based on Iterative principle of using a process that is repeatable. But with each iteration we aim to make the process more efficient and better.
V. Self-Service: In DevOps, we automate things and give self-service options to other teams so that they are empowered to deliver the work in their domain.