DevOps Tools Flashcards

1
Q

What is your favorite scripting language for DevOps?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is Multi-factor authentication?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are the main benefits of Nagios?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the main features of Nagios?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is Puppet?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is the use of Kubernetes?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is the architecture of Kubernetes?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Why Automated Testing is a must requirement for DevOps?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is Chaos Monkey in DevOps?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

How do you perform Test Automation in DevOps?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the main services of AWS that you have used?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Why GIT is considered better than CVS for version control system?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is the difference between a Container and a Virtual Machine?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is Serverless architecture?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are the main principles of DevOps?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Are you more Dev or more Ops?

A

This is a tricky question. DevOps is a new concept and in any organization the maturity of DevOps varies from highly Operations oriented to highly DevOps oriented. In some projects teams are very mature and practice DevOps in it true form. In some projects, teams rely more on Operations team.

As a DevOps person I give first priority to the needs of an organization and project. At some times I may have to perform a lot of operations work. But with each iteration, I aim to bring DevOps changes incrementally to an organization.

Over time, organization/project starts seeing results of DevOps practices and embraces it fully.

17
Q

What is a REST service?

A

REST is also known as Representational State Transfer. A REST service is a simple software functionality that is available over HTTP protocol. It is a lightweight service that is widely available due to the popularity of HTTP protocol.

Sine REST is lightweight; it has very good performance in a software system. It is also one of the foundations for creating highly scalable systems that provide a service to large number of clients.

Another key feature of a REST service is that as long as the interface is kept same, we can change the underlying implementation. E.g. Clients of REST service can keep calling the same service while we change the implementation from php to Java.

18
Q

What are the Three Ways of DevOps?

A

Three Ways of DevOps refers to three basic principles of DevOps culture. These are as follows:

I. The First Way: Systems Thinking: In this principle we see the DevOps as a flow of work from left to right. This is the time taken from Code check in to the feature being released to End customer. In DevOps culture we try to identify the bottlenecks in this.

II. The Second Way: Feedback Loops: Whenever there is an issue in production it is a feedback about the whole development and deployment process. We try to make the feedback loop more efficient so that teams can get the feedback much faster. It is a way of catching defect much earlier in process than it being reported by customer.

III. The Third Way: Continuous Learning: We make use of first and second way principles to keep on making improvements in the overall process. This is the third principle in which over the time we make the process and our operations highly efficient, automated and error free by continuously improving them.

19
Q

How do you apply DevOps principles to make system Secure?

A

Security of a system is one of the most important goals for an organization. We use following ways to apply DevOps to security.

I. Automated Security Testing: We automate and integrate Security testing techniques for Software Penetration testing and Fuzz testing in software development process.

II. Early Security Checks: We ensure that teams know about the security concerns at the beginning of a project, rather than at the end of delivery. It is achieved by conducting Security trainings and knowledge sharing sessions.

III. Standard Process: At DevOps we try to follow standard deployment and development process that has already gone through security audits. This helps in minimizing the introduction of any new security loopholes due to change in the standard process.

20
Q

What is Self-testing Code?

A

Self-testing Code is an important feature of DevOps culture. In DevOps culture, development team members are expected to write self-testing code. It means we have to write code along with the tests that can test this code. Once the test passes, we feel confident to release the code.

If we get an issue in production, we first write an automation test to validate that the issue happens in current release. Once the issue in release code is fixed, we run the same test to validate that the defect is not there. With each release we keep running these tests so that the issue does not appear anymore.

One of the techniques of writing Self-testing code is Test Driven Development (TDD).

21
Q

What is a Deployment Pipeline?

A

A Deployment Pipeline is an important concept in Continuous Delivery. In Deployment Pipeline we break the build process into distinct stages. In each stage we get the feedback to move onto the next stage.

It is a collaborative effort between various groups involved in delivering software development. Often the first stage in Deployment Pipeline is compiling the code and converting into binaries.
After that we run the automated tests. Depending on the scenario, there are stages like performance testing, security check, usability testing etc in a Deployment Pipeline.

In DevOps, our aim is to automate all the stages of Deployment Pipeline. With a smooth running Deployment Pipeline, we can achieve the goal of Continuous Delivery.

22
Q

What are the main features of Docker Hub?

A

Docker Hub provides following main features:

I. Image Repositories: In Docker Hub we can push, pull, find and manage Docker Images. It is a big library that has images from community, official as well as private sources.

II. Automated Builds: We can use Docker Hub to create new images by making changes to source code repository of the image.

III. Webhooks: With Webhooks in Docker Hub we can trigger actions that can create and build new images by pushing a change to repository.

IV. Github/Bitbucket integration: Docker Hub also provides integration with Github and Bitbucket systems.

23
Q

What are the security benefits of using Container based system?

A

Some of the main security benefits of using a Container based system are as follows:

I. Segregation: In a Container based system we segregate the applications on different containers. Each application may be running on same host but in a separate container. Each application has access to ports, files and other resources that are provided to it by the container.

II. Transient: In a Container based system, each application is considered as a transient system. It is better than a static system that has fixed environment which can be exposed overtime.

III. Control: We use repeatable scripts to create the containers. This provides us tight control over the software application that we want to deploy and run. It also reduces the risk of unwanted changes in setup that can cause security loopholes.

IV. Security Patch: In a Container based system; we can deploy security patches on multiple containers in a uniform way. Also it is easier to patch a Container with an application update.

24
Q

How many heads can you create in a GIT repository?

A

There can be any number of heads in a GIT repository.

By default there is one head known as HEAD in each repository in GIT.

25
Q

What is a Passive check in Nagios?

A

In Nagios, we can monitor hosts and services by active checks. In addition, Nagios also supports Passive checks that are initiated by external applications.

The results of Passive checks are submitted to Nagios. There are two main use cases of Passive checks:

I. We use Passive checks to monitor asynchronous services that do not give positive result with Active checks at regular intervals of time.

II. We can use Passive checks to monitor services or applications that are located behind a firewall.

26
Q

What are the main benefits of DevOps?

A

DevOps is a very popular trend in Software Development. Some of the main benefits of DevOps are as follows:

I. Release Velocity: DevOps practices help in increasing the release velocity. We can release code to production more often and with more confidence.

II. Development Cycle: With DevOps, the complete Development cycle from initial design to production deployment becomes shorter.

III. Deployment Rollback: In DevOps, we plan for any failure in deployment rollback due to a bug in code or issue in production. This gives confidence in releasing feature without worrying about downtime for rollback.

IV. Defect Detection: With DevOps approach, we can catch defects much earlier than releasing to production. It improves the quality of the software.

V. Recovery from Failure: In case of a failure, we can recover very fast with DevOps process.

VI. Collaboration: With DevOps, collaboration between development and operations professionals increases.

VII. Performance-oriented: With DevOps, organization follows performance-oriented culture in which teams become more productive and more innovative.

27
Q

What are the popular DevOps tools that you use?

A

I. Jenkins: This is an open source automation server used as a continuous integration tool. We can build, deploy and run automated tests with Jenkins.

II. GIT: It is a version control tool used for tracking changes in files and software.

III. Docker: This is a popular tool for containerization of services. It is very useful in Cloud based deployments.

IV. Nagios: We use Nagios for monitoring of IT infrastructure.

V. Splunk: This is a powerful tool for log search as well as monitoring production systems.

VI. Puppet: We use Puppet to automate our DevOps work so that it is reusable.

28
Q

What are the main benefits of DevOps?

A

DevOps is a very popular trend in Software Development. Some of the main benefits of DevOps are as follows:

I. Release Velocity: DevOps practices help in increasing the release velocity. We can release code to production more often and with more confidence.

II. Development Cycle: With DevOps, the complete Development cycle from initial design to production deployment becomes shorter.

III. Deployment Rollback: In DevOps, we plan for any failure in deployment rollback due to a bug in code or issue in production. This gives confidence in releasing feature without worrying about downtime for rollback.

IV. Defect Detection: With DevOps approach, we can catch defects much earlier than releasing to production. It improves the quality of the software.

V. Recovery from Failure: In case of a failure, we can recover very fast with DevOps process.

VI. Collaboration: With DevOps, collaboration between development and operations professionals increases.

VII. Performance-oriented: With DevOps, organization follows performance-oriented culture in which teams become more productive and more innovative.

29
Q

What is the typical DevOps workflow you use in your organization?

A

The typical DevOps workflow in our organization is as follows:

I. We use Atlassian Jira for writing requirements and tracking tasks.

II. Based on the Jira tasks, developers checkin code into GIT version control system.

III. The code checked into GIT is built by using Apache Maven.

IV. The build process is automated with Jenkins.

V. During the build process, automated tests run to validate the code checked in by developer.

VI. Code built on Jenkins is sent to organization’s Artifactory.

VII. Jenkins automatically picks the libraries from Artifactory and deploys it to Production.

VIII. During Production deployment Docker images are used to deploy same code on multiple hosts.

IX. Once code is deployed to Production, we use Nagios to monitor the health of production servers.

X. Splunk based alerts inform us of any issues or exceptions in production.

30
Q

How do you take DevOps approach with Amazon Web Services?

A

Amazon Web Services (AWS) provide many tools and features to deploy and manage applications in AWS. As per DevOps, we treat infrastructure as code. We mainly use following two services from AWS for DevOps:

I. CloudFormation: We use AWS CloudFormation to create and deploy AWS resources by using templates. We can describe our dependencies and pass special parameters in these templates. CloudFormation can read these templates and deploy the application and resources in AWS cloud.

II. OpsWorks: AWS provides another service called OpsWorks that is used for configuration management by utilizing Chef framework. We can automate server configuration, deployment and management by using OpsWorks. It helps in managing EC2 instances in AWS as well as any on-premises servers.

31
Q

What are the main features of AWS OpsWorks Stacks?

A

Some of the main features of AWS OpsWorks Stacks are as follows:

I. Server Support: AWS OpsWorks Stacks we can automate operational tasks on any server in AWS as well as our own datacenter.

II. Scalable Automation: We get automated scaling support with AWS OpsWorks Stacks. Each new instance in AWS can read configuration from OpsWorks. It can even respond to system events in same way as other instances do.

III. Dashboard: We can create dashboards in OpsWorks to display the status of all the stacks in AWS.

IV. Configuration as Code: AWS OpsWorks Stacks are built on the principle of “Configuration as Code”. We can define and maintain configurations like application source code. Same configuration can be replicated on multiple servers and environments.

V. Application Support: OpsQorks supports almost all kinds of applications. So it is universal in nature.

32
Q

How does CloudFormation work in AWS?

A

AWS CloudFormation is used for deploying AWS resources. In CloudFormation, we have to first create a template for a resource. A template is a simple text file that contains information about a stack on AWS. A stack is a collection of AWS resourced that we want to deploy together in an AWS as a group.

Once the template is ready and submitted to AWS, CloudFormation will create all the resources in the template. This helps in automation of building new environments in AWS.