Giter Club home page Giter Club logo

azure-proactive-resiliency-library's Introduction

Azure Proactive Resiliency Library (APRL)

Caution

The APRL repository has undergone migration to a new repository called APRLv2. As of April 15, 2024, it has been ARCHIVED and will no longer receive support or updates.

New Repository: https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2

aka.ms/aprl will redirect to the new website starting April 15th

Average time to resolve an issue Percentage of issues still open

Please access the GitHub Pages site, unless looking to contribute, over at: aka.ms/aprl

Welcome to the home of the Azure Proactive Resiliency Library (APRL).

This library is built with the intention of being a staging area for guidance and recommendations that can be used by customers, partners and the field in Well-Architected Framework reliability engagements/assessments; with the intent of the guidance and recommendations being promoted, once tested and validated with customers and partners, into the official Well-Architected Framework documentation.

The library also contains supporting Azure Resource Graph (ARG) queries that can help customers, partners and the field identify resources that may or may not be compliant with the guidance and recommendations. The intent for these queries, in the long-term, is to make them part of the Azure Advisor service.

Contributing

The contribution guide can be found on the GitHub pages site here: aka.ms/aprl/contribute

This project only currently accepts Pull Requests from Microsoft FTEs as of today. However, anyone is welcomed to create issues/features requests on the repo for the team to triage and action. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

azure-proactive-resiliency-library's People

Contributors

alisakina99 avatar dafitrobsta avatar dost2010 avatar edknox avatar ehaslett avatar ejhenry avatar fguerri avatar humblejay avatar ibersanoms avatar jchancellor-ms avatar jefferymitchell avatar jimays-avila avatar jtracey93 avatar kovarikthomas avatar lachaves avatar maheshbenke avatar michielvanschaik avatar moisesjgomez avatar monte-hazboun avatar mspetroula avatar ozakari avatar pedrocsousa avatar pinyuko avatar prasad3017 avatar renehezser avatar rodrigosantosms avatar taranki avatar terrymandin avatar tksh164 avatar yshafner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azure-proactive-resiliency-library's Issues

๐Ÿชฒ Bug Report - ERGW-2 is returning the wrong recommendation ID

Describe the bug

ERGW-2 - Use Zone-redundant gateway SKUs is returning the wrong recommendation ID from the query. See line in query:
| project recommendationId = "ergw-1", name, id, tags, ...

To Reproduce

Steps to reproduce the behaviour:

NA

Expected behaviour

Return ID ERGW-2

Screenshots ๐Ÿ“ท

NA

Additional context

NA

โ“๐Ÿ‘‚ Feedback - We need standards for KQL queries

Question/Feedback

  1. All queries should project the same columns: recommendationid, name, id, param1, param2, param3, param4, param5

  2. All queries should have comments specifying what query results are provided. Example below:
    image

  3. All queries should have standardized syntax and formatting

Possible Answers/Solutions?

Helps with standardization across the different service recommendations as well as allows for easier incorporation of automation.

๐Ÿชฒ Bug Report - APP-5: recommendationid typo "asp-5" instead of "app-5"

Describe the bug

The App-5 query return incorrect recommendationid "asp-5". This should be "app-5" which is the same as the id.

To Reproduce

Create a 'microsoft.web/sites' or "microsoft.web/sites/slots' resource and execute app-5.kql.

Expected behaviour

The returned recommendationid value should be 'app-5'

Screenshots ๐Ÿ“ท

image

๐Ÿ’ก Feature Request - Automation Standards for PowerShell scripts

Describe the solution you'd like

APRL has automation standards for Azure Resource Graph queries. However, there are no standards for PowerShell scripts.

PowerShell script-based recommendations are necessary because some APRL recommendations are difficult to cover by ARG queries. So, we need automation standards for PowerShell scripts.

Describe alternatives you've considered

The following is my proposal for the automation standards for PowerShell scripts.


Automation Standards for PowerShell scripts

  1. All PowerShell scripts should have two comments at the top of the script, one comment stating Azure PowerShell script and another comment providing a description of the script results returned. For example:

    // Azure PowerShell script
    // Provides a list of Azure Container Registry resources that do not have soft delete enabled
    
  2. Scripts should only return resources that do not adhere to the APRL recommendation. For example, if the recommendation is to enable soft delete for Azure Container Registries, the associated scripts should only return Azure Container Registry resources that do not have soft delete enabled.

  3. Scripts should only include codes to return resources that do not adhere to the APRL recommendation. Scripts should not include the support code such as sign-in to Azure (Connect-AzAccount, Login-AzAccount), subscription selection (Set-AzContext, Select-AzSubscription), etc. Those codes should be executed outside of the APRL recommendation PowerShell script.

  4. The script should returned the result as an array of PSCustomObject data type, and each result object should only include the following properties:

    Property Name Data Type Required Information Returned (Example) Description
    recommendationId string Yes aks-1 The acronym of the Azure service that the query is returning results for, followed by the APRL recommendation number.
    name string Yes test-aks The resource name of the Azure resource that does not adher to the APRL recommendation.
    id string Yes /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test-resource-group/providers/Microsoft.ContainerService/managedClusters/test-aks The resource ID of the Azure resource that does not adhere to the APRL recommendation.
    tags PSCustomObject No {"Environment":"Test","Department":"IT"} Any relevant tags associated to the resource that does not adhere to the APRL recommendation. The data type should match the data type of tags in the result of ARG queries by Search-AzGraph. If not set tags, set $null.
    param1 string No networkProfile:kubenet Any additional information that is necessary to provide clarification for the APRL recommendation.
    param2 string No networkProfile:kubenet Any additional information that is necessary to provide clarification for the APRL recommendation.
    param3 string No networkProfile:kubenet Any additional information that is necessary to provide clarification for the APRL recommendation.
    param4 string No networkProfile:kubenet Any additional information that is necessary to provide clarification for the APRL recommendation.
    param5 string No networkProfile:kubenet Any additional information that is necessary to provide clarification for the APRL recommendation.
    [PSCustomObject] @{
        recommendationId = 'aks-1'
        name             = $resource.Name
        id               = $resource.Id
        tags             = if ($resource.Tags) { [PSCustomObject] ([Hashtable] $resource.Tags) } else { $null }
        param1           = 'networkProfile:kubenet'
        param2           = 'networkProfile:kubenet'
        param3           = 'networkProfile:kubenet'
        param4           = 'networkProfile:kubenet'
        param5           = 'networkProfile:kubenet'
    }

Additional context

I'm creating helper scripts for APRL that allow batch execution of the APRL's queries and PowerShell scripts together. Hard to implement unified automation if not defined automation standards for APRL PowerShell scripts. Probably, not only me that facing the similar situation.

๐Ÿชฒ Bug Report - PLEASE CHANGE ME TO SOMETHING DESCRIPTIVE

Describe the bug

A clear and concise description of what the bug is.

To Reproduce

Steps to reproduce the behaviour:

  1. Fill
  2. Me
  3. In

Expected behaviour

A clear and concise description of what you expected to happen without this bug ๐Ÿ™‚

Screenshots ๐Ÿ“ท

If applicable, add screenshots to help explain your problem. Please feel free to blur/cover any sensitive information.

Additional context

Anything else we should know to help us troubleshoot this bug?

๐Ÿชฒ Bug Report - ST-1: KQL file name not aligned to standard file name format

Describe the bug

ST-1 has two KQL files then one of two files has the non-standard file name format that has .fix suffix.

To Reproduce

  • n/a

Expected behaviour

  • Align to the standard file name format like st-1.kql.

Screenshots ๐Ÿ“ท

None

Additional context

None

๐Ÿชฒ Bug Report - Traffic Manager missing from services list and App Gateway queries no longer show

Describe the bug

Traffic Manager is no longer visible in the list of services and when going to the App GW page, the ARG queries no longer show.

To Reproduce

Steps to reproduce the behaviour:

  1. Go to https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/
  2. Traffic Manager is not listed.
  3. Go to https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/application-gateway/
  4. Queries are missing

Expected behaviour

Traffic Manager listed and App gateway queries available.

Screenshots ๐Ÿ“ท

image image

Additional context

Anything else we should know to help us troubleshoot this bug?

๐Ÿชฒ Bug Report - ANF-3 does not catch no availability zone if it is null

Describe the bug

If you create a new ANF volume with no zone, it will put the following in the resource JSON:
"zones": []

If you populate or specify the zone then it will put something like the following in the resource JSON:
"zones": [
"3"
]

I am also seeing situations where the zone is not referenced at all anywhere in the JSON. I am unsure the cause of this situation. However, this means the query is not catching these volumes with no zones because the query does the following check:
| where zones == "[]"

I suggest changing this query to check the following conditions instead:
| where array_length(zones) == 0 or isnull(zones)

That should catch both scenarios where no zone has been set.

To Reproduce

Not sure how this situation of zone field not populated into resource JSON occurs.

Expected behaviour

The recommendation should catch all volumes without zones.

Screenshots ๐Ÿ“ท

NA

Additional context

NA

๐Ÿ‘‚ Feedback - DDoS IP Protection is available in East US 2 and West Europe regions

Feedback

In the VNET-2 guidance explains DDoS IP Protection NOT available in East US 2 and West Europe regions. But DDoS IP Protection is available in those regions currently.

The pricing is available in East US 2 and West Europe regions.

Also, it could be configured.

East US 2:
image

West Europe:
image

Possible Solutions?

Remove the following sentence from the guidance of VNET-2.

P.S. DDoS IP Protection is currently not available in East US 2 and West Europe regions.

๐Ÿชฒ Bug Report - Incorrect acronym in ExpressRoute gateway

Describe the bug

The acronym for ExpressRoute gateway is ergw in the CAF documentation. However, APRL uses erg as an acronym for ExpressRoute gateway.

Example: https://github.com/Azure/Azure-Proactive-Resiliency-Library/blob/main/docs/content/services/networking/expressroute-gateway/code/erg-1/erg-1.kql

Also, mismatching the acronym between the file name and query result because the KQL query returns the correct acronym ergw even if file name erg-1.kql.

| project recommendationId = "ergw-1", name, id, tags, param1= strcat("sku-tier: " , properties.sku.tier), param2=location

To Reproduce

n/a

Expected behaviour

The file and directory name align to CAF acronyms, also those matches with the query result.

Screenshots ๐Ÿ“ท

n/a

Additional context

n/a

๐Ÿชฒ Bug Report - VM-4 query returns incorrect results

Describe the bug

This appears to be an issue when having read access to the resources. When you run the query with read access, all virtual machines will show up as having replication not enabled. However, when actually looking at the resources with additional privileges, the query will return the correct results of the ASR replication status.

As an additional note, when looking at the virtual machine's replication configuration status within the VM's blade, the VMs will also show up as not having replication enabled here as well.

To Reproduce

Steps to reproduce the behaviour:

  1. Run the query with read access to the relevant ASR and VM resources.

OR

  1. View the replication status within the VM blade.
    image

Expected behaviour

This query returns incorrect results with read-access.

Screenshots ๐Ÿ“ท

If applicable, add screenshots to help explain your problem. Please feel free to blur/cover any sensitive information.

Additional context

Anything else we should know to help us troubleshoot this bug?

๐Ÿชฒ Bug Report - Categories and services should be listed alphabetically

Describe the bug

The child page default order appears to be sorted by weight\time creation rather than alphabetically. Adding a new category such as "Monitoring" puts the menu item in the side navigation at the bottom and puts the item at the bottom of the Azure Services page category list rather than sorting alphabetically. See screen shot.

To Reproduce

Steps to reproduce the behaviour:

  1. Create a new service category
  2. See category at bottom of list

Expected behaviour

  1. New category should be shown alphabetically

Screenshots ๐Ÿ“ท

image

Additional context

Anything else we should know to help us troubleshoot this bug?

โ“๐Ÿ‘‚ Question/Feedback - What naming convention is being used for the services?

Question/Feedback

What is the naming convention used by APRL?

Also, rule code / name are in the format: <service abbreviation>-digit. This causes issues if you want to print an ordered list of rules from tools such as Azure Quick Review (i.e. FW-10 will come on top of FW-1).

Possible Answers/Solutions?

Use the service abbreviation that we recommend as part of CAF here as the new naming convention.

Rule code / name should follow the format: <service abbreviation>-\d{3}$. The samples below show some rule names for Azure Firewall:

  • AFW-001
  • AFW-010
  • AFW-101

๐Ÿชฒ Bug Report - VM-2 - Deploy Virtual Machines across Availability Zones

Describe the bug

KQL does not produce any correct result because zone is not specified under VM's properties.hardwareProfile.

To Reproduce

Steps to reproduce the behaviour:

  1. Run KQL. It will list all VMs in the sub even for zonal VMs because the condition would always evaluate to true.

Expected behaviour

List all non-zonal VMs in ARG Explorer.

Screenshots ๐Ÿ“ท

If applicable, add screenshots to help explain your problem. Please feel free to blur/cover any sensitive information.

Additional context

Anything else we should know to help us troubleshoot this bug?
Nothing, I will submit a PR to fix this bug.

๐Ÿชฒ Bug Report - VM-11 Cannot be validated with ARGs. Let's remove the ARG and/or develop powershell/shell scripts to capture that from the OS.

Describe the bug

The VM-11 Cannot be validated with ARGs. Let's remove the ARG file and/or develop Powershell (for Windows)/shell for Linux scripts to capture that from the OS.

To Reproduce

Steps to reproduce the behavior:

  1. Running this query does not generate guest OS information, only Azure platform information.

Expected behavior

The VM-11 Cannot be validated with ARGs.

Screenshots ๐Ÿ“ท

n/a

Additional context

The VM-11 Cannot be validated with ARGs.

๐Ÿชฒ Bug Report - VM-20: Return incorrect result

Describe the bug

The VM-20 query returns incorrect result. Because the VM extension installation state does not represent VM insights enabled, or not.

To Reproduce

Steps to reproduce the behavior:

  1. Deploy an Azure Windows VM.
  2. Install AzureMonitorWindowsAgent extension to the deployed Azure Windows VM.

The query result does not have the deployed Azure Windows VM even though VM insights is not enabled.

Expected behavior

The query returns the correct result.

Screenshots ๐Ÿ“ท

  1. Not enabled VM insights on vm6, and it have the AzureMonitorWindowsAgent VM extension.

    image

    image

    image

    image

  2. The query result does not have vm6 even though VM insights is not enabled. (The result should include vm6 because VM insights is not enabled on the VM)

    image

Additional context

None

vnet-1: GatewaySubnet should be excluded as applying NSG on it is not supported.

Describe the bug

GatewaySubnet should be excluded as applying NSG on it is not supported.

To Reproduce

  1. Create a VNet and a "GatewaySubnet" subnet in it.
  2. Run vnet-1.kql
  3. The output shows the GatewaySubnet as a recommendation item.

Expected behaviour

KQL should ignore GatewaySubnet in where clause.

Screenshots ๐Ÿ“ท

N/A

Additional context

N/A

โ“๐Ÿ‘‚ Question/Feedback - KQL files under "general-networking" and "network-watcher" have the same ID

Question/Feedback

KQL files under the general-networking and network-watcher have the same ID. Is this expected?

Possible Answers/Solutions?

I'm guessing each query file has a unique ID for easy identification.

๐Ÿชฒ Bug Report - KV-5 query returns incorrect results

Describe the bug

The Resource Graph Query cannot return whether the diagnostic setting is enabled.
Since properties.diagnosticSettings does not exist on Key Vault, the query always returns all Key Vaults even if diagnostic logs are set.

To Reproduce

Steps to reproduce the behaviour:

  1. Run KQL. It will list all Key Vaults even if diagnostic logs are set because the following condition would always evaluate to true.
| where Diag = (isempty (properties.diagnosticSettings))

Expected behaviour

The query should return a list of Key Vaults that do not have diagnostic settings enabled.

Screenshots ๐Ÿ“ท

If applicable, add screenshots to help explain your problem. Please feel free to blur/cover any sensitive information.

Additional context

There seems to be no way to return desired results by KQL at present. In order to avoid confusion, it would be better to remove the query until the feature is available.

๐Ÿชฒ Bug Report - "Show/Hide Query/Script" code may show/hide other section's code

Describe the bug

Using hugoIf multiple KQL queries contain exactly the same code, the code snippet in _index.md will show/hide all of the KQL code sections when any of the corresponding Show/Hide Query/Script buttons are used.

For example, when WAF-1, WAF-2, WAF-4 and WAF-5 all have the same code (in separate files) of "// cannot-be-validated-with-arg", then any of the Show/Hide Query/Script buttons will toggle showing/hiding all of the code sections for WAF-1, WAF-2, WAF-4, WAF-5.

Live example:
https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/firewall/

Toggle any of AFW-2, AFW-4 or AFW-7 to show/hide all 3 at the same time.

To Reproduce

Steps to reproduce the behaviour:

  1. Create KQL code files with the same content
  2. Using either hugo or the live site with the updated code, toggle the corresponding sections
  3. Note if all affected sections can toggle the state of all other affected sections.

Expected behaviour

A section's Show/Hide Query/Script toggle button should only show/hide that particular section's code.

Screenshots ๐Ÿ“ท

Screenshot 2023-10-30 171817

Additional context

Anything else we should know to help us troubleshoot this bug?

๐Ÿชฒ Bug Report - ERGW-1 including ExpressRoute gateway even though it has two connections to circuits from different peering locations

Describe the bug

I have an ExpressRoute Gateway with connections to circuits from two different peering locations, but the query is still capturing it as part of the conditions for the query.

To Reproduce

Expected behaviour

If the gateway has 2 connections from 2 separate peering locations it should not be caught by the query.

Screenshots ๐Ÿ“ท

Additional context

@ejhenry

๐Ÿชฒ Bug Report - Service Guidance Categories Missing for Several Services

Describe the bug

All Service Recommendations Pages should have a column within the Summary of Recommendations called Category. The Category should also be listed within the individual Recommendations Details as well. To name a few services that are missing Category (either within the Summary of Recommendations table or the Recommendations Details) include the following list:

  • Azure Databricks
  • Azure Site Recovery
  • Compute Gallery
  • Image Templates
  • VMSS
  • Virtual Machines
  • AKS
  • Container Registry
  • SQL DB
  • Cosmos DB
  • API Management
  • Automation Account
  • Management Groups
  • Log analytics
  • Resource Health Alerts
  • App Gateway
  • Express Route Gateway
  • Firewall
  • Front Door
  • Load Balancer
  • Public IP (also missing Impact column)
  • Traffic Manager
  • Virtual Networks (also missing Impact column)
  • VPN Gateway
  • WAF
  • Key Vault
  • AVD (Design area column should be renamed to Category in table)
  • AVS (Design area column should be renamed to Category in table)
  • Storage Account
  • App Service Plan
  • Web App

To Reproduce

Steps to reproduce the behaviour:

  1. Go to the following service pages listed above and you will see that there is either no Category column in the table or in the recommendation details.

Expected behaviour

Please correct by adjusting service recommendation pages in accordance with the following template

Screenshots ๐Ÿ“ท

Incorrect (missing Category in both table and recommendation details):
image

Correct:
image

Additional context

Anything else we should know to help us troubleshoot this bug?

๐Ÿชฒ Bug Report - VM-7 Query returns Incorrect results

Describe the bug

A clear and concise description of what the bug is.

To Reproduce

Steps to reproduce the behaviour:

  1. For VM-7, the query returns incorrect results by returning virtual machines that are protected by Azure backup.

Note: I've noticed that with Read Access, the backup status within the VM capabilities view shows as in an Error state:
image

In order to determine whether a virtual machine is being backed up, I have been using the Backup Center feature within the Azure Portal.

Expected behaviour

The query should return a list of virtual machines that have backups configured even if the person running the query has read-only access.

Screenshots ๐Ÿ“ท

If applicable, add screenshots to help explain your problem. Please feel free to blur/cover any sensitive information.

Additional context

Anything else we should know to help us troubleshoot this bug?

๐Ÿชฒ Bug Report - ST-3 flags Premium accounts for lack of access tier

Describe the bug

KQL query for ST-3 flags Premium storage accounts for lack of the access tier while there is no access tier setting available for Premium storage accounts and therefore I consider it to be a bug.

To Reproduce

Steps to reproduce the behaviour:

Run KQL query gains Azure Storage Account - Premium tier.

resources
| where type =~'microsoft.storage/storageaccounts'
| where isnull(properties.accessTier)
| project recommendationId = 'st-3', name, id, param1="not defined - GeneralPurpose V1"

Expected behaviour

Only STs of displayed tier without access tier specified (GPv1) should be displayed.

โ“๐Ÿ‘‚ Question/Feedback - NSG-1: Is this against NSGs or all Azure resources?

Question/Feedback

NSG-1 talk about NSGs or all Azure resources?

https://azure.github.io/Azure-Proactive-Resiliency-Library/services/networking/network-security-group/#nsg-1---configure-diagnostic-settings-for-all-azure-resources

NSG-1 - Configure Diagnostic Settings for all Azure Resources

Possible Answers/Solutions?

If NSG-1 is about NSG, it needs to fix the title to NSG-1 - Configure Diagnostic Settings for all network security groups.
If NSG-1 talk about all Azure resources, this recommendation should move to another category. General is better, I think.

๐Ÿ’ก Feature Request - Guidance for migrating from legacy Azure Databrick workspaces

Describe the solution you'd like

Guidance to help customers migrate from legacy Azure Databrick workspaces.

Additional context

Azure Databricks shares control plane across multiple regions. As these regions launch their own control plane, we need to help customers migrate their workspaces so that they can benefit from in-region control plane and don't have an indirect dependency on outages from another region.

๐Ÿชฒ Bug Report - VM-10: False positive result

Describe the bug

The VM-10 query returns false positive result in the following situation because the query is matched NICs by the name. It should use resource ID instead of name to get stabilized result.

There are NICs that have the same name and they are in different resource groups:

  • rg1
    • nic5678: Accelerated networking Off
  • rg2
    • nic5678: Accelerated networking On

To Reproduce

  1. Setup to the following situation.

    • rg1
      • nic5678: Accelerated networking Off
    • rg2
      • nic5678: Accelerated networking On
  2. Run the VM-10 query.

Expected behavior

  • VM-10 query returns correct result.
    • The query should use the resource ID of NIC instead of name to match.

Screenshots ๐Ÿ“ท

There are two NICs that have the same name and they are in different resource groups. The first NIC's accelerated networking is disabled, the second NIC's accelerated networking is enabled.

image

The VM-10 query returns both NICs as disabled accelerated networking even though one is enabled.

image

Additional context

  • None

๐Ÿ’ก Feature Request - Guidance for selecting alternate VM SKUs for Databricks jobs

Describe the solution you'd like

Guidance for customers to select multiple VM SKUs for their Databricks jobs.

Additional context

Databricks uses regional VMs when launching job clusters. These clusters can be impacted when there are capacity constraints in a region or availability zone. To ensure customers can run their Databricks jobs consistently, they should plan and verify their VM SKUs so that they can quickly switch between them if there is capacity constraints.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.