Full Study Flashcards

1
Q

What is Cloud Computing?

A

Definitions all revolve around accessing computing and storage resources through the internet. It is done over the Internet (“the cloud”) to offer faster innovation, flexible resources, and economies of scale.

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

What does Cloud Computing Deliver?

A

Computing Services, Storage, Databases, Networking, Software, Analytics, Intelligence

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

What is Cloud Computing in the eyes of AWS?

A

Cloud computing is the on-demand delivery of IT resources over the Internet with pay-as-you-go pricing.
Instead of buying, owning, and maintaining physical data centers and servers, you can access technology services, such as computing power, storage, and databases, on an as-needed basis from a cloud provider like Amazon Web Services.

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

What is Cloud Computing in the eyes of Oracle?

A

Cloud computing and associated solutions provide access through the web to computing resources and products, including development tools, business applications, compute services, data storage, and networking solutions.
These cloud services are hosted at a software vendor’s data centre and managed by the cloud services provider or onsite at a customer’s data centre.

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

What are the benefits of Cloud Computing?

A

Agility, Elasticity and Cost Savings

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

What are the drawbacks of Cloud Computing?

A

Availability and Reliability, Portability, Security and Privacy, Computing Performance, Service Quality and Interoperability

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

What are the types of Cloud Computing delivery models?

A

Software as a Service (SaaS) - The software is hosted, packaged, and delivered by a third party through the Internet. By delivering the software application over the Internet, enterprises can offload the costs of management and maintenance to the vendor.

Infrastructure as a Service (IaaS) - IaaS gives users access to storage, networking, servers, and other computing resources via the cloud. While the user is still responsible for managing their applications, data, middleware, etc., IaaS provides automated and scalable environments that provide a high degree of control and flexibility for the user.

Platform as a Service (PaaS) - This service layer is primarily geared towards developers and operations professionals. Service providers rent out cloud-based platforms for users to develop and deliver applications. In other words, PaaS provides a framework that makes it easier and more efficient to build, customize, and deploy applications.

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

What are the Cloud Application architecture fundamentals?

A
  • The cloud is changing how applications are designed and secured.
  • Instead of monoliths, applications are decomposed into
    smaller, decentralized services.
  • These services communicate through APIs or by using
    asynchronous messaging or eventing.
  • Applications scale horizontally, adding new instances as
    demand requires.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the fundamental differences between on-premises and the cloud?

A

On-premises
Monolithic, Designed for predictable scalability, Relational database, Synchronized processing, Design to avoid failures (MTBF), Occasional large updates, Manual management, Snowflake servers

The Cloud
Decomposed, Designed for Elastic Scale, Polyglot Persistence – Mixture of Storage Technology’s, Automated Self-Management, Immutable Infrastructure, Frequent Small Updates, Asynchronous Processing Designed for Failure (MTTR)

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

What are the choices that you need to make before choosing a technology?

A

Compute - refers to the hosting model for the computing resources that your applications run on.

Data Stores - include databases but also storage for message queues, caches, logs, and anything else that an application might persist to storage.

Messaging technologies - enable asynchronous messages between components of the system.

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

What are some design architecture tools?

A

Design Principles - Design principles apply to any architectural style. Throughout the design process, keep design principles in mind.

Design Patterns - Software design patterns are repeatable patterns that are proven to solve specific problems. A catalogue (Based on different cloud providers) of Cloud design patterns addresses specific challenges in distributed systems. They address aspects such as availability, high availability, operational excellence, resiliency, performance, and security.

Quality Pillars - A successful cloud application will focus on five pillars of software quality

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

What are the quality pillars?

A

Reliability
Security
Cost Optimization
Operational Excellence
Performance Efficiency

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

What does the architectural styles that are commonly found in cloud applications include?

A

A description and logical diagram of the style.
Recommendations for when to choose this style.
Benefits, challenges, and best practices.
A recommended deployment using relevant Azure services.

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

What are the Architectural Styles?

A

N-Tier - N-tier is a traditional architecture for enterprise applications. Dependencies are managed by dividing the application into layers that perform logical functions, such as presentation, business logic, and data access. A layer can only call into layers that sit below it. N-tier is most often seen in infrastructure as a service (IaaS) solution, or applications that use a mix of IaaS and managed services.

Web-Queue Worker - Web-Queue-Worker is Suitable for relatively simple domains with some resource-intensive tasks. Like N-tier, the architecture is easy to understand. The use of managed services simplifies deployment and operations. For purely PaaS solution, consider a Web-Queue-Worker architecture. In this style, the application has a web front end that handles HTTP requests and a back-end worker that performs CPU intensive tasks or long-running operations. The front end communicates to the worker through an asynchronous message queue.

Microservices - A microservices application is composed of many small, independent services. Each service implements a single business capability. Services are loosely coupled, communicating through API contracts. Each service can be built by a small, focused development team. Individual services can be deployed without a lot of coordination between teams, which encourages frequent updates.

Event Driven Architecture - Event-Driven Architectures use a publish-subscribe (pub-sub) model, where producers publish events, and consumers subscribe to them. The producers are independent from the consumers, and consumers are independent from each other. Consider an event-driven architecture for applications that ingest and process a large volume of data with very low latency, such as IoT solutions.

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

What is Big Data, Big Compute?

A

Big Data and Big Compute are specialized architecture styles for workloads that fit certain specific profiles. Big data divides a very large dataset into chunks, performing parallel processing across the entire set, for analysis and reporting.
Big compute, also called high-performance computing (HPC), makes parallel computations across a large number (thousands) of cores.

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

What are the constraints in microservices?

A

An architecture style places constraints on the design, including the set of elements that can appear and the allowed relationships between those elements

A service represents a single responsibility.
Every service is independent of the others.
Data is private to the service that owns it. Services do not share data.

17
Q

What are the trade-offs when adopting any architecture style?

A

Complexity - Is the complexity of the architecture justified for your domain? Conversely, is the style too simplistic for your domain? In that case, you risk ending up with a “big ball of mud”, because the architecture does not help you to manage dependencies cleanly.

Asynchronous messaging and eventual consistency - Asynchronous messaging can be used to decouple services and increase reliability (because messages can be retried) and scalability. However, this also creates challenges in handling eventual consistency, as well as the possibility of duplicate messages.

Inter-service communication - As you decompose an application into separate services, there is a risk that communication between services will cause unacceptable latency or create network congestion (for example, in a microservices architecture).

Manageability - How hard is it to manage the application, monitor, deploy updates, and so on?

18
Q

What is a Monolithic Architecture?

A

A monolithic architecture is a traditional model of a software program, which is built as a unified unit that is self-contained and independent from other applications
A monolithic architecture is a singular, large computing network with one code base that couples all the business concerns together
Monoliths can be convenient early on in a project’s life for ease of code management, cognitive overhead, and deployment. This allows everything in the monolith to be released at once.
A monolithic architecture is the programming model, where elements of the software program are interwoven and interdependent.

19
Q

What are the components of a Monolithic Architecture?

A

Client-side user interface.
Sever side-application.
Database.

20
Q

What are the advantages of a Monolithic Architecture?

A

Easy deployment
Development
Performance
Simplified testing
Easy debugging

21
Q

What are the disadvantages of a Monolithic Architecture?

A

Slower development speed
Scalability
Reliability
Barrier to technology adoption
Lack of flexibility
Deployment

22
Q

What is a Microservice Architecture?

A

Microservice are small, independent, and loosely coupled. A single small team of developers can write and maintain a service. Each service is a separate codebase. Services can be deployed independently. Services are responsible for persisting their own data or external state. Services communicate with each other by using a well-defined API.
Supports polyglot programming

23
Q

What are the components of a Microservice Architecture?

A

Management/Orchestration – This component is responsible for placing services on nodes, identifying failures, rebalancing services across nodes, and so forth. Typically, this component is an off-the-shelf technology such as Kubernetes, rather than something custom built.

API Gateway – The API Gateway is the entry point for clients. Instead of calling services directly, clients call the API gateway, which forwards the call to the appropriate services on the back end.

24
Q

What are the advantages of Microservice Architecture?

A

It decouples clients from services
Services can use messaging protocols that are not web friendly
The API Gateway can perform other cross-cutting functions
Out-of-the-box policies
Agility
Small, focused teams
Small Code Base
Mix of technologies
Fault Isolation
Scalability
Data Isolation

25
Q

What are the disadvantages of Microservice Architecture?

A

Complexity
Development and testing
Lack of governance
Network Congestion and latency
Data Integrity
Management
Versioning
Skill Set

26
Q

What are the basic practices of Microservice Architecture?

A

Model services around the business domain
Decentralize everything
Services communicate through well designed APIs.
Data storage should be private to the service that owns the data
Avoid coupling between services
Offload cross-cutting concerns
Keep domain knowledge out of the gateway
Services should have loose coupling and high functional cohesion
Isolate failures

27
Q

What is DevOps?

A

DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes.

28
Q

How do DevOps work?

A

Under a DevOps model, development and operations teams are no longer “siloed.” These two teams are merged into a single team where the engineers work across the entire application lifecycle. Quality assurance and security teams may also become more tightly integrated with development and operations and throughout the application lifecycle.

29
Q

What is DevSecOps?

A

When security is the focus of everyone on a DevOps team.

30
Q

What are the steps in the DevOps lifecycle - with an explanation?

A

1) Discover - In preparation for the upcoming sprint, teams must workshop to explore, organize, and prioritize ideas. Ideas must align to strategic goals and deliver customer impact. Agile can help guide DevOps teams.
2) Plan - DevOps teams should adopt agile practices to improve speed and quality. Agile is an iterative approach to project management and software development that helps teams break work into smaller pieces to deliver incremental value.
3) Build - Git is a free and open-source version control system. It offers excellent support for branching, merging, and rewriting repository history, which has led to many innovative and powerful workflows and tools for the development build process.
4) Test - Continuous integration (CI) allows multiple developers to contribute to a single shared repository. When code changes are merged, automated tests are run to ensure correctness before integration. Merging and testing code often help development teams gain reassurance in the quality and predictability of code once deployed.
5) Deploy - Continuous deployment (CD) allows teams to release features frequently into production in an automated fashion. Teams also have the option to deploy with feature flags, delivering new code to users steadily and methodically rather than all at once. This approach improves velocity, productivity, and sustainability of software development teams.
6) Operate - Manage the end-to-end delivery of IT services to customers. This includes the practices involved in designing, implementing, configuring, deploying, and maintaining all IT infrastructure supporting an organization’s services.
7) Observe - Quickly identify and resolve issues that impact product uptime, speed, and functionality. Automatically notify your team of changes, high-risk actions, or failures, so you can keep services on.
8) Continuous Feedback - DevOps teams should evaluate each release and generate reports to improve future releases. By gathering continuous feedback, teams can improve their processes and incorporate customer feedback to improve the next release.

31
Q

What is Automated Testing?

A

Testing tools span many needs and capabilities, including exploratory testing, test management, and orchestration
Automated testing pays off over time by speeding up your development and testing cycles in the long run
Test automation can increase software quality and reduce risk by doing it early and often. Development teams can execute automated tests repeatedly, covering several areas such as UI testing, security scanning, or load testing.
They also yield reports and trend graphs that help identify risky areas

32
Q

What is Automated Deployment?

A

Good engineering practices are vital. Use variables to factor out host names – maintaining unique scripts or code for each environment is no fun (and misses half the point anyway). Create utility methods or scripts to avoid duplicated code. And peer review your scripts to sanity-check them. Try automating deployments to your lowest-level environment first, where you’ll be using that automation most frequently, then replicate that all the way up to production.

33
Q

What is Deployment Dashboards?

A

One of the most stressful parts of shipping software is getting all the change, test, and deployment information for an upcoming release into one place. The last thing anyone needs before a release is a long meeting to report on status.

34
Q

What are the benefits of DevOps?

A

Speed
Rapid Delivery
Reliability
Scale
Improved Collaboration
Security

35
Q

What is Docker?

A

Docker is a software platform that allows you to build, test, and deploy applications quickly.
Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime.
Using Docker, you can quickly deploy and scale applications into any environment and know your code will run.
Running Docker provides developers and admins a highly reliable, low-cost way to build, ship, and run distributed applications at any scale.

36
Q

How does Docker Work?

A

Works by providing a standard way to run your code. It is a operating system for containers. Like how a virtualization machine virtualizes (Removes the need for direct management), server hardware, containers virtualize the operating system of a server. Docker is installed on each server and provides simple commands that you can use to build, start, or stop containers.

37
Q

Why would you use Docker?

A

*You get a single object of code that can run reliably anywhere.
*Simple and straight forward gives full control.
*Wide adoption means there is a robust ecosystem of tools and off-the-shelf applications that are ready to use with Docker.
*Ship More Software Faster - Docker users on average ship software 7x more frequently than non-Docker users. Docker enables you to ship isolated services as often as needed.
*Standardize Operations - Small containerized applications make it easy to deploy, identify issues, and roll back for remediation.
*Seamlessly Move - Docker-based applications can be seamlessly moved from local development machines to production deployments on AWS/IBM/Oracle/Azure etc.
*Save Money - Docker containers make it easier to run more code on each server, improving your utilization and saving you money.
*Docker makes it easy to build and run distributed microservices architectures, deploy your code with standardized continuous integration and delivery pipelines, build highly scalable data processing systems, and create fully managed platforms for your developers.

38
Q

When should you use Docker?

A

You can use Docker containers as a core building block in creating modern applications and platforms.
*Microservices - Build and scale distributed application architectures by taking advantage of standardized code deployments using Docker containers.
*Continuous Integration & Delivery - Accelerate application delivery by standardizing environments and removing conflicts between language stacks and versions.
*Data Processing - Provide big data processing as a service. Package data and analytics packages into portable containers that can be executed by non-technical users.
*Containers as a Service - Build and ship distributed applications with content and infrastructure that is IT-managed and secured.

39
Q

What is the Docker Eco-System?

A
  1. Server
  2. Client
  3. Images
  4. Machine
  5. Hub
  6. Compose