tyson
tyson | cdk-ecs-service-extensions | |
---|---|---|
11 | 1 | |
530 | 58 | |
0.8% | - | |
6.9 | 9.5 | |
about 1 month ago | 6 days ago | |
Go | TypeScript | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tyson
- TySON: TypeScript Object Notation
- TySON (TypeScript Object Notation)
- TySON: Use TypeScript as a Configuration Language
-
Rethinking Infrastructure as Code from Scratch
I have a similar view to yours: as soon as you need variables, imports, functions or any other type of logic ... the existing "data-only" formats break down. Over time people either invent new configuration languages that enable logic (i.e. cue or jsonnet), or they try to bolt-in some limited version of these primitives into their configuration.
My personal take is that at some point you are better of just using a full programming langugage like TypeScript. We created TySON https://github.com/jetpack-io/tyson to experiment with that idea.
- Show HN: TySON – TypeScript as Configuration
- TySON: a native go library that lets you use TypeScript as an embedded configuration language without depending on Node or V8
-
TySON: TypeScript as an embeddable configuration language, without depending on Node or V8
Apparently "not depending on Node or V8" means depending on some random Go JS engine instead.
cdk-ecs-service-extensions
-
Rethinking Infrastructure as Code from Scratch
Author here. This is correct. I have used Pulumi and I love CDK. I think the models in Pulumi and CDK are both great, but they tend to be either too low level or too high level.
For example Pulumi has a `awsx.ecs.FargateService` class that can deploy a container to AWS Fargate, but the API is limited and you don't really have the capability to remix it into other scenarios. For example you have the capability to attach a load balancer to a service as ingress, but what if you want to attach an API Gateway, or just setup a Route53 record for direct public IP ingress?
CDK has a few more variations in what you can do but it tends to be even worse because it has class names like: `ApplicationLoadBalancedEc2Service` and `NetworkLoadBalancedFargateService`. Switching your infrastructure requires switching to an entirely different top level when you define your infrastructure.
What I am proposing with the extensions interface is that we build more a class inheritance style model, kind of like CSS, to let people mix in alternative behaviors, alternate configurations, or even attached resources in an additive way, onto the existing infrastructure as code model.
In the example prototype on Github you can see how this works: https://github.com/cdklabs/cdk-ecs-service-extensions
All types of mutations, from configuration mutations, to attached resources are just extensions that you can use the `ServiceDescription.add(Extension)` method to attach to your existing infrastructure, kind of like just layering on another CSS class onto your DOM element. I think for large and complex infrastructure this will be a more scalable, decouplable, and readable approach.
What are some alternatives?
json5-spec - The JSON5 Data Interchange Format
crossplane - The Cloud Native Control Plane
json5 - JSON5 — JSON for Humans
bicep - Bicep is a declarative language for describing and deploying Azure resources
gookit/config - 📝 Go configuration manage(load,get,set,export). support JSON, YAML, TOML, Properties, INI, HCL, ENV and Flags. Multi file load, data override merge, parse ENV var. Go应用配置加载管理,支持多种格式,多文件加载,远程文件加载,支持数据合并,解析环境变量名
dhall-lang - Maintainable configuration files
goConfig - goconfig uses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
goja - ECMAScript/JavaScript engine in pure Go
AnnaDB - Developer-first database
aconfig - Simple, useful and opinionated config loader.