From 8618c540e4e6a68e2f9b0a75b98a33423870a0e8 Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 18:34:49 +0200 Subject: [PATCH 01/11] feat(doc): true-composable-templates --- blog/2024-02-26-true-composable-templates.md | 97 ++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 blog/2024-02-26-true-composable-templates.md diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md new file mode 100644 index 000000000..73cdcc6f1 --- /dev/null +++ b/blog/2024-02-26-true-composable-templates.md @@ -0,0 +1,97 @@ +--- +title: Simplifying Cloud Development: True Composable Templates +description: Contenplating on a discussion with another PM who challanged Wing value proposition vs template +authors: + - ekeren +tags: [platform engineering, templates, terraform modules, winglang, wing cloud] +hide_table_of_contents: true +--- + +# Simplifying Cloud Development: True Composable Templates + +In the journey of software development, particularly for cloud-based projects, +templates often seem like the go-to solution for their promise of speed and simplicity. +This notion was at the forefront of a conversation I had with a Product Manager who doesn’t delve into coding. +I had shared with him about my workshop project, a blend of React, Vite, WebSockets, and a dynamic counter, +which had garnered positive attention for its effectiveness and ease of setup during a workshop. +I told him that the audience was able to create a simple but powerful setup that worked locally and was deployable on AWS using terraform. +I noted that if I would have tried to achieve this without Wing, it would have taken me two week to get to the same point. +However, the Product Manager offered a perspective that prompted deep reflection. +He acknowledged the appeal of my project but pointed out that its functionalities could potentially be replicated using templates in any technology. +The main point of his argument was about differentiation: if a template can encapsulate all that Wing offers, then what truly sets Wing apart? +He didn’t stop there. He added that templates could be designed with a layer of customization, +allowing developers to tweak them for specific needs. +This layer would enable any developer to adapt the template to their unique project requirements. + +#### Why are we talking about Templates? +In today's platform engineering space, where companies are creating strong teams with a clear mission to +“empower developers for self service experience in ways that adhere to the enterprise concern” +everything looks like a nail and templates are hammer. +Whether they come in a form of terraform modules, or a set of off the shelf repos you can clone. +I would even go far and observe teams using solutions like Render.com where you pick up a templatized starter project and start working with it. +Templates are a very powerful tool with a very appealing time to value, +no wonder this product manager asked about Wing vs a template on any technology. + +#### Templates and Their Limits +While templates offer a starting point, their predefined structure can sometimes box in creativity and innovation. +They’re great for getting off the ground quickly but may not always cater to the nuanced needs of every project. +The ability to customize a template does introduce flexibility, but this can also introduce complexity, +requiring developers to navigate and manipulate the template's constraints to suit their specific objectives. + +#### Template Composition +Wing stands out by embracing flexibility and composition from the ground up. +It’s not just about having a framework or a set of functionalities; it’s about how these elements interact and complement each other. +Wing goes beyond the traditional template model by emphasizing seamless integration and adaptability. +The system is designed to let developers piece together different components like building blocks, +ensuring they fit regardless of the project's complexity. + +When we normally think about composition in programming language we think about a class being composed of members and inheritance. +But in practice a cloud system is not just the composition of resources, +it is also the code and usage patterns that stitches them together. +The fact that our cloud system is composed of an AWS Bedrock Model and a Lambda Function is just part of this composition. +In order for a system to be described (using IaC) the components composition must consist of which resources are actually calling who. +The true composition of a cloud system is also the access patterns. +The introduction of the "onLift" function exemplifies Wing’s innovative approach. +This feature automates the permissions and configurations needed when a cloud function interacts with other resources, like a bedrock model. +With Wing, developers don’t need to manually set up these connections or permissions. +Instead, they can focus on building their application’s unique features, knowing that Wing handles the underlying integrations smoothly. + +```ts +class BedrockModel { + pub onLift(host: std.IInflightHost, ops: Array) { + if let lambda = aws.Function.from(host) { + lambda.addPolicyStatements({ + actions: ["bedrock:InvokeModel"], + effect: aws.Effect.ALLOW, + resources: [ + "arn:aws:bedrock:*::foundation-model/{this.modelId}" + ] + }); + } + } +} +``` + +This code snippet illustrates how Wing enables developers to concentrate on what their code is meant to do, +rather than getting entangled in the operational details. +It’s about ensuring all parts of the application can communicate and operate without the developer needing to intervene manually. +In the above example the developer of the bedrock resource, doesn’t know of the callee that is going to use it. +It does know what is required in order to use itself with other resources. +The system identified this indirect composition of resource and call the onLift method of the Bedrock model with the callee as the host. + +#### The Real Value of Using Wing +The conversation highlighted an important aspect of using templates — the potential for customization to make them fit for any project. +Yet, Wing's true value lies in its foundational approach to building applications. +It's designed for developers who want to go beyond the limitations of templates, +offering a platform where components not only fit together by design but also adapt and evolve as the project grows. +When a project grows, they grow outside the boundaries of what we initially thought should be the template version, +the project setup and architecture needs to allow developers to modify their architecture +by allowing developers to refactor and change patterns in the way that fits the current business requirements. + +## Conclusion +The Product Manager’s insights brought an important dimension to the discussion about Wing versus templates. +While templates, even with customization options, offer a quick start, Wing provides a deeper level of integration and flexibility. +It fosters an environment where development is not just about adapting a template to fit but about creating a tailored, +efficient, and scalable solution from the outset. +Wing represents a shift towards more dynamic and adaptable cloud development, +where the focus is on innovation, scalability, and the seamless integration of diverse components. From a438e2f147a9ba860eb8932cbb84f629afda5695 Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 18:36:53 +0200 Subject: [PATCH 02/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 73cdcc6f1..378350dbb 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -1,5 +1,5 @@ --- -title: Simplifying Cloud Development: True Composable Templates +title: True Composable Templates description: Contenplating on a discussion with another PM who challanged Wing value proposition vs template authors: - ekeren @@ -7,7 +7,7 @@ tags: [platform engineering, templates, terraform modules, winglang, wing cloud] hide_table_of_contents: true --- -# Simplifying Cloud Development: True Composable Templates +# True Composable Templates In the journey of software development, particularly for cloud-based projects, templates often seem like the go-to solution for their promise of speed and simplicity. From 0c7910dec0081ba530ef443dd5a85d4a77b4679a Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 18:48:25 +0200 Subject: [PATCH 03/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 146 ++++++++----------- 1 file changed, 60 insertions(+), 86 deletions(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 378350dbb..1cce1afd0 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -1,97 +1,71 @@ ---- -title: True Composable Templates -description: Contenplating on a discussion with another PM who challanged Wing value proposition vs template -authors: - - ekeren -tags: [platform engineering, templates, terraform modules, winglang, wing cloud] -hide_table_of_contents: true ---- - # True Composable Templates -In the journey of software development, particularly for cloud-based projects, -templates often seem like the go-to solution for their promise of speed and simplicity. -This notion was at the forefront of a conversation I had with a Product Manager who doesn’t delve into coding. -I had shared with him about my workshop project, a blend of React, Vite, WebSockets, and a dynamic counter, -which had garnered positive attention for its effectiveness and ease of setup during a workshop. -I told him that the audience was able to create a simple but powerful setup that worked locally and was deployable on AWS using terraform. -I noted that if I would have tried to achieve this without Wing, it would have taken me two week to get to the same point. -However, the Product Manager offered a perspective that prompted deep reflection. -He acknowledged the appeal of my project but pointed out that its functionalities could potentially be replicated using templates in any technology. -The main point of his argument was about differentiation: if a template can encapsulate all that Wing offers, then what truly sets Wing apart? -He didn’t stop there. He added that templates could be designed with a layer of customization, -allowing developers to tweak them for specific needs. -This layer would enable any developer to adapt the template to their unique project requirements. +In the journey of software development, especially for cloud-based projects, templates are often +seen as the go-to solution due to their promise of speed and simplicity. This concept was central +to a discussion I had with a Product Manager who doesn't specialize in coding. I shared details +about my workshop project—a blend of React, Vite, WebSockets, and a dynamic counter—that received +positive feedback for its effectiveness and ease of setup during a workshop. The audience managed +to create a simple yet powerful setup that worked locally and could be deployed on AWS using +Terraform. I noted that achieving this without Wing would have taken me two weeks to reach the same +point. However, the Product Manager offered a perspective that led to deep reflection. He +acknowledged the appeal of my project but pointed out that its functionalities could potentially be +replicated using templates in any technology. His main argument focused on differentiation: if a +template can encapsulate all that Wing offers, then what truly sets Wing apart? + +He elaborated that templates could be designed with a customization layer, allowing developers to +adjust them for specific needs, enabling any developer to adapt the template to their unique +project requirements. + +### Why Are We Talking About Templates? -#### Why are we talking about Templates? -In today's platform engineering space, where companies are creating strong teams with a clear mission to -“empower developers for self service experience in ways that adhere to the enterprise concern” -everything looks like a nail and templates are hammer. -Whether they come in a form of terraform modules, or a set of off the shelf repos you can clone. -I would even go far and observe teams using solutions like Render.com where you pick up a templatized starter project and start working with it. -Templates are a very powerful tool with a very appealing time to value, -no wonder this product manager asked about Wing vs a template on any technology. +In today's platform engineering space, where companies are forming strong teams with the clear +mission to “empower developers for a self-service experience in ways that adhere to enterprise +concerns,” everything looks like a nail, and templates are the hammer. Whether they come in the +form of Terraform modules or a set of off-the-shelf repositories you can clone, templates are a +powerful tool with a very appealing time-to-value proposition. It's no wonder this product manager +inquired about Wing versus a template in any technology. -#### Templates and Their Limits -While templates offer a starting point, their predefined structure can sometimes box in creativity and innovation. -They’re great for getting off the ground quickly but may not always cater to the nuanced needs of every project. -The ability to customize a template does introduce flexibility, but this can also introduce complexity, -requiring developers to navigate and manipulate the template's constraints to suit their specific objectives. +### Templates and Their Limits -#### Template Composition -Wing stands out by embracing flexibility and composition from the ground up. -It’s not just about having a framework or a set of functionalities; it’s about how these elements interact and complement each other. -Wing goes beyond the traditional template model by emphasizing seamless integration and adaptability. -The system is designed to let developers piece together different components like building blocks, -ensuring they fit regardless of the project's complexity. +While templates provide a starting point, their predefined structure can sometimes limit creativity +and innovation. They're great for quickly getting off the ground but may not always cater to the +nuanced needs of every project. The ability to customize a template introduces flexibility, but it +can also add complexity, requiring developers to navigate and manipulate the template's constraints +to suit their specific objectives. -When we normally think about composition in programming language we think about a class being composed of members and inheritance. -But in practice a cloud system is not just the composition of resources, -it is also the code and usage patterns that stitches them together. -The fact that our cloud system is composed of an AWS Bedrock Model and a Lambda Function is just part of this composition. -In order for a system to be described (using IaC) the components composition must consist of which resources are actually calling who. -The true composition of a cloud system is also the access patterns. -The introduction of the "onLift" function exemplifies Wing’s innovative approach. -This feature automates the permissions and configurations needed when a cloud function interacts with other resources, like a bedrock model. -With Wing, developers don’t need to manually set up these connections or permissions. -Instead, they can focus on building their application’s unique features, knowing that Wing handles the underlying integrations smoothly. +### Template Composition -```ts -class BedrockModel { - pub onLift(host: std.IInflightHost, ops: Array) { - if let lambda = aws.Function.from(host) { - lambda.addPolicyStatements({ - actions: ["bedrock:InvokeModel"], - effect: aws.Effect.ALLOW, - resources: [ - "arn:aws:bedrock:*::foundation-model/{this.modelId}" - ] - }); - } - } -} -``` +Wing stands out by embracing flexibility and composition from the ground up. It's not just about +having a framework or a set of functionalities; it's about how these elements interact and +complement each other. Wing goes beyond the traditional template model by emphasizing seamless +integration and adaptability. The system is designed to let developers piece together different +components like building blocks, ensuring they fit regardless of the project's complexity. -This code snippet illustrates how Wing enables developers to concentrate on what their code is meant to do, -rather than getting entangled in the operational details. -It’s about ensuring all parts of the application can communicate and operate without the developer needing to intervene manually. -In the above example the developer of the bedrock resource, doesn’t know of the callee that is going to use it. -It does know what is required in order to use itself with other resources. -The system identified this indirect composition of resource and call the onLift method of the Bedrock model with the callee as the host. +When we typically think about composition in programming languages, we think about a class composed +of members and inheritance. But in practice, a cloud system is not just the composition of +resources; it is also the code and usage patterns that stitch them together. The true composition +of a cloud system also includes the access patterns. The introduction of the "onLift" function +exemplifies Wing’s innovative approach, automating the permissions and configurations needed when a +cloud function interacts with other resources, like a bedrock model. With Wing, developers don’t +need to manually set up these connections or permissions. Instead, they can focus on building their +application’s unique features, knowing that Wing handles the underlying integrations smoothly. -#### The Real Value of Using Wing -The conversation highlighted an important aspect of using templates — the potential for customization to make them fit for any project. -Yet, Wing's true value lies in its foundational approach to building applications. -It's designed for developers who want to go beyond the limitations of templates, -offering a platform where components not only fit together by design but also adapt and evolve as the project grows. -When a project grows, they grow outside the boundaries of what we initially thought should be the template version, -the project setup and architecture needs to allow developers to modify their architecture -by allowing developers to refactor and change patterns in the way that fits the current business requirements. +### The Real Value of Using Wing + +The conversation highlighted an important aspect of using templates — the potential for +customization to make them fit for any project. Yet, Wing's true value lies in its foundational +approach to building applications. It's designed for developers who want to go beyond the +limitations of templates, offering a platform where components not only fit together by design but +also adapt and evolve as the project grows. When a project grows, it moves outside the boundaries +of what we initially thought should be the template version. The project setup and architecture +need to allow developers to modify their architecture by enabling them to refactor and change +patterns in a way that fits the current business requirements. ## Conclusion -The Product Manager’s insights brought an important dimension to the discussion about Wing versus templates. -While templates, even with customization options, offer a quick start, Wing provides a deeper level of integration and flexibility. -It fosters an environment where development is not just about adapting a template to fit but about creating a tailored, -efficient, and scalable solution from the outset. -Wing represents a shift towards more dynamic and adaptable cloud development, -where the focus is on innovation, scalability, and the seamless integration of diverse components. + +The Product Manager’s insights added an important dimension to the discussion about Wing versus +templates. While templates, even with customization options, offer a quick start, Wing provides a +deeper level of integration and flexibility. It fosters an environment where development is not +just about adapting a template to fit but about creating a tailored, efficient, and scalable +solution from the outset. Wing represents a shift towards more dynamic and adaptable cloud +development, focusing on innovation, scalability, and the seamless integration of diverse components. From 0d1e630ff6117cc32d4b59d3bee13aaa86a894bc Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 18:52:12 +0200 Subject: [PATCH 04/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 146 +++++++++++-------- 1 file changed, 86 insertions(+), 60 deletions(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 1cce1afd0..378350dbb 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -1,71 +1,97 @@ -# True Composable Templates - -In the journey of software development, especially for cloud-based projects, templates are often -seen as the go-to solution due to their promise of speed and simplicity. This concept was central -to a discussion I had with a Product Manager who doesn't specialize in coding. I shared details -about my workshop project—a blend of React, Vite, WebSockets, and a dynamic counter—that received -positive feedback for its effectiveness and ease of setup during a workshop. The audience managed -to create a simple yet powerful setup that worked locally and could be deployed on AWS using -Terraform. I noted that achieving this without Wing would have taken me two weeks to reach the same -point. However, the Product Manager offered a perspective that led to deep reflection. He -acknowledged the appeal of my project but pointed out that its functionalities could potentially be -replicated using templates in any technology. His main argument focused on differentiation: if a -template can encapsulate all that Wing offers, then what truly sets Wing apart? - -He elaborated that templates could be designed with a customization layer, allowing developers to -adjust them for specific needs, enabling any developer to adapt the template to their unique -project requirements. +--- +title: True Composable Templates +description: Contenplating on a discussion with another PM who challanged Wing value proposition vs template +authors: + - ekeren +tags: [platform engineering, templates, terraform modules, winglang, wing cloud] +hide_table_of_contents: true +--- -### Why Are We Talking About Templates? +# True Composable Templates -In today's platform engineering space, where companies are forming strong teams with the clear -mission to “empower developers for a self-service experience in ways that adhere to enterprise -concerns,” everything looks like a nail, and templates are the hammer. Whether they come in the -form of Terraform modules or a set of off-the-shelf repositories you can clone, templates are a -powerful tool with a very appealing time-to-value proposition. It's no wonder this product manager -inquired about Wing versus a template in any technology. +In the journey of software development, particularly for cloud-based projects, +templates often seem like the go-to solution for their promise of speed and simplicity. +This notion was at the forefront of a conversation I had with a Product Manager who doesn’t delve into coding. +I had shared with him about my workshop project, a blend of React, Vite, WebSockets, and a dynamic counter, +which had garnered positive attention for its effectiveness and ease of setup during a workshop. +I told him that the audience was able to create a simple but powerful setup that worked locally and was deployable on AWS using terraform. +I noted that if I would have tried to achieve this without Wing, it would have taken me two week to get to the same point. +However, the Product Manager offered a perspective that prompted deep reflection. +He acknowledged the appeal of my project but pointed out that its functionalities could potentially be replicated using templates in any technology. +The main point of his argument was about differentiation: if a template can encapsulate all that Wing offers, then what truly sets Wing apart? +He didn’t stop there. He added that templates could be designed with a layer of customization, +allowing developers to tweak them for specific needs. +This layer would enable any developer to adapt the template to their unique project requirements. -### Templates and Their Limits +#### Why are we talking about Templates? +In today's platform engineering space, where companies are creating strong teams with a clear mission to +“empower developers for self service experience in ways that adhere to the enterprise concern” +everything looks like a nail and templates are hammer. +Whether they come in a form of terraform modules, or a set of off the shelf repos you can clone. +I would even go far and observe teams using solutions like Render.com where you pick up a templatized starter project and start working with it. +Templates are a very powerful tool with a very appealing time to value, +no wonder this product manager asked about Wing vs a template on any technology. -While templates provide a starting point, their predefined structure can sometimes limit creativity -and innovation. They're great for quickly getting off the ground but may not always cater to the -nuanced needs of every project. The ability to customize a template introduces flexibility, but it -can also add complexity, requiring developers to navigate and manipulate the template's constraints -to suit their specific objectives. +#### Templates and Their Limits +While templates offer a starting point, their predefined structure can sometimes box in creativity and innovation. +They’re great for getting off the ground quickly but may not always cater to the nuanced needs of every project. +The ability to customize a template does introduce flexibility, but this can also introduce complexity, +requiring developers to navigate and manipulate the template's constraints to suit their specific objectives. -### Template Composition +#### Template Composition +Wing stands out by embracing flexibility and composition from the ground up. +It’s not just about having a framework or a set of functionalities; it’s about how these elements interact and complement each other. +Wing goes beyond the traditional template model by emphasizing seamless integration and adaptability. +The system is designed to let developers piece together different components like building blocks, +ensuring they fit regardless of the project's complexity. -Wing stands out by embracing flexibility and composition from the ground up. It's not just about -having a framework or a set of functionalities; it's about how these elements interact and -complement each other. Wing goes beyond the traditional template model by emphasizing seamless -integration and adaptability. The system is designed to let developers piece together different -components like building blocks, ensuring they fit regardless of the project's complexity. +When we normally think about composition in programming language we think about a class being composed of members and inheritance. +But in practice a cloud system is not just the composition of resources, +it is also the code and usage patterns that stitches them together. +The fact that our cloud system is composed of an AWS Bedrock Model and a Lambda Function is just part of this composition. +In order for a system to be described (using IaC) the components composition must consist of which resources are actually calling who. +The true composition of a cloud system is also the access patterns. +The introduction of the "onLift" function exemplifies Wing’s innovative approach. +This feature automates the permissions and configurations needed when a cloud function interacts with other resources, like a bedrock model. +With Wing, developers don’t need to manually set up these connections or permissions. +Instead, they can focus on building their application’s unique features, knowing that Wing handles the underlying integrations smoothly. -When we typically think about composition in programming languages, we think about a class composed -of members and inheritance. But in practice, a cloud system is not just the composition of -resources; it is also the code and usage patterns that stitch them together. The true composition -of a cloud system also includes the access patterns. The introduction of the "onLift" function -exemplifies Wing’s innovative approach, automating the permissions and configurations needed when a -cloud function interacts with other resources, like a bedrock model. With Wing, developers don’t -need to manually set up these connections or permissions. Instead, they can focus on building their -application’s unique features, knowing that Wing handles the underlying integrations smoothly. +```ts +class BedrockModel { + pub onLift(host: std.IInflightHost, ops: Array) { + if let lambda = aws.Function.from(host) { + lambda.addPolicyStatements({ + actions: ["bedrock:InvokeModel"], + effect: aws.Effect.ALLOW, + resources: [ + "arn:aws:bedrock:*::foundation-model/{this.modelId}" + ] + }); + } + } +} +``` -### The Real Value of Using Wing +This code snippet illustrates how Wing enables developers to concentrate on what their code is meant to do, +rather than getting entangled in the operational details. +It’s about ensuring all parts of the application can communicate and operate without the developer needing to intervene manually. +In the above example the developer of the bedrock resource, doesn’t know of the callee that is going to use it. +It does know what is required in order to use itself with other resources. +The system identified this indirect composition of resource and call the onLift method of the Bedrock model with the callee as the host. -The conversation highlighted an important aspect of using templates — the potential for -customization to make them fit for any project. Yet, Wing's true value lies in its foundational -approach to building applications. It's designed for developers who want to go beyond the -limitations of templates, offering a platform where components not only fit together by design but -also adapt and evolve as the project grows. When a project grows, it moves outside the boundaries -of what we initially thought should be the template version. The project setup and architecture -need to allow developers to modify their architecture by enabling them to refactor and change -patterns in a way that fits the current business requirements. +#### The Real Value of Using Wing +The conversation highlighted an important aspect of using templates — the potential for customization to make them fit for any project. +Yet, Wing's true value lies in its foundational approach to building applications. +It's designed for developers who want to go beyond the limitations of templates, +offering a platform where components not only fit together by design but also adapt and evolve as the project grows. +When a project grows, they grow outside the boundaries of what we initially thought should be the template version, +the project setup and architecture needs to allow developers to modify their architecture +by allowing developers to refactor and change patterns in the way that fits the current business requirements. ## Conclusion - -The Product Manager’s insights added an important dimension to the discussion about Wing versus -templates. While templates, even with customization options, offer a quick start, Wing provides a -deeper level of integration and flexibility. It fosters an environment where development is not -just about adapting a template to fit but about creating a tailored, efficient, and scalable -solution from the outset. Wing represents a shift towards more dynamic and adaptable cloud -development, focusing on innovation, scalability, and the seamless integration of diverse components. +The Product Manager’s insights brought an important dimension to the discussion about Wing versus templates. +While templates, even with customization options, offer a quick start, Wing provides a deeper level of integration and flexibility. +It fosters an environment where development is not just about adapting a template to fit but about creating a tailored, +efficient, and scalable solution from the outset. +Wing represents a shift towards more dynamic and adaptable cloud development, +where the focus is on innovation, scalability, and the seamless integration of diverse components. From 1178d448993c949b34ab49a2d6996ea70608ca07 Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 18:56:39 +0200 Subject: [PATCH 05/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 128 ++++++++++--------- 1 file changed, 69 insertions(+), 59 deletions(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 378350dbb..002665e66 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -1,6 +1,7 @@ --- title: True Composable Templates -description: Contenplating on a discussion with another PM who challanged Wing value proposition vs template +description: Contemplating on a discussion with another PM who challenged Wing's value proposition +versus templates authors: - ekeren tags: [platform engineering, templates, terraform modules, winglang, wing cloud] @@ -9,52 +10,59 @@ hide_table_of_contents: true # True Composable Templates -In the journey of software development, particularly for cloud-based projects, -templates often seem like the go-to solution for their promise of speed and simplicity. -This notion was at the forefront of a conversation I had with a Product Manager who doesn’t delve into coding. -I had shared with him about my workshop project, a blend of React, Vite, WebSockets, and a dynamic counter, -which had garnered positive attention for its effectiveness and ease of setup during a workshop. -I told him that the audience was able to create a simple but powerful setup that worked locally and was deployable on AWS using terraform. -I noted that if I would have tried to achieve this without Wing, it would have taken me two week to get to the same point. -However, the Product Manager offered a perspective that prompted deep reflection. -He acknowledged the appeal of my project but pointed out that its functionalities could potentially be replicated using templates in any technology. -The main point of his argument was about differentiation: if a template can encapsulate all that Wing offers, then what truly sets Wing apart? -He didn’t stop there. He added that templates could be designed with a layer of customization, -allowing developers to tweak them for specific needs. -This layer would enable any developer to adapt the template to their unique project requirements. +In the journey of software development, particularly for cloud-based projects, templates often +seem like the go-to solution for their promise of speed and simplicity. This notion was at the +forefront of a conversation I had with a Product Manager who doesn’t delve into coding. I had +shared with him about my workshop project, a blend of React, Vite, WebSockets, and a dynamic +counter, which had garnered positive attention for its effectiveness and ease of setup during +a workshop. I told him that the audience was able to create a simple but powerful setup that +worked locally and was deployable on AWS using terraform. I noted that if I would have tried to +achieve this without Wing, it would have taken me two weeks to get to the same point. However, +the Product Manager offered a perspective that prompted deep reflection. He acknowledged the +appeal of my project but pointed out that its functionalities could potentially be replicated +using templates in any technology. The main point of his argument was about differentiation: if +a template can encapsulate all that Wing offers, then what truly sets Wing apart? He didn’t stop +there. He added that templates could be designed with a layer of customization, allowing +developers to tweak them for specific needs. This layer would enable any developer to adapt the +template to their unique project requirements. #### Why are we talking about Templates? -In today's platform engineering space, where companies are creating strong teams with a clear mission to -“empower developers for self service experience in ways that adhere to the enterprise concern” -everything looks like a nail and templates are hammer. -Whether they come in a form of terraform modules, or a set of off the shelf repos you can clone. -I would even go far and observe teams using solutions like Render.com where you pick up a templatized starter project and start working with it. -Templates are a very powerful tool with a very appealing time to value, -no wonder this product manager asked about Wing vs a template on any technology. + +In today's platform engineering space, where companies are creating strong teams with a clear +mission to “empower developers for self service experience in ways that adhere to the enterprise +concern” everything looks like a nail and templates are hammer. Whether they come in a form of +terraform modules, or a set of off the shelf repos you can clone. I would even go far and observe +teams using solutions like Render.com where you pick up a templatized starter project and start +working with it. Templates are a very powerful tool with a very appealing time to value, no wonder +this product manager asked about Wing vs a template on any technology. #### Templates and Their Limits -While templates offer a starting point, their predefined structure can sometimes box in creativity and innovation. -They’re great for getting off the ground quickly but may not always cater to the nuanced needs of every project. -The ability to customize a template does introduce flexibility, but this can also introduce complexity, -requiring developers to navigate and manipulate the template's constraints to suit their specific objectives. + +While templates offer a starting point, their predefined structure can sometimes box in creativity +and innovation. They’re great for getting off the ground quickly but may not always cater to the +nuanced needs of every project. The ability to customize a template does introduce flexibility, +but this can also introduce complexity, requiring developers to navigate and manipulate the +template's constraints to suit their specific objectives. #### Template Composition -Wing stands out by embracing flexibility and composition from the ground up. -It’s not just about having a framework or a set of functionalities; it’s about how these elements interact and complement each other. -Wing goes beyond the traditional template model by emphasizing seamless integration and adaptability. -The system is designed to let developers piece together different components like building blocks, -ensuring they fit regardless of the project's complexity. -When we normally think about composition in programming language we think about a class being composed of members and inheritance. -But in practice a cloud system is not just the composition of resources, -it is also the code and usage patterns that stitches them together. -The fact that our cloud system is composed of an AWS Bedrock Model and a Lambda Function is just part of this composition. -In order for a system to be described (using IaC) the components composition must consist of which resources are actually calling who. -The true composition of a cloud system is also the access patterns. -The introduction of the "onLift" function exemplifies Wing’s innovative approach. -This feature automates the permissions and configurations needed when a cloud function interacts with other resources, like a bedrock model. -With Wing, developers don’t need to manually set up these connections or permissions. -Instead, they can focus on building their application’s unique features, knowing that Wing handles the underlying integrations smoothly. +Wing stands out by embracing flexibility and composition from the ground up. It’s not just about +having a framework or a set of functionalities; it’s about how these elements interact and +complement each other. Wing goes beyond the traditional template model by emphasizing seamless +integration and adaptability. The system is designed to let developers piece together different +components like building blocks, ensuring they fit regardless of the project's complexity. + +When we normally think about composition in programming language we think about a class being +composed of members and inheritance. But in practice a cloud system is not just the composition of +resources, it is also the code and usage patterns that stitches them together. The fact that our +cloud system is composed of an AWS Bedrock Model and a Lambda Function is just part of this +composition. In order for a system to be described (using IaC) the components composition must +consist of which resources are actually calling who. The true composition of a cloud system is also +the access patterns. The introduction of the "onLift" function exemplifies Wing’s innovative +approach. This feature automates the permissions and configurations needed when a cloud function +interacts with other resources, like a bedrock model. With Wing, developers don’t need to manually +set up these connections or permissions. Instead, they can focus on building their application’s +unique features, knowing that Wing handles the underlying integrations smoothly. ```ts class BedrockModel { @@ -72,26 +80,28 @@ class BedrockModel { } ``` -This code snippet illustrates how Wing enables developers to concentrate on what their code is meant to do, -rather than getting entangled in the operational details. -It’s about ensuring all parts of the application can communicate and operate without the developer needing to intervene manually. -In the above example the developer of the bedrock resource, doesn’t know of the callee that is going to use it. -It does know what is required in order to use itself with other resources. -The system identified this indirect composition of resource and call the onLift method of the Bedrock model with the callee as the host. +This code snippet illustrates how Wing enables developers to concentrate on what their code is +meant to do, rather than getting entangled in the operational details. It’s about ensuring all +parts of the application can communicate andoperate without the developer needing to intervene manually. In the above example the developer of +the bedrock resource, doesn’t know of the callee that is going to use it. It does know what is +required in order to use itself with other resources. The system identified this indirect +composition of resource and call the onLift method of the Bedrock model with the callee as the host. #### The Real Value of Using Wing -The conversation highlighted an important aspect of using templates — the potential for customization to make them fit for any project. -Yet, Wing's true value lies in its foundational approach to building applications. -It's designed for developers who want to go beyond the limitations of templates, -offering a platform where components not only fit together by design but also adapt and evolve as the project grows. -When a project grows, they grow outside the boundaries of what we initially thought should be the template version, -the project setup and architecture needs to allow developers to modify their architecture -by allowing developers to refactor and change patterns in the way that fits the current business requirements. +The conversation highlighted an important aspect of using templates — the potential for +customization to make them fit for any project. Yet, Wing's true value lies in its foundational +approach to building applications. It's designed for developers who want to go beyond the +limitations of templates, offering a platform where components not only fit together by design but +also adapt and evolve as the project grows. When a project grows, they grow outside the boundaries +of what we initially thought should be the template version, the project setup and architecture +needs to allow developers to modify their architecture by allowing developers to refactor and +change patterns in the way that fits the current business requirements. ## Conclusion -The Product Manager’s insights brought an important dimension to the discussion about Wing versus templates. -While templates, even with customization options, offer a quick start, Wing provides a deeper level of integration and flexibility. -It fosters an environment where development is not just about adapting a template to fit but about creating a tailored, -efficient, and scalable solution from the outset. -Wing represents a shift towards more dynamic and adaptable cloud development, -where the focus is on innovation, scalability, and the seamless integration of diverse components. +The Product Manager’s insights brought an important dimension to the discussion about Wing versus +templates. While templates, even with customization options, offer a quick start, Wing provides a +deeper level of integration and flexibility. It fosters an environment where development is not +just about adapting a template to fit but about creating a tailored, efficient, and scalable +solution from the outset. Wing represents a shift towards more dynamic and adaptable cloud +development, where the focus is on innovation, scalability, and the seamless integration of diverse +components. From 96bafcc56e00c7c4c92c5b7b89835c5fa1cda40e Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 19:00:15 +0200 Subject: [PATCH 06/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 42 +++++++++----------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 002665e66..cad63d79a 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -1,7 +1,6 @@ --- title: True Composable Templates -description: Contemplating on a discussion with another PM who challenged Wing's value proposition -versus templates +description: Contemplating on a discussion with another PM who challenged Wing's value proposition versus templates authors: - ekeren tags: [platform engineering, templates, terraform modules, winglang, wing cloud] @@ -80,28 +79,25 @@ class BedrockModel { } ``` -This code snippet illustrates how Wing enables developers to concentrate on what their code is -meant to do, rather than getting entangled in the operational details. It’s about ensuring all -parts of the application can communicate andoperate without the developer needing to intervene manually. In the above example the developer of -the bedrock resource, doesn’t know of the callee that is going to use it. It does know what is -required in order to use itself with other resources. The system identified this indirect -composition of resource and call the onLift method of the Bedrock model with the callee as the host. +This code snippet illustrates how Wing enables developers to concentrate on what their code is meant to do, +rather than getting entangled in the operational details. +It’s about ensuring all parts of the application can communicate and operate without the developer needing to intervene manually. +In the above example the developer of the bedrock resource, doesn’t know of the callee that is going to use it. +It does know what is required in order to use itself with other resources. +The system identified this indirect composition of resource and call the onLift method of the Bedrock model with the callee as the host. #### The Real Value of Using Wing -The conversation highlighted an important aspect of using templates — the potential for -customization to make them fit for any project. Yet, Wing's true value lies in its foundational -approach to building applications. It's designed for developers who want to go beyond the -limitations of templates, offering a platform where components not only fit together by design but -also adapt and evolve as the project grows. When a project grows, they grow outside the boundaries -of what we initially thought should be the template version, the project setup and architecture -needs to allow developers to modify their architecture by allowing developers to refactor and -change patterns in the way that fits the current business requirements. +The conversation highlighted an important aspect of using templates — the potential for customization to make them fit for any project. +Yet, Wing's true value lies in its foundational approach to building applications. +It's designed for developers who want to go beyond the limitations of templates, +offering a platform where components not only fit together by design but also adapt and evolve as the project grows. +When a project grows, they grow outside the boundaries of what we initially thought should be the template version, +the project setup and architecture needs to allow developers to modify their architecture by allowing developers to refactor and change patterns in the way that fits the current business requirements. ## Conclusion -The Product Manager’s insights brought an important dimension to the discussion about Wing versus -templates. While templates, even with customization options, offer a quick start, Wing provides a -deeper level of integration and flexibility. It fosters an environment where development is not -just about adapting a template to fit but about creating a tailored, efficient, and scalable -solution from the outset. Wing represents a shift towards more dynamic and adaptable cloud -development, where the focus is on innovation, scalability, and the seamless integration of diverse -components. +The Product Manager’s insights brought an important dimension to the discussion about Wing versus templates. +While templates, even with customization options, offer a quick start, Wing provides a deeper level of integration and flexibility. +It fosters an environment where development is not just about adapting a template to fit but about creating a tailored, +efficient, and scalable solution from the outset. +Wing represents a shift towards more dynamic and adaptable cloud development, +where the focus is on innovation, scalability, and the seamless integration of diverse components. From 18e504cfa25195dd1862f326b30663c98cf7dccf Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 19:09:51 +0200 Subject: [PATCH 07/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index cad63d79a..e4769cecd 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -2,7 +2,7 @@ title: True Composable Templates description: Contemplating on a discussion with another PM who challenged Wing's value proposition versus templates authors: - - ekeren + - eyalk tags: [platform engineering, templates, terraform modules, winglang, wing cloud] hide_table_of_contents: true --- From 08c70b3ae9864080cee01cbbde4efaac100bcb3d Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 19:35:05 +0200 Subject: [PATCH 08/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index e4769cecd..23e6b33e4 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -7,6 +7,9 @@ tags: [platform engineering, templates, terraform modules, winglang, wing cloud] hide_table_of_contents: true --- +![composition](https://github.com/winglang/docsite/assets/1727147/f970e7dc-53c3-4909-8dab-afa7dd766fe8) + + # True Composable Templates In the journey of software development, particularly for cloud-based projects, templates often From 967557e1f61f63a1aacceed1219a241f971a1e1c Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 19:37:47 +0200 Subject: [PATCH 09/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 23e6b33e4..763323428 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -7,7 +7,7 @@ tags: [platform engineering, templates, terraform modules, winglang, wing cloud] hide_table_of_contents: true --- -![composition](https://github.com/winglang/docsite/assets/1727147/f970e7dc-53c3-4909-8dab-afa7dd766fe8) +![Composable Templates](https://github.com/winglang/docsite/assets/1727147/7c395c6f-9cf2-43c6-b4b1-6a5ba4d058bb) # True Composable Templates From 2ee77dce63124ce783cdf5d6f7da64b81b011423 Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 19:39:47 +0200 Subject: [PATCH 10/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 1 + 1 file changed, 1 insertion(+) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 763323428..25d87da62 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -4,6 +4,7 @@ description: Contemplating on a discussion with another PM who challenged Wing's authors: - eyalk tags: [platform engineering, templates, terraform modules, winglang, wing cloud] +image: https://github.com/winglang/docsite/assets/1727147/7c395c6f-9cf2-43c6-b4b1-6a5ba4d058bb hide_table_of_contents: true --- From dc2d2f840da7e7097c2a296eb99e6f275798df20 Mon Sep 17 00:00:00 2001 From: Eyal Keren Date: Sun, 25 Feb 2024 19:40:35 +0200 Subject: [PATCH 11/11] Update 2024-02-26-true-composable-templates.md --- blog/2024-02-26-true-composable-templates.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/blog/2024-02-26-true-composable-templates.md b/blog/2024-02-26-true-composable-templates.md index 25d87da62..4b23b6e5e 100644 --- a/blog/2024-02-26-true-composable-templates.md +++ b/blog/2024-02-26-true-composable-templates.md @@ -10,9 +10,6 @@ hide_table_of_contents: true ![Composable Templates](https://github.com/winglang/docsite/assets/1727147/7c395c6f-9cf2-43c6-b4b1-6a5ba4d058bb) - -# True Composable Templates - In the journey of software development, particularly for cloud-based projects, templates often seem like the go-to solution for their promise of speed and simplicity. This notion was at the forefront of a conversation I had with a Product Manager who doesn’t delve into coding. I had