IT & security Flashcards
What is Azure cloud?
Microsoft Azure is a cloud computing platform and infrastructure created by Microsoft for building, deploying, and managing applications and services through a global network of Microsoft-managed data centers/Servers.
Azure offers many benefits to organizations and individuals, including:
Scalability:
Azure allows you to scale your applications up or down as needed, so you only pay for the resources you use.
Flexibility:
Azure supports a wide range of programming languages, tools, and frameworks, so you can build applications using the technologies you prefer.
Security:
Azure is designed with security in mind, with features such as identity and access management, data encryption, and threat protection.
Global presence:
Azure has data centers located around the world, so you can deploy applications and store data closer to your users.
Hybrid capabilities:
Azure allows you to build hybrid applications that span on-premises and cloud environments.
Overall, Azure provides a powerful and flexible platform for building, deploying, and managing a wide range of applications and services in the cloud.
What is Infrastructure as a service (Iaas)?
Infrastructure as a Service (IaaS) is a cloud computing model in which a service provider offers infrastructure resources, such as virtual machines, storage, and networking, to customers on a pay-as-you-go basis. In an IaaS model, the service provider is responsible for maintaining the underlying infrastructure, while the customer is responsible for installing, configuring, and managing the operating system, middleware, and applications that run on top of it.
IaaS provides several benefits to organizations and individuals, including:
Cost savings:
With IaaS, you only pay for the resources you use, rather than having to invest in and maintain your own physical infrastructure. This can help reduce costs.
Scalability:
IaaS allows you to easily scale your infrastructure up or down as needed, so you can adjust to changing workloads and demand.
Flexibility:
IaaS gives you the flexibility to choose the operating system, middleware, and applications that best fit your needs, and to configure them as you see fit.
Efficiency:
IaaS allows you to quickly and easily provision new infrastructure resources as needed, which can help improve the efficiency of your operations.
Examples are virtual machines and storage the various cloud computing services (like AWS and Azure) offer.
What is platform as a service (PaaS)?
Platform as a Service (PaaS) is a cloud computing model in which a service provider offers a platform for building, deploying, and managing applications and services. The service provider is responsible for maintaining the underlying infrastructure, as well as the platform itself, including the operating system, middleware, and development tools.
In a PaaS model, customers can build and deploy their own applications and services on top of the platform, without having to worry about the underlying infrastructure. This makes it easier for developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure.
PaaS provides several benefits to organizations and individuals, including:
Efficiency:
PaaS allows developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure. This can help improve the efficiency of development and deployment.
Scalability:
PaaS allows you to easily scale your applications up or down as needed, so you can adjust to changing workloads and demand.
Flexibility:
PaaS gives you the flexibility to choose the development tools and frameworks that best fit your needs, and to configure them as you see fit.
Cost savings:
With PaaS, you only pay for the resources you use, rather than having to invest in and maintain your own infrastructure and development tools. This can help reduce costs.
Examples are database management, access to different web applications/microservices and running your own code in response to events.
What is platform as a service (PaaS)?
Platform as a Service (PaaS) is a cloud computing model in which a service provider offers a platform for building, deploying, and managing applications and services. The service provider is responsible for maintaining the underlying infrastructure, as well as the platform itself, including the operating system, middleware, and development tools.
In a PaaS model, customers can build and deploy their own applications and services on top of the platform, without having to worry about the underlying infrastructure. This makes it easier for developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure.
PaaS provides several benefits to organizations and individuals, including:
Efficiency:
PaaS allows developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure. This can help improve the efficiency of development and deployment.
Scalability:
PaaS allows you to easily scale your applications up or down as needed, so you can adjust to changing workloads and demand.
Flexibility:
PaaS gives you the flexibility to choose the development tools and frameworks that best fit your needs, and to configure them as you see fit.
Cost savings:
With PaaS, you only pay for the resources you use, rather than having to invest in and maintain your own infrastructure and development tools. This can help reduce costs.
Examples are database management, access to different web applications/microservices and running your own code in response to events. It’s usually cloud computing services like AWS and Azure that offers this.
What is software as a service (SaaS)?
Software as a Service (SaaS) is a cloud computing model in which a service provider offers software applications over the internet on a subscription basis. Customers can access and use the software over the internet, rather than having to install it on their own computers or servers.
In a SaaS model, the service provider is responsible for maintaining and updating the software, as well as the underlying infrastructure. This means that customers don’t have to worry about installing or maintaining the software themselves. They can simply use it as needed and pay for the subscription on a monthly or annual basis.
SaaS provides several benefits to organizations and individuals, including:
Ease of use:
SaaS allows users to access and use software applications over the internet, rather than having to install and maintain them on their own computers or servers.
Scalability:
SaaS allows users to easily scale their use of the software up or down as needed, so they can adjust to changing workloads and demand.
Cost savings:
With SaaS, users only pay for the software they use, rather than having to invest in and maintain their own software licenses and infrastructure. This can help reduce costs.
Updates and maintenance:
SaaS providers are responsible for maintaining and updating the software, which means users don’t have to worry about installing patches or keeping their software up to date.
Examples are: Salesforce, Dropbox, Zoom, Netflix etc.
What is Docker?
Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
What is a microservice?
A microservice is a software architecture style in which a large application is built as a suite of small, modular services, each of which performs a specific task and communicates with other services through well-defined interfaces.
There are several advantages to using a microservice architecture:
Scalability:
Because each microservice is a self-contained unit, it can be scaled independently of the other services, allowing for more granular control over resource allocation.
Resilience:
If one microservice fails, the other services can continue to function, resulting in a more robust and resilient overall system.
Modularity:
Microservices are modular, meaning that they can be developed, tested, and deployed independently, allowing for more flexible and agile development processes.
Reusability:
Microservices can be shared and reused across different applications, making it easier to build and maintain complex systems.
Language independence:
Microservices can be implemented in different programming languages, making it easier to use the best tool for the job and allowing for a more diverse team of developers.
What is an API?
An API, or application programming interface, is a set of rules and protocols that defines how two systems can communicate with each other. APIs are often used to allow one piece of software to access or manipulate the data or functionality of another piece of software.
APIs typically consist of a set of functions or methods that can be called by a program, along with a specification of the input and output parameters for each function. The program calling the API is known as the client, and the program providing the API is known as the server.
APIs are used in many different contexts, such as allowing a web application to access data from a database, or allowing one mobile app to interact with another. They are an important part of modern software development, as they allow different systems and applications to work together and share data and functionality.
What is a docker file?
A Dockerfile is a text file that contains a series of instructions for building a Docker image. Each instruction in the Dockerfile creates a new layer in the image. A layer is an individual unit of change that can be rolled back or committed to the image.
The first line of a Dockerfile must specify the base image to use for the build. For example, you might specify FROM ubuntu:18.04 to use the latest version of Ubuntu as the base image.
After the base image has been specified, you can use a variety of different commands to build and configure the image. Some common commands include:
RUN:
Run a command in the shell. For example, RUN apt-get update will update the package manager’s list of available packages.
COPY:
Copy files from the host machine into the image. For example, COPY . /app will copy all files in the current directory to the /app directory in the image.’
WORKDIR:
Set the working directory for subsequent instructions. For example, WORKDIR /app will set the working directory to /app.
ENV: Set environment variables in the image. For example, ENV PORT 8080 will set the environment variable PORT to 8080.
After you have to “build” the image with a command, which can be used to control 1 or more docker containers.
What is a virtual environment?
A virtual environment is a tool used to isolate specific Python environments on a single machine, allowing you to work with multiple versions of Python libraries and packages without conflicts.
Virtual environments are especially useful when you need to work on multiple projects that have different requirements, or when you want to test out new libraries or packages without affecting your global Python environment.
What is Git?
Git is a version control system that is used to track changes to files and coordinate the work of multiple people on the same project. It is a distributed version control system, which means that each person working on a project has a copy of the entire project history on their own computer, rather than relying on a central server to store the project history.
Git allows you to create a repository, which is a directory that contains all the files for a project, as well as a record of all the changes made to those files over time. You can use Git to create a new repository, or you can clone an existing repository from a remote server.
What is GitHub?
GitHub is a web-based platform that provides hosting for software development version control using Git. It is a subsidiary of Microsoft and is the largest host of source code in the world.
GitHub allows developers to store and manage their code repositories, as well as track and control changes to their code. It also provides a range of collaboration features, such as the ability to assign tasks, track issues, and review code changes.
GitHub is widely used by individuals and organizations to host and share code, as well as to collaborate on software development projects. It is also a popular platform for open-source projects, as it provides a convenient way for developers around the world to contribute to and collaborate on projects.
What is a NoSQL database?
NoSQL databases are a class of databases that are designed to handle large amounts of data that is distributed across a large number of servers, and to support a wide variety of data models (and unstructured data). They are often referred to as “non-relational” databases, as they do not use the traditional relational database model based on tables and SQL (Structured Query Language).
What are the main differences between a relational database and a NoSQL database?
Relational databases use a tabular data model, where data is organized into tables with rows and columns
NoSQL databases, on the other hand, can use a variety of data models, including key-value stores, document stores, graph databases, and column-family stores.
Relational databases are generally designed to scale vertically, by adding more resources (such as CPU, memory, and storage) to a single machine.
NoSQL databases, on the other hand, are generally designed to scale horizontally, by adding more machines to the database cluster
Relational databases use transactions and ACID (Atomicity, Consistency, Isolation, Durability) guarantees to ensure that data is consistent and reliable
NoSQL databases generally offer weaker consistency guarantees, as they prioritize availability and partition tolerance over consistency in certain situations.
Advantages of relational databases:
- Strong data consistency guarantees
- Support for transactions and ACID guarantees
- Widely understood and used query language (SQL)
- Well-established and mature technology
Disadvantages of relational databases
- Limited scalability
- Rigid data model
- Poor performance for certain types of workloads
Advantages of NoSQL databases - Flexible data model
- Good scalability
- High availability and partition tolerance
- Generally good performance for certain types of workloads
Disadvantages of NoSQL databases
- Weak consistency guarantees
- Lack of support for transactions
- Lack of a widely understood and used query language
- Limited mature technology compared to relational databases
What the different ways NoSQL databases store data?
Key-value stores:
- Data is stored in key/value pairs. It is designed in such a way to handle lots of data and heavy load.
- Key-value pair storage databases store data as a hash table where each key is unique, and the value can be a JSON
Column-based:
A column-based NoSQL database, data is organized into column families, which are groups of related columns. Each column family can contain one or more rows, and each row can contain one or more columns.
Document-oriented:
Document-Oriented NoSQL DB stores and retrieves data as a key value pair but the value part is stored as a document. The document is stored in JSON or XML formats. The value is understood by the DB and can be queried
Graph-based:
A graph-based NoSQL database, data is stored as nodes, which represent entities or objects, and edges, which represent relationships between nodes. Each node can have one or more properties, which are key-value pairs that describe the node. Each edge can also have one or more properties, which describe the relationship between the two nodes it connects