Deployment Flashcards

1
Q

Quality gates

A

automated tests, qa, e2e tests, code review

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

Deployment types

A

Deployment strategies are methods used to release software updates or new features to users. The choice of strategy can impact the stability, performance, and user experience of the application. Here are some common deployment strategies:

  1. Blue-Green Deployment
    Description:

Two identical environments, “blue” and “green,” are maintained. The “blue” environment is live, while the “green” environment is used for the new release.
Once the new version is deployed to the green environment and tested, traffic is switched from blue to green.
Benefits:

Minimized Downtime: Quick switch with minimal interruption.
Easy Rollback: Reverting to the blue environment if issues arise is straightforward.
Drawbacks:

Resource Intensive: Requires maintaining two environments.
2. Canary Deployment
Description:

The new version is rolled out to a small subset of users (canaries) before a full deployment.
Based on the feedback and monitoring from this subset, the release is gradually rolled out to the rest of the user base.
Benefits:

Risk Mitigation: Issues affect only a small portion of users initially.
Gradual Rollout: Allows for controlled release and testing in production.
Drawbacks:

Complexity: Requires additional infrastructure for managing multiple deployment versions.
3. Rolling Deployment
Description:

New versions are deployed incrementally across servers or instances.
Old instances are updated or replaced one at a time, ensuring that some servers are always running the previous version.
Benefits:

No Downtime: Users can continue to access the application during the update.
Gradual Update: Minimizes risk by updating in small increments.
Drawbacks:

Complex Rollback: Rolling back can be complex if issues arise mid-deployment.
4. Feature Flags (Feature Toggles)
Description:

New features are deployed with the option to toggle them on or off via configuration settings.
Features can be enabled for specific users or groups gradually.
Benefits:

Controlled Rollout: Features can be turned on selectively.
Flexibility: Easy to disable problematic features without redeploying.
Drawbacks:

Increased Complexity: Requires careful management of feature flags and their impact on codebase.
5. A/B Testing Deployment
Description:

Different versions of a feature or application are deployed to different user groups to compare performance or user acceptance.
Data is collected to determine which version performs better.
Benefits:

Data-Driven Decisions: Helps make informed choices based on real user feedback.
Optimizes Features: Identifies which versions are more effective.
Drawbacks:

Complexity: Requires infrastructure to handle multiple versions and collect data.
6. Dark Launch
Description:

New features are deployed but not yet visible or accessible to users.
Features are tested internally or by a select group of users before being made available to everyone.
Benefits:

Testing in Production: Allows for real-world testing without affecting the broader user base.
Controlled Release: Provides a way to validate features before full deployment.
Drawbacks:

Visibility Issues: May require additional effort to test features and ensure they are fully functional.
7. Immutable Deployment
Description:

New versions are deployed by replacing the existing instances entirely.
Old instances are terminated, and new instances are started with the new version.
Benefits:

Consistency: Ensures that all instances are running the same version.
Simplified Rollbacks: Rollbacks are done by redeploying the old version.
Drawbacks:

Resource Usage: Requires provisioning new resources for each deployment.
8. Infrastructure as Code (IaC) Deployment
Description:

Deployment uses code to define and manage infrastructure, making the deployment process repeatable and consistent.
Infrastructure changes are version-controlled and managed via code.
Benefits:

Consistency: Ensures environments are created consistently.
Automation: Enables automated deployments and scaling.
Drawbacks:

Complexity: Requires a good understanding of infrastructure management and scripting.
9. Serverless Deployment
Description:

Deploys applications as serverless functions or microservices, which are managed by cloud providers.
Developers focus on code, while the cloud provider handles scaling and infrastructure management.
Benefits:

Scalability: Automatically scales based on demand.
Cost-Effective: Pay only for the compute time used.
Drawbacks:

Vendor Lock-In: Dependency on a specific cloud provider’s services.
Cold Start Latency: Initial requests may experience latency.
Each deployment strategy has its own strengths and trade-offs. The choice of strategy often depends on factors like the size of the application, user impact tolerance, infrastructure constraints, and the desired level of risk management.

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

CI/CD tools

A
  1. Jenkins

Overview: Jenkins is one of the most popular and widely used open-source CI/CD tools. It is highly extensible and has a large plugin ecosystem.

Pros:
Extensibility: Thousands of plugins are available for various needs.
Community Support: Strong community and extensive documentation.
Customizability: Highly customizable through its configuration options and scripting capabilities.

Cons:
Complexity: Can be complex to set up and maintain, especially for large installations.
UI: The user interface is often considered outdated compared to modern tools.

  1. GitLab CI/CD
    Overview: GitLab CI/CD is part of the GitLab platform, which integrates version control, issue tracking, and CI/CD into a single application.

Pros:
Integration: Seamlessly integrates with GitLab’s version control and project management tools.
Ease of Use: User-friendly and easy to set up.
Built-In Features: Includes built-in features for monitoring, security, and deployment.

Cons:
Resource Intensive: Can be heavy on resources due to its all-in-one nature.
Learning Curve: Might have a steeper learning curve if you are new to GitLab.

  1. CircleCI
    Overview: CircleCI is a cloud-based CI/CD service known for its speed and scalability.

Pros:
Performance: Fast build times and efficient parallelism.
Cloud-Native: Designed for cloud environments, with easy scaling.
Integrations: Good integration with various VCS and cloud platforms.

Cons:
Cost: Can become expensive as usage scales.
Configuration: Configuration through YAML files might be challenging for beginners.

  1. Travis CI
    Overview: Travis CI is a cloud-based CI service that integrates well with GitHub.

Pros:
GitHub Integration: Seamless integration with GitHub repositories.
Ease of Use: Simple configuration through .travis.yml file.
Free for Open Source: Free for open-source projects.

Cons:
Performance: Can be slower compared to some competitors.
Limited Free Plan: Free plan is limited in terms of build minutes and concurrency.

  1. Azure DevOps
    Overview: Azure DevOps by Microsoft offers a comprehensive suite for CI/CD, including pipelines, repositories, and project management.

Pros:
Integration: Integrates well with Azure services and other Microsoft tools.
Features: Provides a wide range of tools beyond CI/CD, including project management and artifact storage.
Flexibility: Supports both cloud and on-premises deployments.

Cons:
Complexity: Can be complex to configure and manage.
Microsoft-Centric: Best suited for projects heavily using Microsoft technologies.

  1. GitHub Actions
    Overview: GitHub Actions is a CI/CD and automation service built into GitHub.

Pros:
Integrated: Directly integrated with GitHub repositories, simplifying workflows.
Flexibility: Allows for custom workflows using YAML files.
Community: A growing library of pre-built actions.

Cons:
Newer: Still evolving, with some features and integrations not as mature as older tools.
Complexity in Large Workflows: Large workflows can become complex to manage.

  1. Bamboo
    Overview: Bamboo is a CI/CD tool from Atlassian that integrates with other Atlassian products like Jira and Bitbucket.

Pros:
Integration: Works well with Atlassian ecosystem and provides deep integration with Jira and Bitbucket.
User Interface: Modern UI and user-friendly experience.

Cons:
Cost: Can be expensive, especially for smaller teams or individual users.
Less Extensible: Fewer plugins compared to Jenkins.

Comparison Summary

Ease of Use: Tools like GitHub Actions and GitLab CI/CD are often praised for their ease of use and integration with their respective platforms.
Performance: CircleCI and GitHub Actions are known for their fast performance and scalability.
Flexibility: Jenkins offers the highest level of customizability, while tools like Bamboo and Azure DevOps provide more out-of-the-box features.
Cost: Travis CI and GitHub Actions offer free plans for open-source projects, whereas others like Bamboo and CircleCI can become costly with scale.
Choosing the right CI/CD tool depends on your specific needs, existing infrastructure, and budget.

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