Skip to content

v1.0.0

Compare
Choose a tag to compare
@sergenyalcin sergenyalcin released this 16 Nov 15:24
· 250 commits to main since this release
da16191

v1.0.0 contains major performance improvements for reconciling Terraform resources.

This release introduces two new managed.Connecters and two new managed.ExternalClients (controller.noForkExternal and the controller.noForkAsyncExternal) for reconciling Terraformed resources without forking any Terraform CLI or Terraform provider processes.

The new external client implementation consumes the Terraform provider's Go provider schema and invokes the CRUD functions registered in that schema via the terraform-plugin-sdk utility functions.
The new external clients employ an in-memory Terraform state cache as these clients no longer construct Terraform workspaces while reconciling their resources.

New external clients provide significant CPU and memory footprint reduction compared to traditional external clients. Below is an example result from Upbound Official provider-aws using the new external client for 1K and 10K MR. These results are shared not to provide a Sizing Guide but as a reference to understand the improvements in performance metrics. Also, the experiment sets of tests are shared:

  • Objective: 10K UserPolicyAttachment MRs

  • Parallelization: 500 reconcile workers

  • Poll period: 10min

  • Node: m5.2xlarge (8vCPU, 32GiB RAM)

    Average TTR Peak TTR Average Memory Peak Memory Average CPU Peak CPU
    4.40 secs 79 secs 775.41 MiB 1185.62 MiB 15.25% 20.90%
  • Objective: 1K UserPolicyAttachment MRs

  • Parallelization: 500 reconcile workers

  • Poll period: 10min

  • Node: m5.2xlarge (8vCPU, 32GiB RAM)

    Average TTR Peak TTR Average Memory Peak Memory Average CPU Peak CPU
    4.15 secs 44 secs 630.39 MiB 948.35 MiB 9.06% 12.69%

What's Changed

New Contributors

Full Changelog: v0.10.0...v1.0.0