CDL - Section 11 - Deploying Applications Flashcards
REVIEW:
Server = An entity that processes jobs from a queue is called a server
Bare-Metal - A bare-metal server is a physical computer server with dedicated hardware and is dedicated to a single tenant
Virtual Machines - virtualized instances of physical HW
Containers - this technology removes the abstraction layer (Hypervisor) and directly uses the host operating system to provide an environment for multiple services (containers) to run on the same physical server
What is Docker?
The most widely used container solution that allows users to package containers so that they can be moved between environments.
What is a Docker Image?
A single, saved object from which Containers are created from; a template. You start up a container from an Image.
All the binaries and dependencies for an application are housed in the image.
REVIEW: The basis for Container Technology:
○ Container Image - all the binaries and dependencies for an application are housed in the image; you start/spin up a container from an Image i.e you package applications into unchanging/static image objects
§ If you need to make a change, you just create a new image and then kill the old image, for example
§ A container is just a running instance of the image
○ Automated testing and deployment
○ Environment Consistency - environments are identical; which makes pinpointing issues very easy and also allows for high scale
○ Elastic Scaling - scale rapidly and automatically because of immutability (unchanging/static nature of images)
What is Edge Computing?
A network solution that brings computing resources as close to the source of data as possible to reduce latency and bandwidth use.
Lowering latency = better performance
→ The end user experience drives the perceived value of your services and is directly related to how the network performs and how the required latency is achieved.
What is DevOps?
A change in operational approach and mindset to writing, testing, deploying, and improving code, software, applications, etc.
Traditionally, deploying these new services comes to a bottleneck as the infrastructure requires configuration changes to accommodate the new service. This has to be done by a diff team.
Historically there has been a GAP between Operations and Dev teams – this created silo’s and isolation within and Organization. DevOps bridges that gap.
What is CI/CD?
Continuous Integration & Continuous Development/Delivery
REVIEW: CI/CD
- Continuous Build is the first step in the continuous integration and continuous deployment (CI/CD) process
- The next step is Continuous Integration (CI), which includes the first step (continuous build) and adds end-to-end integration tests and unit tests to prove the integration of the added code
○ Each change in code is built and checked by tests and other verifications to detect any integration errors as quickly as possible - Continuous delivery (CD) is the final step in this ongoing process; automates the delivery of software and applications to chosen infrastructure environments
→ Incremental testing is one of many integration tests. It has the advantage that errors are found early and in a smaller collection; keeps the blast radius small
This approach makes it easier to detect the root cause of the errors. A test is done after each of the steps.
○ Self-service configuration in DevOps permits developers to deploy applications by themselves at their own pace – they need to be equipped with the necessary tools to perform.
What is the difference between the Traditional Waterfall project, and a CI/CD project?
Waterfall is very rigid. One step can’t be completed until the one before it completes.
Design > a long Coding process > Test > Deploy
CI/CD is very rapid. You could have code deploys every few minutes. You’re constantly testing, coding, and deploying at a rapid pace. You can even automate the testing and coding process to make it faster.
Design > C > T > D > C > T > C > T > D….
Can you automate CI/CD components?
Yes - you can automate the entire process; every step
This is a huge enabler of CI/CD and a huge risk reducer
What are the stages in a CI/CD process?
○ Commit - DevOps engineer commits new code with Git
○ Build - a runnable instance is built from the source code + it’s dependencies that it needs
○ Test - code gets validated; can be done in single or multiple stages. If there are errors, it’s sent back
○ Deploy - staging environment is designed to be as close to the real-life production environment as possible; code is staged before being pushed to production/merged with source code
What is Shell?
Shell is a special purpose program that basically gives an interface to a OS –> think of Terminal on Mac.
What is a Bash Shell?
Bourne Again Shell - a modified shell that includes many useful features from other UNIX shells + additional extensions.
Bash is basically a super-set of Shell.
What is a Directory?
What is a Directory Tree?
A container or folder that contains files or other directories local on the machine.
A file System that is a hierarchy of directories.