Assessments

In the following pages, we will review all of the practice questions from each of the

chapters in this book and provide the correct answers.

Chapter 1: Introducing Continuous Delivery

  1. Development, quality assurance, operations.
  2. Continuous integration, automated acceptance testing, configuration management.
  3. Fast delivery, fast feedback cycle, low-risk releases, flexible release options.
  4. Unit tests, integration tests, acceptance tests, non-functional tests (performance, security, scalability, and so on).
  5. Unit tests, because they are cheap to create/maintain and quick to execute.
  6. DevOps is the idea of combining the areas of development, quality assurance, and operations into one team (or person). Thanks to automation, it's possible to provide the product from A to Z.
  7. Docker, Jenkins, Ansible, Terraform, Git, Java, Spring Boot, Gradle, Cucumber, Kubernetes.

Chapter 2: Introducing Docker

  1. Containerization does not emulate the whole operating system; it uses the host operating system instead.
  2. The benefits of providing an application as a Docker image are as follows:
    1. No issues with dependencies: The application is provided together with its dependencies.
    2. Isolation: The application is isolated from the other applications running on the same machine.
    3. Portability: The application runs everywhere, no matter which environment dependencies are present.
  3. No, the Docker daemon can run natively only on Linux machines. However, there are well-integrated virtual environments for both Windows and Mac.
  4. A Docker image is a stateless, serialized collection of files and the recipe of how to use them; a Docker container is a running instance of the Docker image.
  5. A Docker image is built on top of another Docker image, which makes the layered structure. This mechanism is user-friendly and saves bandwidth and storage.
  6. Docker Commit and Dockerfile.
  7. docker build.
  8. docker run.
  9. Publishing a port means that the host's port is forwarded to the container's port.
  10. A Docker volume is the Docker host's directory mounted inside the container.

Chapter 3: Configuring Jenkins

  1. Yes, and the image name is jenkins/jenkins.
  2. A Jenkins master is the main instance that schedules tasks and provides the web interface, while a Jenkins agent (slave) is the additional instance that's only dedicated to executing jobs.
  3. Vertical scaling means adding more resources to the machine while the load increases. Horizontal scaling means adding more machines while the load increases.
  4. SSH and Java Web Start.
  5. A permanent agent is the simplest solution, and it means creating a static server with all the environments prepared to execute a Jenkins job. On the other hand, a permanent Docker agent is more flexible; it provides the Docker daemon, and all the jobs are executed inside Docker containers.
  6. In case you use dynamically provisioned Docker agents and the standard ones (available on the internet) do not provide the execution environment you need.
  7. When your organization needs some templated Jenkins to be used by different teams.
  8. Blue Ocean is a Jenkins plugin that provides a more modern Jenkins web interface.

Chapter 4: Continuous Integration Pipeline

  1. A pipeline is a sequence of automated operations that usually represents a part of the software delivery and quality assurance process.
  2. A step is a single automated operation, while a stage is a logical grouping of steps used to visualize the Jenkins pipeline process.
  3. The post section defines a series of one or more step instructions that are run at the end of the pipeline build.
  4. Checkout, compile, and unit test.
  5. Jenkinsfile is a file with the Jenkins pipeline definition (usually stored together with the source code in the repository).
  6. The code coverage stage is responsible for checking whether the source code is well covered with (unit) tests.
  7. An external trigger is a call from an external repository (such as GitHub) to the Jenkins master, while Polling SCM is a periodic call from the Jenkins master to the external repository.
  8. Email, group chat, build radiators, sms, rss feed.
  9. Trunk-based workflow, branching workflow, and forking workflow.
  10. A feature toggle is a technique that is used to disable the feature for users but enable it for developers while testing. Feature toggles are essentially variables used in conditional statements.

Chapter 5: Automated Acceptance Testing

  1. Docker Registry is a stateless application server that stores Docker images.
  2. Docker Hub is the best-known public Docker registry.
  3. The convention is <registry_address>/<image_name>:<tag>.
  4. The staging environment is the preproduction environment dedicated to integration and acceptance testing.
  5. The following commands: docker builddocker login, and docker push.
  6. They allow us to specify tests in a human-readable format, which helps with collaboration between businesses and developers.
  7. Acceptance criteria (feature scenario specification), step definitions, test runner.
  8. Acceptance test-driven development is a development methodology (seen as an extension of TDD) that says to always start the development process from the (failing) acceptance tests.

Chapter 6: Clustering with Kubernetes

  1. A server cluster is a set of connected computers that work together in such a way that they can be used similarly within a single system.
  2. Kubernetes Node is just a worker, that is, a host that runs containers. Kubernetes Control Plane Master is responsible for everything else (providing the Kubernetes API, Pod orchestration, and more).
  3. Microsoft Azure, Google Cloud Platform, and Amazon Web Services.
  4. Deployment is a Kubernetes resource that's responsible for Pod orchestration (creating, terminating, and more). Service is an (internal) load balancer that provides a way to expose Pods.
  5. kubectl scale.
  6. Docker Swarm and Mesos.

Chapter 7: Configuration Management with Ansible

  1. Configuration management is the process of controlling the configuration changes in a way such that the system maintains integrity over time.
  2. Agentless means that you don't need to install any special tool (an agent or daemon) in the server that is being managed.
  3. Ansible, Chef, and Puppet.
  4. An inventory is a file that contains a list of servers that are managed by Ansible.
  5. An ad hoc command is a single command that is executed on servers, and playbooks are the entire configurations (sets of scripts) that are executed on servers.
  6. An Ansible role is a well-structured playbook prepared to be included in the playbooks.
  7. Ansible Galaxy is a store (repository) for Ansible roles.
  8. Infrastructure as code is the process of managing and provisioning computing resources instead of physical hardware configurations.
  9. Terraform, AWS CloudFormation, Azure Resource Manager, Google Cloud Deployment Manager, Ansible, Chef, Puppet, Pulumi, Vagrant.

Chapter 8: Continuous Delivery Pipeline

  1. Production, staging, QA, development.
  2. Staging is the preproduction environment used to test software before the release; QA is a separate environment used by the QA team and the dependent applications.
  3. Performance, load, stress, scalability, endurance, security, maintainability, recovery.
  4. No, but it should be explicit which are part of the pipeline, and which are not (and for those that are not, there should still be some automation and monitoring around).
  5. Semantic versioning, timestamp-based, hash-based.
  6. A smoke test is a very small subset of acceptance tests whose only purpose is to check that the release process is completed successfully.

Chapter 9: Advanced Continuous Delivery

  1. Database schema migration is a process of incremental changes to the relational database structure.
  2. Flyway, Liquibase, Rail migrations (from Ruby on Rails), Redgate, Optima database administrator.
  3. Backward-compatible and non-backward-compatible.
  4. If one database is shared between multiple services, then each database change must be compatible with all services, which makes changes very difficult to initiate.
  5. Unit tests do not require the preparation of any special data; data is in memory and prepared by developers; integration/acceptance tests require the preparation of special data that is similar to production data.
  6. Parallel.
  7. Build parameters and shared libraries.
  8. Input.
  9. Rolling updates, blue-green deployment, and canary release.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.216.236.108