Episode 3: Infrastructure as Code & Platform teams

Published: Sunday, Oct 19, 2025 • Duration: 92 minutes • Season 1

Infrastructure as Code & Platform teams

Download MP3 | Watch on YouTube

https://aws.amazon.com/cloudcontrolapi/

https://s.natalian.org/2025-10-19/CommunityDay_Malaysia_2025.pptx

Watch on YouTube

summarize "https://youtu.be/gkoxHncYCTk" --timestamps --slides

This detailed conversation between two seasoned infrastructure engineers explores the evolving landscape of Infrastructure as Code (IaC), the technical limitations of Terraform, and the organizational challenges of building effective platform teams. The discussion centers on the transition from simple configuration files to complex programmatic abstractions and the introduction of “Terra Constructs,” a project designed to bring the developer experience of AWS CDK to the Terraform ecosystem.

Slide 1

The Evolution and Complexity of Terraform

Terraform was originally built on the concept of plugins and providers to manage cloud resources like VPCs and subnets. A decade ago, the number of “knobs and dials” for these resources was limited, making a simple configuration file sufficient. However, as the cloud evolved to include serverless components, SNS topics, and complex integration patterns, Terraform’s declarative nature began to struggle. To keep up, the language introduced programmatic features like for_each loops, list comprehensions, and local blocks. This has led to the creation of massive community modules that often feature over 45 variables and complex tertiary conditionals, making it difficult for engineers to understand how variables interact or trickle down into resource configurations. the cloud became way more complex… a lot more serverless is now being part of a lot of the tech stack Originally, Terraform aimed to be “dumb” to prevent users from shooting themselves in the foot, but the reality of modern cloud architecture has forced a level of complexity that a simple config file can no longer easily manage.

Slide 2

The Serverless Integration Challenge

Provisioning AWS Lambda functions in raw Terraform is often a “nightmarish” experience because the provider only covers the bare minimum resources required by the API. Engineers must manually configure Lambda permissions, IAM roles, and CloudWatch logging groups, then explicitly bind them together. This lack of high-level abstraction is particularly painful in serverless environments where business logic is spread across multiple components. AWS CDK solves this by providing “constructs” that understand service integration patterns. For example, a single line of CDK code can handle an entire asset pipeline—bundling code, uploading it to S3, and ensuring the Lambda can access it. Terra Constructs is an attempt to port these high-level developer experiences to Terraform, allowing engineers to use TypeScript to define complex patterns like Lambda chaining or EventBridge rules while still outputting standard Terraform resources. This approach recognizes that in the serverless world, infrastructure and business logic are too tightly coupled to be managed through decoupled, low-level configuration files.

Slide 3

Organizational Realities and Refactoring

Terraform remains the dominant tool for Infrastructure as Code due to its massive industry adoption and mindshare. In many organizations, platform teams use Terraform to bootstrap core infrastructure like VPCs and EKS clusters, while product teams may prefer the flexibility of CDK. This creates a need for “aligning things” and providing clear integration points between different execution engines. A central theme of the discussion is refactoring, which is described as a pivotal part of infrastructure management. As projects grow, resources often need to be moved from a single project into shared layers or owned by a dedicated platform team. Without the ability to refactor stacks easily, organizations end up with “stale” infrastructure or projects that are impossible to deprecate because of hidden dependencies. The speakers also touch on the AWS Project Development Kit (PDK) and tools like CDK DIA, which can generate high-level diagrams to help teams visualize the intent and meaning behind their infrastructure constructs, a feature that is notoriously difficult to achieve with standard Terraform modules.

Slide 4

Terra Constructs vs. Existing Adapters

The conversation dives into the technical differences between Terra Constructs and other tools like HashiCorp’s CDKTF or the AWS Adapter for CDK. While CDKTF provides the foundation for using TypeScript with Terraform, it lacks the high-level service integration patterns (Level 2 constructs) found in AWS CDK. The AWS Adapter for CDK attempts to map CloudFormation resources to Terraform using the AWS Cloud Control API, but this often results in a loss of functionality. The Cloud Control API is autogenerated and sometimes lacks the “curated” experience of the manually maintained AWS provider. For instance, the manual provider can hide the complexity of “JSON patches” required by certain API Gateway endpoints, providing a much cleaner interface for the user. Terra Constructs aims to bridge this gap by reimplementing core CDK features—like asset bundling and IAM principle management—directly on top of the popular, manually maintained Terraform AWS provider. This ensures that existing ecosystem tools for linting, security scanning, and cost calculation still work perfectly while providing a superior developer experience.

Slide 5

Integration Registries and State Management

A major point of contention in infrastructure engineering is how to handle dependencies between different teams and stacks. The engineers discuss the “Integration Registry” pattern, often implemented using AWS SSM Parameter Store, where one team publishes resource IDs for others to consume. While this sounds simple, it frequently leads to a “recipe for disaster” because it introduces a layer of indirection that can become stale. There is often no way to track which consumers are reading a specific key, making it dangerous to change or delete values. The speakers suggest that a better approach is using native Terraform outputs or even a centralized JSON file in a Git repository to coordinate secrets and account details. This provides a clear change log and avoids the “sprawl” associated with arbitrary SSM paths. The goal is to maintain direct connectivity between providers and consumers to ensure that infrastructure changes are predictable and visible across the entire organization.

Slide 6

The Philosophy of Modern Platform Teams

The discussion concludes with a debate on the role of platform teams versus embedded SREs. While some engineers prefer a cross-functional, embedded approach, the reality of large, regulated organizations often necessitates a centralized platform team to handle compliance, auditing, and “zero trust” initiatives. The “golden path” is presented as the ideal solution: the platform team provides standardized, highly-functional tools and guardrails that allow product teams to move quickly without being blocked. platform team’s responsibility is to put in guard rails they’re not the bottleneck they just need to make sure that teams can do what they need This involves moving away from “restricting” access through limited modules and instead focusing on “observing” team usage to extract and share successful patterns. Whether using TypeScript, YAML, or specialized configuration languages like Pkl, the objective remains the same: empowering developers to own their infrastructure while maintaining the security and reliability standards required by the business. The engineers emphasize that platform teams should be “laying the tracks” for product teams, ensuring that the easiest path to production is also the most compliant and stable one.

Model: google/gemini-3-flash-preview

Transcript (auto-generated from YouTube captions)
to uh the value add on Terraform.
As by means of introduction, Vincent and
I are seasoned infrastructure engineers
and the following is a conversation
where we talk about Terraform CDK
infrastructurees code and I think it's
the best conversation I've ever had
about platform teams. It's a bit of a
slow burn. I hope you enjoy it. like the
video. Um, and I recommend listening
this to this in in a car. You don't need
to look at the screen. I I did capture
an angle of me from the side, which I
think is a bit unflattering. Uh, so you
don't need to watch this. We we do try
share the the screen and browse to the
things that we talk about, but
essentially I feel this is a podcast
format. You don't need to watch the
video, but the video helps. Do please
enjoy and comment below.
>> See you.
>> Why did I rebuild it? I probably didn't
even need to rebuild it. Okay, so the
value on top of Terapform. Um last time
we talked about a lot of drama around
the cloud providers and the way that you
manage Terraform state and the resource
under um under management pricing that's
exuberant and then some drama around
some open source projects and I'm very
excited about them because I have my own
open source project which is focused on
strongly typed terraform right um
originally terraform
>> I mean just to interrupt you I mean like
terraform is pretty typed I mean you
have your strings, you have your default
values, you have your
>> strings,
>> strings for enum values.
>> Uh, okay. You have strings, strings,
strings. No, you have um I'm sure you
have integers. I'm I'm sure.
>> No, no, but the problem is
>> you have reg x you have uh you have
stuff, right?
>> Yeah. So, Terraform basically
is built on the concept of plugins or
providers for a for clouds and cloud or
for pro for SAS or whatever services
cloud services that give you an API
where you can create resources such as
AWS creates gives you an EC2 API where
you can create an EC2 uh resource,
right? And that was very good and well
um you know 10 years ago where you just
needed to create a VPC couple of subnets
an instance or an autoscaling group and
the number of knobs and dials that you
could configure were not that much but
then you start to having like life cycle
hoots on autoscaling groups that works
with lambdas and you have SNS topics and
you have a lot of different services and
different integration patterns between
them right the cloud became way more
complex uh a lot more serverless is now
being part of a lot of the tech stack
And Terraform is originally just a
config file and a lot of programmatic
features were completely omitted. So
they tried to keep it dumb. They tried
to keep it as simple as possible to
avoid people shooting themselves in the
foot. Most of the time when you talk to
people about using actual programming
actual programming language for for um
cloud configuration, they say like that
is a mistake. Like um what are you doing
that requires a programming language?
you should stick to the the proven path
>> like a more declarative style of uh
>> yeah declarative way of of doing things.
But then they introduce for each. Then
they introduce list comprehensions. Then
they introduce local blocks. And then
you look at the Terraform AWS community
module that has like 45 different
variables for input and and like five of
them need to be set in a specific way to
that trickles down through different
local blocks with different tertiary
conditionals that then need to value
like that go down ultimately in one
resource configuration and then you
don't even know how those variables
interact. Speaking speaking of
complexity, I mean I always thought
serverless was a godsend because it's
going to uh simplify
uh deployment of um of uh of application
code, simplify the you know the life
cycle, simplify
uh everything to do with with that sort
of stuff. For some reason um in
Terraform at least provisioning a lambda
is just a nightmarish uh I wonder why
like why is that? How come Terraform
never managed to make lambda versioning
simple
>> because Terraform's
provider is built on the bare minimum
resources to cover the API. So you go
into very granular level to you know to
to set up a lambda you must configure
the lambda permission resource you must
configure the IM role you must couple it
and bind it to the lambda
>> so there was no good uh there was no
good abstraction or something um
>> so the the abstraction in terraform is a
terapform module which is very limited
in the way that you can configure it. It
provides a fat set of variable inputs
and it provides some outputs and there's
no guarantee around the type system of
the output at all. Like the outputs are
any they can be maps, they can be lists,
they can be strings, they change if you
depending on the internal of the module.
If you decide to put a count inside the
resource and then you use those outputs
uh or those attributes in an output,
then suddenly those outputs become a
list and you know for some reason
because under the hood something
changed, right? Yeah, that's inherent to
how terrible modules are developed.
>> Actually, I mean my usage of of of
serverless is generally quite
>> what what do you call it? uh
standardized
>> you know I usually just run a go binary
but I guess that's the trouble with
serverless is that you can do you can
you can do a lot with serverless you can
integrate it in lots of different ways
right
>> well so the great thing about serverless
is that you you're able to configure
very expressive business logic across
cloud resources but that's also
immediately why it becomes so complex
right because now your business logic is
spread across your serverless components
and if you work with something like
Terraform, those components are very
low-level resources that all need to be
configured exactly right for your actual
business logic to work.
>> I mean I mean
>> think about like a simple lambda
chaining setup where you have lambda.
>> Yeah.
>> Yeah. I I want to definitely get away
from that because my my usage of of of
serverless and is to is to essentially
run my monolithic application.
Like for me serverless is like a way
better uh ECS
But of course that doesn't work. I guess
that is the crux of the problem with
with lambda because yeah you can get
chaining, you can get uh distributed
systems, you can get microservices,
you can get all sorts of things with
lambda and then of course the complexity
explodes.
>> That's right. And the complexity
explodes not only just because of how
your business logic gets like trickled
down across all of your cloud resources
um but also because of how these cloud
resources are spread across different
services of the cloud provider. For
example in AWS you have a cloudatch
service you have a uh where you define
your logging groups and then your
permissions of your lambda must be
configured to write to those logging
groups. So that's an integration between
two different services. you have your S3
bucket where you have to have your
lambda notification like settings done
or you use event bridge where you have
to have like event bridge rules that
then need to be capturing the right
event fields that you want to propagate
towards the lambdas. So the main problem
is the integration across the different
services and you know how to bind them
together and that's where AWS does like
solves it really well
>> but lambda and cloudatch should be a uh
what do you call it a fixed pattern or
something like that
>> it changes a lot and and and it's funny
because sometimes
it could be very simple like you have a
situation where you want a lambda to be
triggered on an event bridge rule and
you can simply go to the lambda and say
async config and then say on success and
then it will you know trigger another
lambda or something else right and if
you do a very simple like lambda
chaining and you can do that directly on
the lambda resource it works until you
have a use case and that's a very fixed
pattern but then you have a use case
where now when the lambda success
happens you want to extract some field
from the um success event like you need
to get the actual um I don't know result
field from the ext JSON of that success
event and you want to get the extract
the payload like extract a certain
payload then suddenly you can't do that
with async evoke that's not possible
with the way that the the lambda API
works and you must use event bridge
rules so you're very use like very
simple pattern of like integrating two
things together which should always be
the same thing no longer works because
now you have an event bridge rules that
like match messes up your whole like
situation because you need to parse the
payload of the event and get out one
field. And that's an example that I
learned because I wrote a library to to
implement um these integration patterns
from AWS CDK on top of Terraform. And so
I saw that like this is very this is an
integration test actually that they have
on their Lambda function integration. Um
>> okay. Okay.
>> Yeah. So
>> I can show you the the actual running
code for that.
>> Okay. So so you're just showing some
Lambda REST API. That's actually quite
interesting because uh we we we use that
a lot at work.
>> Yeah. So so that's where the reality of
the cloud today is that people are using
these type of patterns more and more and
and that's also because you want to you
know leverage the cloud to accelerate
your business feature delivery. So you
can't be like completely decoupled from
the cloud. You start to be really
ingrained and integrated with the cloud
features. Even though a lot of original
cloud adoption was like we want to be
cloud agnostic, Kubernetes is great. The
reality is even if you use Kubernetes,
you're going to have a whole bunch of
custom resources just for AWS um to use
to to to integrate with the cloud that
you run. at at work we we love to use
the lambda rest API because because it
integrates with IM and then IM is the
way that we uh uh mediate govern uh
different APIs between different uh
teams and stuff and a lot of the things
in AWS is like the benefits is that
tight integration between services right
because like you just said IM is is a is
a really nice way to control permissions
across all of across all of for
resources. Um, and so yeah, but I I
pulled this up because this is kind of a
nice example and this is a great example
from originally when they released the
AWS CDK workshop um in how it simplifies
like try to imagine how you would do
this with terapform modules. You're
creating a function,
>> right? And and you're specifying here is
something very special already which is
the from asset. So this is actually
going to
>> this is a whole asset pipeline built in
right in there. It's going to take care
of bundling the code, you know, putting
it in S3, making sure that the lambda
can pick it up or you can, you know,
directly put the code in line. That's
something that you cannot imagine how to
build this with Terraform modules,
right? I mean, I know that there's an
attempt serverless.tf
to do this, but I mean, it's just it's
just a mistake and I'm sorry because I
know the people behind this uh and I try
to to to explain that, but yeah, they
have, you know, this their projects at
PET. So uh so anyway yeah so this whole
this one line already is an asset
pipeline and then this one right here
the lambda rest API is a special rest
API so this is object-oriented
programming and it's it's like an
extension it's just not a rest API it's
a lambda rest API that understands the
concept of a handler that is backed by a
function so this handler must implement
the function interface and then it knows
how to bind and automatically create the
the API gateway integration and back end
lender call right
>> yeah So, so, so just these lines
already. Um,
>> and you get all the LSP, you know, what
do you call it? Checking to make sure
that everything's there.
>> So, because this is an actual
programming language with enums and and
TypeScript is specifically built to add
typing on top of a non-type language
like JavaScript. So, it has a lot of
functionality to to inspect the type
schema and to to really be strong around
your typing. So you do get like indeed
like the from asset then it will the
handler with the I function and it's
strongly typed right.
>> Okay. So I I'm I think I know where
you're going with this. So you're not
talking just about primitive typing.
You're talking about like fun function
typing and such and so forth. I'm not
sure if that's the right terminology.
>> I'm also not sure about the terminology.
But what I'm trying to say is that if
you have the telephone provider you're
going to have a string. You say it's
very strongly typed, but yeah,
>> string has only like three possible
values. And when I'm building my
library, I'm actually have to go to the
EC2 or the Alumba um you know API docs
to figure out what are the valid values
because that's nowhere in Terraform,
>> right? And and they they they can't
really because they they need to cover
so many AWS services. It's manually
written as well. And I'm still relying
on the Terapform provider AWS except I'm
building the CDK library on top of it.
So, so this is the example from AWS CDK,
but now it's running on top of
terraform, right? So, I have the same
things. I have the code, the lambda
function, the lambda rest API. Um, for
some reason, I didn't call it function.
I called it lambda function. And that's
because I put everything under under one
name space. I put it all under AWS
compute, which maybe was a mistake, but
okay. Uh, and then I have the AWS asset
like the stack, the AWS stack, which is
a um extension of the classic Terraform
stack. This is a stack that understands
about AWS asset pipelines. So it knows
about ECR. It knows about S3. So it
knows that if you use and that's
necessary because when you use AWS CDK
it's built on top of AWS. It's built on
top of cloud form. So it has the ID of
asset pipeline and things like that. So
if I want to do this code from asset
here, I actually am building if I
synthesize this
>> I I actually have the S3 bucket. If I
don't pass in the bucket to the the
stack, it will create a bucket for me
and it will automatically upload my uh
lambda source code bundled up and put it
straight into my S3 bucket. Now some
people when you are doing terraform
they'd be like no your your code
delivery must be decoupled right on one
side terraform stand up the the skeleton
and on the other side you have your
actual code that needs to be built and
and deployed. But when you're in the
serverless world the resources and your
actual business logic are very tightly
coupled. That's so true. That's so true.
So I think the next question in my brain
was that okay you create a bucket for
the for the sourcing your your
application code but like what happens
when you destroy that with the bucket go
>> uh or yes or do
>> so this is your terraform under the hood
right um there is yeah the the terraform
call because the bucket is the object is
also managed by terraform so terapform
will first delete the object then if the
buck then it will delete the bucket AWS
will prevent that
>> if there's still some some objects
inside then it will not allow it.
>> Okay. So, so you're saying that
Terraform will completely handle all the
objects inside there I suppose.
>> Yeah. So, so this is purely translating
the AWS CDK on a deep deep level
directly to Terraform resources and not
just any resources but the actual
Terraform provider AWS resources. That
means that all of your existing like
terraform linting um you know code code
scanning everything still works. Cool.
And then and then another question
because uh C CDK I believe has this
bootstrap uh functionality where it does
create its own bucket for the stack up
>> right.
>> Yeah. So I don't I don't do that. Um no
my AWS stack has like a it's called like
a singleton pattern. It will create an
S3 bucket if it's necessary. You can
pass it in directly to the AWS stack as
u stack as well. So when you invoke this
like my CDK workshops tag when I call
the constructor if I in the constructor
properties pass in my own bucket then it
will take that one right
>> this is again
>> the power of actual you know I mean a
lot of people hate on object-oriented
programming but the ability to define
like to use the basic object of a
terapform stack and then extend it with
functionality just reuse the constructor
and have this capabilities built in
makes it so much nicer like you can't
really do that with terapform modules or
like bundling terapform models on top of
each other. Right.
>> Right. Right. But like Okay. So if you
had the option to use the CDK bootstrap,
you didn't that's obviously just not a
default here like by default.
>> Yeah. No, the CDK bootstrap does a lot.
And the actual asset pipeline from AWS
CDK is built into the CDK CLI. So it's
not a cloud for thing. The AWS CDK CLI
has the idea of uh bundling code and um
putting it into a staging directory and
then preparing a manifest of what is
inside the staging directory that needs
to go into S3, what needs to go into
ECR. So that's what the CLI does.
Terraform kind of like worked around
that by providing special provider
functions. So it doesn't like Terraform
doesn't understand or doesn't care about
AWS asset pipeline, right? But you do
have the ability to create like use a
terapform provider to create an S3
bucket and upload an S3 object. So I'm
kind of offloading that asset pipeline
to native Terapform provider
capabilities which I'm not sure if it's
the best way but it does allow me to
like hand off the life cycle completely
to Terraform
>> the way that it does.
>> Yeah.
>> Okay.
>> Those are all conscious decisions as
well.
>> There's a there's a lot of details in
here too. So so say a company's using
CDK. Um,
>> but let's be honest, I think we talked
about this before. CDK got there um is
great, but it it's only 80% of the way
there. Like it and and correct me if I'm
wrong, like this the support from CDK on
the AWS side seems a bit weak right at
the moment or do you think they'll come
back into it or like what?
>> So that's interesting to hear. Um
>> I'm trying to I'm trying to like map the
future of CDK
>> for me is a pivotal tool for or
developer tooling for AWS to hear that
they I know that they've withdrawn some
of the stuff um but they are still
actively developing it like they they
added the C the CDK refactoring for
refactoring stacks across was integrated
directly I mean the cloud formation
refactoring feature was was integrated
completely into the CDK. You can
refactor stacks now through the CDK CLI.
They added an API or like a programmatic
way to call the AWS CDK as well. So they
are developing and adding more features.
>> Okay. So what does what is sorry what
does refactoring actually mean in in the
in CDK?
>> Yeah. So in the in the world of
Terraform or in the world of
infrastructure as code, the moment you
that you start treating your AWS
resources as code, um you must be able
to do things that are you know very
common with code. And I can give you an
example for you may start with one
project and you create a network and you
create a database and you create a
cluster or you create something like
that and then you deploy your web
application. You're running a whole
Kubernetes cluster for your blog, right?
I'm just kidding. H but then you decide
that you know you need to start a second
project and you don't want project two
to completely depend on all the all of
the resources that belong to project
one, right? because one day maybe you
want to deprecate project one and you
want to um you know get rid of it and
then project two depends on half of the
resources. So at that point you must
move those shared resources maybe to a
shared layer or a shared ownership. So
maybe there becomes a platform team to
maintain the the network and the
kubernetes cluster and then you have the
different product teams that deploy on
top of it and integrate within it. So
you asked me what re what refactoring
was, right? And I just said that I think
refactoring is a very central part of
infrastructure.
>> Okay, I I got that. So okay, I for some
reason I had I think you we were talking
about it a couple of weeks ago that like
you know the CDK the original AWS CDK
team um I can't remember the the name of
the guy who who Israel. Yeah.
>> Yeah. He went on to to do wing lang but
that didn't that didn't fly
>> reasons about it. A lot of the comments
I saw was it's too early. Um people are
not ready for this.
>> I I never really got into it. Um um
though, yeah. So in my mind, I thought
to myself, okay, so CDK doesn't have its
uh you know, BNFL.
Is that the right word? I don't know. It
doesn't have its uh have a direction
now. Uh so um and
>> I know that a lot of the original core
members have moved on but there's still
a very large community and I think most
of the projects I know that AWS uses it
heavily internally like half the time
when I look at like progen or
bootstrapping or for example the PDK um
kit
>> okay so they're using it um
>> when I look at the features and the
issues the GitHub issues I see people I
work at this service team at AWS and we
have this problem and this is how this
would help.
>> AWS project to make it. What is that?
>> Oh, this is an a really cool um
what I like about this is that it
includes like highle graph generation
and which is another thing that I I
believe is something that Terraform is
horrible at and also because of the way
that Terraform modules work.
>> You can generate diagrams from CDK.
>> Yeah. So there is a project called CDK
DIA and and the thing is because you
know how these objects these constructs
they they they contain like a lot of
highle uh like intent and and meaning
right so they actually capture what they
represent. So you can pres represent
those in into logos nicely in here.
>> Wow I can decorate your constructs.
>> I need this at work. Wow. uh but but
>> so there's an I inspectable interface
that you need you can implement to to
basically say how you want your
construct to be shown on the diagram
which you can't even imagine to do
something like that with terraform
>> this is fascinating so so so basically
this PDK is is some
>> not just that it it has thread like
plug-in thread composer it's integrated
with cloudscape react ts website so you
can you know build a their design system
setup up cloud cloudfront um you know do
your CDN um
>> what the hell does cloudscape react
supposed to mean
>> it's a system design um sorry not system
design it's a design system from AWS
that's how they build their dashboards
and their components
>> oh interesting
>> as far as I understood cloudscape
>> okay so okay so CDK still has a lot of
buying because I mean sorry like
>> I'm telling you it's a whole world and
and
>> because I I I mean yeah to be honest at
work clients are for example this client
I'm working with
>> has been using CDK and to be honest
>> it's been fine I mean I I can get behind
it there's some quality of things that I
hate about CDK like it doesn't seem to
be able to plan
>> so that's why Terra constructs would be
great
>> yeah uh so um but besides that um one of
the one of the technologies that they
bought bought into is a is a database
and the the only official uh
>> provider is
>> provider is terraform. So they're
basically
>> those are all cloud form limitations.
>> So basically they're stuck because they
have to they have to start using
terraform. So at the moment their
pipeline like looks like you know CDK
deploy and then do your Terraform um
applying cool beans but but of course
the question in my mind is like okay we
can't just keep on using CDK and keep uh
and then and then use Terraform as a
baseline. We have to think about like
>> aligning things.
>> Yeah, aligning things. So, so I and
yeah, we talked about it before, I'm
sure, but like I think Terraform is the
the de facto winner of the day when it
comes to IA probably for the next god
knows how many years
>> mainly due to adoption.
>> Yeah. Um
>> yeah so
>> I say that and yeah so so where does CDK
fit in with this the fact that Terraform
is is definitely not going away
>> and it's got that sort of mind share uh
you know
>> so at some organizations I worked
>> the expectation was that the team
decides what they want to use if they
want to use CDK they can the platform
team had three years of platform team
stuff so we were bootstrapping VPCs EKS
clusters everything with with Terraform
And so we just had to provide
integration points that is kind of
painful for um because you now have to
deal with like different execution
engines you know cloud formation and so
on. It can work if the team takes full
ownership of their CDK stack. Um but the
moment yeah I've also had experiences
where a team has full ownership on their
stack and then half the team leaves and
one guy is left to maintain it and he
was supposed to like work on really cool
data engineering stuff and now he has to
maintain an airflow cluster and he hates
it. This sounds very accurate like too
many details like where does that come
from?
>> Yeah. Uh I know what you mean with
airflow. I mean the whole MWA airflow
3.0 I don't know if you know about that.
That's amaz
>> I haven't used it for the last five
years.
>> Okay. Well, there's there's basically no
upgrade path between two and three,
which makes life fun and interesting.
Uh,
>> LLM upgrade path.
>> Yeah. So, LLM upgrade. Um,
yeah. Okay. So, I guess I guess what
you're saying is that CDK and Terraform
can live side by side. Then sorry where
does Ter I thought when when you
introduced to me terror constructs to me
I actually thought in the back of my
mind since because of that problem that
we have at work we have CDK we have
Terraform I thought you were like almost
gifting me the the perfect solution to
my problem uh to align everything to
Terraform
>> right so what terror constructs does at
this point um it's my effort to
translate the AWS CDK developer
experience on top of the core terraform
resources and provider model. Right? So
there are some projects um Hashi Cororp
created Terraform CDK to build the
foundation to automatically create
TypeScript classes that wrap the
original Terraform provider. So you can
configure your Terapform resources using
TypeScript or Golang or Python, right?
But Hashior never built the actual
system like service integration
patterns. it never built the IM um the
idea of of you know connecting IM. For
example, in this case when I when I bind
the lambda the handler on top of the
REST API, it automatically creates the
service role and gives the Lambda
service principle the ability to assume
that role like under the hood and it
also
>> creates
>> uh hold on. It also creates the Lambda
permission for the gateway. Yeah,
>> for the actual execute API gateway to
call that lambda and so on. So all of
that is is is built on top of the
service integration pattern between
lambda lambda API gateway and IM. So so
that those are patterns that exist in
AWS CDK.
>> So Terraform CDK never did
>> did that. But how but that that that to
me you're saying that you can't imple
you can't deploy a lambda with terraform
CDK then it's going to work
>> you you just have to write your your
very very nice and and small um Hashi
Cororp language config file now you have
to write a complex TypeScript program to
generate that config file which of
course a lot of people will say that why
would I use Terapform CDK. The idea is
that now that you have that TypeScript
object, you can build your own
abstractions and you can build your own
higher level constructs around it. But
there's no interest for Hashi Corp to
build that, right? They're not af Okay.
So, so they just got you bootstrapped
bootstrapped.
>> Yes, they got you bootstrapped.
>> So, surely the whole community must have
cropped up.
>> This there's a few like
attempts. So one of them is uh CDKTF
plus which was from the original people
behind CDKTF. So they tried to build
like a level two um library of of or
layer 2 construct library which is like
3 years ago but this is pretty much
archived now. Um and they also built
something else which is called the AWS
CDK adapter where they automatically
they basically let AWS CDK do its job to
generate cloud for resources and then
map those cloudformation resources on
top of terraform provider resources.
Unfortunately that doesn't capture half
of the of the functionality that is
hidden between these objects interacting
with each other. like the way that you
generate resources on for cloud form is
different from the way that you generate
them for um for terform providers and
they try to use a common generated
autogenerated provider through the AWS
cloud control API. So the cloud control
API is an attempt to make available the
the engine behind cloud form. So you can
actually autogenerate the terform
provider from the cloud controller API
but it's like it's gong ga I think this
year uh or maybe was it last year I'm
losing track of the years been working
on this for a year.
>> Oh what do you mean gongji? What did
that word made?
>> So it was under beta for like two or
three years and then it went generally
available. So the project to the AWSCC
provider
>> because yeah because yeah like now that
you mention it cloud form to terraform
makes sense here because ultimately CDK
is producing cloudformation.
>> Yes. So they have an adapter but again
it doesn't capture some of these
patterns. So if you align the providers
then you should get the same
functionality but there's still a whole
bunch of like resources and patterns
that are not supported by this Terraform
provider. this autogenerated provider
and to use it like nobody's really using
it because when you look at these
resources you basically get like no the
good thing about Terraform is that when
you talk to an API object you can expand
a JSON schema into like very strongly
type like an expanded um schema in
terapform language right but in this
case the schema is not expanded like
let's go to the documentation and look
at some of these resources maybe take um
let's look at the AP API gateway
>> uh or maybe something simpler SNS or
something I don't
>> no no let's look at the API gateway
because that is a real resour
>> we talking
>> so here we we we have the um you have
the open API spec that you pass in
>> and then you have the deployment the
stage but what's missing is the
integration right like if you hit here
it's just doing a response
um but it's like it's an X X Amazon.
Anyway, this is this is not strongly
typed. This is just JSON. You end up
just shoving JSON all over the place.
>> Yeah. So, so this is the Wait a minute.
I
>> understand it though.
>> This project takes cloudformation and
generates it those resources. Is that's
what you're saying, right?
>> No, this is the cloud control generated
Terraform provider. So, there's two
providers for AWS. One is manually
written and maintained by people. Every
time AWS releases a new feature, adds a
new field, adds a new whatever to any
service, somebody gets, you know, a pull
request or somebody issue is created and
then it's added in
>> um manually and manually mapped. So a
lot of like decisions have been made to
do things a certain way which is like
completely different from the way cloud
form does it right.
>> Interesting. Okay.
>> Yeah. So the terraform provide AWS is
written by humans. That also means it's
kind of like a created experience
because it kind of tries to make sense
of where it expands things uh or how
does it expose certain configuration
fields. For example, the way that you
define um I think it's like on the again
because I did the API gateway conversion
recently there was uh the way that you
define the method responses on on an API
gateway. The way that the the actual API
endpoint works is with like a JSON patch
like you have one endpoint and you have
to like JSON patch in the differences
and in the provider they made a
different resource for each one of them
and when under the hood the provider
will build the JSON patch and send it to
that one endpoint to achieve what you're
trying to do. So this is the type of
stuff that they can do because of the
API endpoints that API gateway exposes
is very complex for a human to you know
build a JSON patch. uh and then cloud
for does a similar thing. It kind of
like like abstracts away this complexity
of that the way that API is built and
allows you to define it um in in one
resource. But in terapform provider AWS,
they made like many different resources
and the Golang code takes care of it
like building a nice little patch under
the hood. So the way that you write your
config is really nice. Um so that's the
advantage of a manual written uh
provider right compared to like an AWSCC
autogenerated provider. Um, but that
also means that most of the tooling like
uh code scanning and everything is
around this provider because everyone is
the one using it. Like all of the
Terraform linting, all of the Terraform
security scanning, all of the Terapform
cost calculation tooling is around this
provider because everyone's using this
provider.
>> Yeah, I mean that's top provider by like
a way a long way I'm sure.
>> Yes. I'm not sure about like I know some
people sometimes say like I we're using
AWS CCC because the feature has never
has not been built on top of the
manually maintained one and the CC one
has a chance to adopt features faster
because it's autogenerated.
>> And do you know how AWSCC works? I mean
they they must have a pipeline that
kicks off with uh
>> yeah they have a they have a lightweight
prox API to discover, provision and
manage cloud resources. So they they
autogenerate it. Um I guess it
>> the source of truth for um AWS if I
remember is like like a Mason schema or
something like that that describes the
APIs.
>> Yeah, there's that's part of the of the
PDK here as well. They they have the
type save API. Smitty smithy
>> Smitty.
>> Why did I say Mason?
>> Smith because Mason Smith's same thing.
>> Ah,
it must be Yes, it must be. Yes, you're
an LLM after all.
>> Cuz like 10 years ago, I was working on
uh in a video startup in Singapore. I'm
sure I don't know if you remember.
That's probably when we met. And
interestingly,
um the the service hadn't launched and
and AWS gave us like this JSON file that
was generated with Mason if I remember
correctly. I don't know why Mason, it's
probably the wrong word, but they gave
us a JSON file and then we just copied
it under the AWS CLI directory and then
all of a sudden we had all these
commands available to us, which I
thought was really cool.
>> Oh, I haven't heard about that. That's
sounds really cool. Um, but yeah, as far
as I know, Smithy is the the language
they use for API specifications or
definition.
>> Yeah. So, so that's a cool thing about
the like the AWS de project development
kit again because they have this like
REST API generation from Smithy. Um, and
this is how you build your your product.
Um, so it's kind of like uh build on top
of the AWS CDK to do that. But yeah, the
whole thing I was saying is that you
have different providers. Uh, one of
them is very popular but manually
maintained. The other one is
autogenerated but doesn't have the full
coverage. And I hear from people that
there's still quite a few errors or
problems that they're facing. But but
that almost doesn't that almost doesn't
make sense. Surely something that's
autogenerated has full coverage.
>> No, it didn't have full No, because the
cloud control API doesn't have full
coverage.
>> The thing that backs this Yes, it's the
control. If you go to the website for
the AWS control uh cloud control API, it
will tell you how much of their actual
services they do cover on this.
>> But that but that's I mean didn't Jeff
Bezel
>> because every team developed it's like a
two-piece pizza team in AWS, right? They
build their own services. Nobody did a
centralized cloud control API, so they
started building a centralized cloud
control API.
>> To me, it kind of makes sense.
>> Well, wait a minute. Like the the folk
law goes that Jeff Bezos mandated that
every service team uh publishes their
API. It sounds like they don't if if if
they can't if it can't be syndicated by
the cloud control API.
>> Let's look at a year old LLM summary.
Uh
ah see see for example the the
certificate uh doesn't support update.
Maybe that's simply because you can't do
that. But here's a little table for you
of the coverage. Maybe this is also
maybe this relates directly to the
coverage. Looks like it has quite a lot.
But where are the services not covered
though? This is anything that is
covered. Um I'm wondering if cl if local
stack is using this because they have a
very similar table. So local stack might
be using this to to generate their um
their local stack.
>> So just to reiterate what I think you're
saying to me, you're saying that the
Terraform uh AWS provider has more
coverage than something that was
autogenerated.
>> When they G8, the AWSCC, they put out a
number on the number of resources
covered. and it looked like it was the
same number, but when you looked into
it, it was actually a bunch of like a
split between some of the resources. Or
maybe I'm getting this wrong because the
Terraform provider AWS has special
resources that don't really have a
backing API. Um, but I I need to look
into it. They do have like that's
definitely something maybe we can add in
later as a clarification on how much is
the coverage actually of the FCC
provider. But there is a difference.
>> How did we even get here? Oh my god. We
talked about ter we talked about ter
constructs. We talked about why
>> we started with spec kit. We started we
started with spec kit and how it like
formalizes or gives you workflow to do
your LLM work like um development. We
talked about some evolution in the cloud
code budget thing. We talked about you
then asked me more about um like more
about to towards Terraform and why I
built something like Terra constructs. I
think so. I gave some examples about the
evolution of the cloud, the fact that it
changed and became so complex and that
the integration patterns between the
services are complex and therefore a
simple config file or terform module
doesn't do it anymore. So that's where
um I also give you examples of why the
AWS CDK is so great. We talked a little
bit about like it not really being
maintained but there's still being a lot
of new features being added. But but
with Terra Constructs, I thought I I saw
it as a way as as as migrating it. Now
that I'm speaking with you at length, it
sounds like you are not thinking like
that. You're thinking that you're going
to still leverage CDK, but your output
is going to be Terraform.
>> No. So, so there isn't an a project from
Hashi Cororp that puts uh a host service
a host um pro object around AWS CDK and
then encapsulates the process like when
AWS CDK generates something it then
generates the Terraform. I'm not doing
that. That's the adapter project and I
don't believe it can achieve the actual
functionality required. Okay. And we
talked and that's why we ended up
talking about AWS CC because it uses
that AWS CC provider that not so many
people use that you know doesn't have
all of this ecosystem tooling around it
and and that doesn't like allow you I I
believe like I talked to some people
behind the project and they told me that
it's really just for early stage
companies like quickly want to you know
prototype how moving towards Terapform
would help them maybe get them halfway
there like you know have existing AWS
CDK programs and put like a crud cr
grudge around it. So, so you understand
what I'm saying? It's called the AWS
adapter and um but it's not like a
long-term solution for um
for your
Yeah, it's called the AWS adapter for
CDK. And as far as I understand, it's
not something like if you start
Greenfield, you should start, oh, I'm
going to write a CDK and I'm going to
use the adapter. I'm going to be using
Terraform. That's not what it's for.
It's meant to be like we have a lot of
CDK stacks, we want to like quickly
convert them over to Terapform and this
can give you like a quick uh bridge
towards Terraform. That's how I
understand it. Okay. So I threw that
away and I started on originally not so
detailed. I started just I want to be
able to programmatically build terapform
configurations and the Terraform CDK
seemed like a good solution to me but
then I realized it's missing a lot of
stuff. So I started building high level
but then I keep going lower and
ultimately ended up reimplementing all
of the core features like asset pipeline
bundling pipeline IM pipeline like the
actual IM modules the the concept of the
you know the interfaces and the patterns
the way it works under the hood and
these these are called level two
constructs right
>> yes okay
>> correct uh asset pipeline is more like
like CLI tooling around it but it's part
of it's part of you could say it's part
of the L2 stack construct because it's
like a higher level. It's using the
low-level stack cloud for stack under
the hood, but it's adding a whole bunch
of functionality around it.
>> And just for my vocabulary, L1 is the
low level. L2 is like the asset
pipeline. Is it is there an L3? No.
So there are some L3 tries which are
created by professional services at AWS
where they have like some um more
advanced cloud patterns maybe for banks
that are building like a subscriber um
like producer type of pattern in the
cloud. So they will use several L2s and
combine them into a cloud pattern so
that it can be used by businesses that
would be an L3 or an L3 might be um
maybe
the real product that that I'm building
at my company um that is actually
deploying the front end deploy deploying
the back end.
>> The whole product that makes sense so
and then and then the other terminology
I'm just mapping into into these L1 L2
L3 is like construct and and pattern. So
a construct would maybe would be level
one and then a pattern would be level
two like how do you or it's not a very
good mapping
>> they they they this they this they this
they this they they apply the L label to
all constructs. So constructs are either
of L1 or L2 or L3. So the L1 constructs
are autogenerated from the b basic
resources that are available in cloud
form or if you're talking about
Terraform the L1 resources are the ones
that are the Terapform provider
resources directly. Okay, that makes
sense cuz I think I've seen I got
confused by that. So, and then where
does the the word pattern fit in here?
It doesn't really fit in.
>> Yeah, I think it's more like when they
talk about L3, there is like the service
team. I know that there is like a
website from AWS service team that says
that these are L3 patterns. These are a
bucket with a in with a with a lambda
invocation triggers for example. That's
a pattern that you may want which is a
very common pattern that you build in
terraform as well right um you have a
module that creates I have a bucket and
then I have a handler for a function
that whenever an object get pushed in
maybe have some type of filtering logic
to invoke the lambda that's like a
module that you would build right um and
in in Terraform you would build that
module from the low-level L1 um you know
lambda resource and and the bucket and
the service permission the IM rule
resource and all that in in AWS CDK you
will build that L3 using the L2
construct which is encapsulating the
lambda and knows how to bind itself uh
like it it it's backed by an I principle
that means that the lambda has a IM role
behind it right so so it it it exposes
itself as a as a interface so it's I am
a principle and a principle you can
grant things right so when you have a
lum when you have a bucket and then you
need to give a permission to the lambda
you are basically you you're using the
grant method method that accept an I
principle. It can the I principle can be
a lambda in this case but it can also be
an EC2 instance. Isn't Isn't the better
terminology would be to call it like a
service principle because it's a it's
it's the service is
>> it's I think it's closely tied to the IM
uh terminology which like in an IM
policy you have the principle the
resource the action
>> I forgot the rest so they they use the
the same idea the I principle the only
new yeah
>> the only new one is the grant
>> but but there can be different types of
principles right you can have a user
principle but you can als you can have a
human all of behind I principle in the I
module. Yeah.
>> Okay. Okay. Let's we're probably just
splitting hands at this point. Okay. So,
so terra constructs
um
so I still actually don't quite
understand. So where is it going to fit
in in a in a company just just where
where people
>> So the way that we use it at my
organization is we have two three years
of Terraform landing zone and so on and
then we had the product teams that
wanted to build with CDKTF uh because
they prefer Typescript they write uh
their lambdas in Typescript. they write
their nextgs front end, back end, BFF,
whatever, and they like TypeScript and
they want a CDKFF and I I had experience
with AWS CDK and I was like, yeah,
that's I I encourage it. I mean, um I I
would rather you not use AWS CDK because
of cloud formation than I have, like you
said, I have to build uh CI/CD pipeline
to do the plan to post the the preview
in my PR. I've got all of that already.
I've got Terraform, I've got Atlantis,
I've got, you know, coordination,
collaboration. So, we need
>> So, basically, how does the pipeline
work? The product has its repo. it
writes its uh their CDK and then you
have a you have like a GitHub action or
something that basically turns their CDK
into Terraform and runs it or do you or
do you like get a snapshot and then you
commit it to your own Terraform uh repo
or something?
>> Yeah. So I just did this presentation at
the um AWS community day in Koala Lumpur
Malaysia.
>> Oh yeah. How was that by the way? Was
that was that at the AWS offices right
or
>> Yeah, it was no it was at the university
uh in in Koala Lumpur. Oh
>> um but I do cover exactly how does the
workflow work between the team. So how
do I
>> Okay, we need to link this link link in
the description.
>> Yeah. So this is an example of an L2. Um
it's actually more like an L3 because
this is like a load balanced Fargate
service. So this uses under the hood it
use you see it uses something called
patterns. So under the hood it actually
set up a load balancer. It set up an ECS
far task definition.
>> So that's that's something that comes
out of AWS CDK right?
>> Yes. There's a separate library of
patterns and an application load
balanced fargate service is a
composition of several of the L2
constructs to to expose this.
>> Okay. Okay. So pattern does exist. Okay.
I wasn't going crazy. Okay.
I think patterns is like the service
team um built L trees. I think
>> I I think when when you talk about L
trees, it's like you can build L trees
and we build a couple of L tries and we
we have we expose them as a pattern
library. Yeah, I also forgot about that
it exist that that's the name of the
library. Yeah. So our workflow at at my
organization with CDKTF is that the
product team lives in their own
repository, right? And we're trying to
reduce the number of repositories. So if
a product team has front end and back
end uh and and an infrastructure, we're
trying to use more of a monor repos now
because we became good good at them. We
use like a many monor repos. So it's
kind of like
>> so the so one product one one repo,
right? That's what you're aiming for.
Okay, that make sense.
>> Yes. Kind of like you know the idea of
of is it Conway's law where you organize
your services based on your team or your
organization layout. So if you have one
team working on one product
>> so so we have the product mono
>> and they are defining their product in
Typescript lambdas whatever tightly
integrated with their infra resources
that they require for their product.
some of the resources like in this case
the the the cluster the VPC they will be
injected when they integrate into the
lending zone right but then but they
must be able to define those and they do
that in a very strongly typed language
TypeScript and they use SEO constructs
originally they use CDKTF but that means
they have to build their own L2s instead
we are building the L2s publicly make
them available on Apache 2 and then we
are using them internally within our
organization okay
>> nice nice so
>> so then yeah
>> okay So
I mean like I'm just thinking of um my
current client
they use CDK
and then they also use Terraform. So So
why what I mean surely didn't didn't you
think about uh allowing the product team
to run their CDK?
I was lucky they didn't ask they didn't
push for it. I did I think about it. I
was I was thinking actually about
talking pointing them towards Palumi SST
because that's kind of a bit of a
similar idea but then we would need to
adopt Palumi because Pulumi is
crosscloud but then I wasn't sure about
like the self-hosted Palumi story and at
the time I didn't know that you could
like self-host Palumi. I only heard that
it was expensive and that you had to pay
for the cloud and so on.
>> But I'm not too sure why you're talking
about Palumian because you can't just
you could have a
>> Yeah, I could have let them use cloud
formation, right? And then it could
publish the cloud.
>> You didn't even you didn't want to go
there or something. What were you
>> No, I have experience with that in the
past. Um we had one team heavily in
cloud formation and then we had the
whole rest of the company data team
everyone else using terraform and I was
put as part of the team that was using
AWS CDK and I was completely convinced
that AWCK was way better. I was I was
put in there to convert them to
Terraform and they converted me to you
know the this the the CDK story and then
I spent a year trying to build um
integration patterns between Terraform
and cloud formation. So you must consume
like integration between two different
products and then you must expose them.
So I was using SSM parameter store as an
integration registry which is Keith
Morris um you know infrastructure as
code.
>> Keith Morris is my line manager. I don't
know if
>> exactly right you told me that. So, so I
followed his advice uh about his
infrastructure as code third edition
whatever uh book and follow the
integration pattern of um integration
registry using SSM parameter store. Now
the
>> tell him I sent him a message on
LinkedIn and he never replied.
>> Okay, I'll I'll uh I'll let Ke know. Ke,
if you're watching respond. Uh okay, so
chapter what 17? You you're oddly
specific here, Vincent, but carry on.
Yeah, because I did a presentation about
it. Um,
I called it integrate this. I did it
like at the time when I had just
finished building the integration
patterns and I thought uh this is great.
Um,
>> and that's the latest book, right?
Because he he had a
>> yes I I I have already uh subscription
so I get access early early access and I
read it. Um so these are the actual
diagrams from his book and he's talking
about organizing your infrastructure and
then the different in integration
patterns. You have one provider, you
have one consumer and then you can do
resource matching which is you look up
the resources based on some tags or you
can do um stack data lookup. So if you
have one stack in cloud form and then it
has some outputs. So you need to read
those cloud form outputs and then um
integrate them within another cloud for
stack for example. But you know need to
know what the team is using. And then
the other one is the integration p uh
registry lookup pattern where everyone
writes to a different key convention and
then you can look up through the
integration registry. Right.
>> Okay. Okay. I mean this is quite common
actually. So Keith basically wrote it
up. I mean I've seen this everywhere.
>> SSM SSM is the registry.
>> Yeah. So when we adopted it we didn't
have strong conventions about the the
format of the keys. What are the like
the different paths that you need to
capture. We didn't have a clear
guideline of how to write your
dependencies out and how to read them
back because if you put some rules
around that then you can you know
determine that this will be like a
network will have a a list of certain
ideas and so you read it out the right
way the right way because now you're in
type languages like CDK and Terraform
maybe you can read it properly.
>> So the key go specify the actual typing.
>> No I don't think that's part of it. uh
it just mentioned that this is a pattern
you can follow. It's just my personal
experience when I I started to use it.
We had problems like that like teams
didn't have a clear way or convention on
how to write to it. Uh another problem
is that this becomes an a layer of
indirection and becomes stale like how
do you you know keep it up to date? How
do you know that the value has changed?
How do you notify also because it's a
layer of interaction how do you have
direct connectivity between provider and
consumer? How do you know everyone that
consumes that key if you don't have like
a an actual like point po point po point
po point po point po point po point po
point po point po point po point pointer
counting like if you do this in memory
you will you keep track of how many um
actual variables point to the stack
right so you have some counter and then
you can know if anyone is still reading
it and so none of that right and so when
you start it sounds very simple and I
was very confident I did this
presentation I say this solves all of
our problems but at that time I already
realized that like having some type of
generics around it so that we and type
when we read it back out is actually
really nice. Um, but that never really
happened, right? Our teams had written a
whole bunch of stuff into SSM parameter
store and then we couldn't really keep
track of like who was consuming it. I
also thought that this was great that
this was a a read indirection layer
because now it meant that I could move
things around and then just update the
registry from different places. Big
mistake because you have no idea where
it comes from. So, so this pattern um is
why I did not like my teams to use cloud
formation and then adopt some type of
indirection layer to communicate with
them, right? So, I actually tried to
roll this out and I had my landing zone
publish all of its like integration
points into the SSM parameter store. Uh
and then you get other problems like how
do you control the consumer permissions
or who can write to these keys? How do
you, you know, do you cross-ost like do
you do you have a central one or do you
have this one provider right to
different accounts where they have to
find it? So, there's a lot of of of
problems there and I decided I'm just
going to get rid of this whole problem
by just using the native built-in
Terapform stack feature which is, you
know, Terraform outputs. Right.
>> Right. I mean, I'm just thinking I'm
just mapping this to my own experience
about a registry. I think the one at my
workplace that we ended up just doing is
is essentially we keep a huge a like a a
source of truth a JSON file in GitHub
and we use that to sort of coordinate a
lot of stuff because like hey you want
to know where this is which account this
goes into what what secret you need.
>> It's horrible isn't it?
>> I I like it. I like
>> it's horrible. I like a single uh large
JSON file. I mean because you know
>> JSON even even worse if it was YAML
you wouldn't have all these like
trailing commas or next line changes
when you know these git tips would look
a little bit better.
>> In my opinion the JSON can is is just an
output uh here but but it's good. It's
it's it's a better paradigm than
sprinkling stuff across an SSM paths for
Christ's sake.
>> Yeah. Yeah. Agree. Um so so very common
like you said is the TFRs in terapform
world where people you know copy paste
TFRS files around for this environment
we need those TFRs from that environment
we need this TFRS it's a bit similar
>> but like but this but this is like even
bigger this is across environments
uh
>> with Terrant you also have the ability
to like define dependencies and it
automatically create the JSON files and
caches them under the hood and then it
keeps track of them to like more quickly
run like consumer provider interactions
and so on. But Teragrant again also very
quickly becomes like sprawls out of
control, right? So, so you're asking me
like why did I not just allow them to
write their infrastructure in AWS CDK
and I I'm telling you that my biggest
problem was the integration patterns.
You're saying one solution could have
been to create more like a central file
so that they would need to read from
there um and things like that. But when
you say central file, it sounds very
similar to SSM parameter store.
>> Yeah, but but SSM parameter store gets
out of hand because you could you could
use arbitrary paths. You can use
>> what about the JSON file? What are the
arbitrary like fields paths that you use
in JSON files?
>> They're just they're just keys and you
know,
>> but what's the structure of the keys and
are they nested keys?
>> Well, you have the same problem.
>> Well, they are they are nested. Yeah. Uh
>> yeah. how
that's where you then get similar
problems.
>> I think I think majority of them are
just are are just keys. They're not like
lists if that makes sense.
>> That's I think one thing I learned about
Terraform because a lot of people when
they write a module they go like well
this resource that I just created should
really be accessible and they just you
know output the all of the attributes of
the resource to the module and then you
know you're basically have zero
encapsulation. The idea of modules is a
bit encapsulation so that you don't
create these deeply nested attributes
dictionary key values um but you rather
create individual outputs like if you
want the gateway uh endpoint there's a
variable there's one key for the gateway
endpoint if you want the subnet ID uh
maybe um you know maybe that's a list
because subnet ID is usually like three
whatever but but not deeply nested
objects basically detailed attributes as
individual outputs
>> yeah I think That's I think we're
aligned there. Yeah. But like
>> it it works well. Um um and the the best
thing of all cuz I don't think SSM can
really do this very well except you can
look back in the versions. But like the
brilliant thing about central registry
is that you have the really nice change
log.
You have logs on on SSM parameter store.
But I think I think the idea is this.
either you put it in git or you have
something wrapping more as a service
around SSM parameter store but just like
no control over parameter store
>> is definitely a recipe for disaster.
>> Yeah. A config file in git is the sweet
spot for me. I know it works well.
>> Okay.
>> We're getting a little bit distracted. I
mean, so you you were saying you you
were pushing people you you didn't want
people to to deploy to run CDK deploy
just because of coordination issues, I
guess, is what I'm hearing.
>> Yes. Um, one of the main issues was to
avoid stale values and copy value across
the source of truth of the integration
because this again is not in a single
repo, right? It's across many
repositories and
because of that we originally had tried
to have the product monor repo run the
terraform apply and consume across um
you know SSM parameter store but that
didn't really work so instead we still
keep the dev infra directly applied from
the product manual repo. So for the dev
environment they can run terraform apply
every time they make a change without
going through any integration
repository. But when they want to go
towards
um so when they run apply here on the
dev infra folder basically the package
gets consumed in the dev infra
application uh or environment and when
the developer runs apply it creates the
environment the the the resources in
pink here purple here and then the
integration with like the dev ingress
ALB and the dev VPC and so on right so
so we are copying over the VPC ID the
ALB reference as values into the dev F
monor repo but it we're not copying
staging and prod and all the other
environments just one only dev okay
>> okay okay environment they're completely
they have full full control over the dev
environments which they should they
should be able to do what they need
right and then when it comes to actually
promoting this out of dev um they've
done their QA themselves and they want
to put this into like staging or prepro
that's where they are um versioning and
releasing
a an actual artifact. So they're
publishing their infra package which no
longer is a module. We don't need
special terapform registry or anything
like that. We can just use their
existing u pnpm workflow or npm
packaging workflow or python if they
want because cdk can be python but we
don't do that. So so so you don't need
like special artifact management for
infrastructure anymore. Infrastructure
is managed the same way as your code.
You're deploying, you're publishing and
minting, versioning, change lock,
everything. All of your tools can just
be reused and we p push it into code at
effect.
>> So, okay,
>> I'm still a little bit puzzled here. You
call it a package, but is surely it's
it's it's not a whole bunch of code.
Surely it's just some
>> Oh, it is a bunch of code. It is a bunch
of code. It is like
>> So basic so basically the code and dev
and the code and
>> it's if you are familiar with
Kubernetes, we don't use Kubernetes. So
it's like a Kubernetes Helm chart. Oh,
okay. Okay. Sorry. I I read product as
uh as production. Sorry. Sorry. I think
that's where I was confused.
>> It's good you asked this because this is
the most common question I get about
Terra constructs. Like sounds great, but
how do you actually use it? And that's
what I try to focus on on this
presentation.
>> So yeah, you're saying that this is the
most common questions uh why of the
thing.
>> Yeah. So after I talk about all of the
great things that you can, you know,
that you get because now you get these
really nice developer patterns or
service integration patterns.
>> Now, now that you mentioned Atlantis,
yeah, Atlantis is uh is great. I
actually need to work out how to
introduce that into my into my uh
company. M so I'm I'm I have a
customuilt EMI and I have custom CDKTF
workflows and I want to for Terra
constructs and I want to publish my AMI
as like the bootstrap for Terra
Construct. So if you want to start with
Terra Constructs in your organization
here is your construct to bootstrapped
Atlantis. So it deploys Atlantis with
all of the settings for running CDKTF
synthesis to Terapform running Terapform
apply integration with your pull request
and all that.
>> That's my I mean if you yeah like if if
you
>> but I don't have if your elevator pitch
is basically how to use Atlantis with
CDK I think I get it actually. My my
pitch is you want better devx for your
developers and most people are like
uh it's complicated why do I need an
additional synthesis step how do I
integrate it into my Atlantis um I can't
control my developers and my engineers
they are very creative they create
really convoluted
infrastructure if I let them write them
in typescript uh how do you control that
well that's where I think part of
product like platform team is that you
surface is the pattern so that you can
you know with bootstraps so that you can
>> so that you extract the convoluted
patterns into reusable patterns I don't
know
>> to keep the things align I mean the same
thing with modules right people are
going to write crazy modules
>> it sounds like you are doing a a great
thing in a sense like allowing the
product team to use a code that's
familiar to them but ultimately uh
keeping Terraformers
>> the first class infrastructure uh uh
DevX I think that makes a lot of sense
actually
>> I'm trying to bridge the platform team
and the product team because the
platform team lives in breeds terapform
they have three years of you know code
scanning they have their whatever maybe
they're not using Atlantis but they have
their own GitHub workflows to run and
apply um their Terraform with pull
request like PR reviews uh previews
sorry yeah
>> I I love what you just said there uh
building a bridge between platform and
and product team though like I'm just
also mapping this to my current uh gig
right now. I mean I think if I showed
them this at at my workplace they would
be terrified because we don't want
products to develop to write
infrastructure as code. We want them to
config like we want a very very tight
configuration for them like all all
>> find this funny because there's a saying
is it from
we want products to be able to do what
they need to do without being blocked by
platform right platform must provide
golden paths must provide easy adoption
for the um for the cloud but they cannot
be the bottleneck they cannot be the
ones that are preventing
the team. Um,
>> well, that's I I agree. I totally agree
with that. But like but in a in a
>> uh Yeah, but in a in a but in a big
company it it's not scalable.
I I can see it making a thousand.
>> No, that's why platform teams exist,
right? Platform teams are supposed to
provide the tools so that you can keep
it under control so that the product
teams can still evolve. So you in like
big banks you will have like a
declarative YAML config file that under
the hood sets up 10 different terraform
modules in just the right way so that
they get deploy uh what they need or
maybe use custom resources because
you're on Kubernetes or whatever right
so this is from platform con 20 uh 2024
talk from Gregor Hop and he talks like
nobody wants 80% of Dynamob like your
module is not just like exposing sane
defaults as a better Dynamob under under
the hood, they still need the features
of Dynamob and if your module doesn't
expose it, your module is not better,
right? It's just it's just restricting
access to it. But it's
>> that's a very that's very interesting.
Uh
did you ever meet Gregor? Because he
used he lived in Singapore a few fair
few years.
>> I was at a few conferences where he was
as well, but I never really interacted
much with him. Yeah, he he spoke at the
AWS meetup, too. That this is very
interesting because like I think I mean
I feel like I've been drinking through a
straw somehow because every every gig
I'm on, we make a module to give give,
you know, 80% to the developer. And now
you're sort of you're sort of flipping
the table over here by saying that no
you're uh
your platform team should be allowing
them to do
>> one of my previous CTOs at uh previous
company he was ex AWS as well I don't
think he was in a technical role there
but he um basically had a lot of
experience on how they did things at AWS
and he says the platform team's
responsibility is to put in guard rails
they're not the bottleneck they just
need to make sure that teams can do what
they need to do without shooting
themselves in the foot. So your job
really is put in place, you know, the
the scanners, the llinters and the
dashboards around it. So if we do have a
misconfiguration, we can catch it as
most of the lift as possible.
>> I mean, I'm I I'm fully behind that.
Like so basically the platform team
isn't uh producing modules, they're more
like producing confest type stuff,
right? Or linting type stuff. But like
I've just never seen
>> but at the same time like the goal of
the platform team is to observe teams
usage of the cloud and extract golden PS
so that we can keep teams aligned so
that you know teams don't do completely
different things so that if a new team
wants to start a new project they have a
tech radar and they can figure out today
the recommended way of doing that is
using this golden path and if I follow
this golden path
>> that definitely doesn't happen in my
current workplace like The idea is that
is that uh we're laying the tracks
before the product teams get there and
uh hopefully it's the tracks that they
want to take which is something that
I've always heard as a complaint around
platform teams and actually one company
I worked at was very resistant and very
against towards moving towards a
platform team they had embedded SRE
there was a huge um compliance
initiative and they completely refused
because they were like you guys are
going to be a bottleneck. You're going
to prevent us to do what we want to do.
>> And and to just to be clear, uh I as an
infrastructure engineer, I I hate
platform teams. The whole idea for me is
just terrible. I'm more in favor of a
cross functional embedded uh so uh
embedded infrastructure engineer
pattern,
>> but I always end up as the
infrastructure engineer in a platform
team essentially. Uh and the funny thing
is I've been at a lot of organization
that try to push me towards in embedded
SR role and I always end up completely
withdrawing myself from product and
focusing 100% on the cloud and the CI/CD
and how to make a solution that
stretches across all the teams and then
complaining if people are not using it.
So I I have like the the opposite like
habits of view
>> but I I try to really focus now like I
want to be part of the of the product
team. I want to be part of the road map
but it's very hard for me.
>> There's some very interesting approaches
here. I mean can you I mean I can't
claim to I can't claim the current
working uh approach in my client is is
successful. I can't claim that at all
but it's very uh conservative and very u
established way of doing things. Can you
honestly say to me, Vincent, that you've
you've worked with product teams and
you've given them a golden what did you
say? A golden
>> golden path.
>> A golden path and they loved it. I mean,
that sounds also kind of Let's be
honest.
>> I did I say that I give them a golden
path and they loved it.
>> Well, I mean,
>> I I did work at one organization.
>> That's what you're alluding to, right?
So we did I did in in that same
organization where they went full in on
AWS CDK um where the platform team had a
lot of Terraform. We had a very heavy
Kubernetes footprint and we built a
Golang CLI that bootstrapped deployments
on top of Kubernetes and
we had the funny thing is we had like 40
brands and but it was behind it was
always this two teams and so it was very
easy to roll it out across the teams and
we were able to like align all of the
teams but we did get the feedback from
the CTO like I I didn't mean to create
like an isolated team that built the
platform and then another isolated and
then the product team. We want I wanted
DevOps. I wanted you know embedded
SRRES. I wanted you guys to to build on
you know for the product and I mean
I don't know um we rolled it out we used
it. It was we used Argo CD so it was
generating all of the uh manifests for
our GitOps and it was able to centralize
the Helm charts. So we had like the
ability to roll out and ch make changes.
I think the biggest problem right when
people when teams move away from like
embedded SRS towards platform teams is
compliance. When you start doing audits
and sock 2 and all that then suddenly
now you have to integrate the zero trust
all over the company. Now you certainly
have to have the you know bill of uh
software bill of material asbomb and you
have to track and you know provide audit
reports that you are addressing uh
vulnerabilities um on on time. You have
to provide your full uh network
infrastructure and your firewall rules
as a compliance audit report quarterly.
You have to have great glassass
functionality. When all of that becomes
imperative to the product teams,
suddenly you need to have a more
centralized approach towards managing
your infrastructure. And that's where
organizations tend to then switch more
towards platform teams. That's also I
think one of Hashikcom's um
presentations from like evolution of
like maturity. So all of the
organizations start with this um
no that's not what I wanted. I just
wanted
>> center view. Who who does that?
>> Uh I'm clearly not a a dude that's used
to make presentations. Anyway, so so
stage one like singular teams, ad hoc
approach, everyone does whatever they
want. Sing to standardizing, centralized
deploys, policy enforcement, team
collaborations, and then platform team
self-service.
>> Yeah. I'm I'm usually in that stage
three uh uh what do you call it journey?
Yeah.
>> Yeah. So so and and that's also funny
because like most Most startups or
organizations don't hire DevOps until
they start hitting these centralization
problems, right? And then they're hiring
DevOps because they have reliability
issues. They have a disparity in
technology stacks across different
teams. They have no way of like rolling
out compliance. Uh but the good thing is
they have money, they have revenue and
so they can hire DevOps team which is
DevOps. the whole idea of like being
embedded in like breaking down the walls
uh being doing agile now becomes no we
actually are hiring a system
administration team to help us adopt the
cloud and tame it and
>> are you suggesting standardizing is uh
is dev is is the embedded approach
because
>> no no no no standardizing is the
platform approach.
Yeah, because I thought
>> a lot of organizations they will have um
>> so so so so stage one so stage one is
the is the uh cross functional team
approach right? Yeah. And then and then
already in stage two we have to have
>> So what do you mean with cross
functional? I think stage one is when
every team has like ah cross functional
meaning every team has a guy doing
DevOps or the CI/CD.
>> Yeah. Exactly.
>> More like embedded. Right. Yeah.
>> Yeah. It's interchangeable here to me.
So stage one is embedded because that's
because we because at my my employ my my
consultancy employer we we always
advocate uh a cross functional embedded
uh infrastructure engineer but it never
really happens for one reason or another
as I mentioned. So and that's already
stage one. I feel that's that's kind of
frightening because there's a very
interesting book that one of a candidate
I interviewed pointed me out. I think he
worked at works as well. He told me that
to read team topologies which is there's
an evolution of the teams and and how
you like there's there's an in between
there's like fully embedded everyone
does its own there's like platform at
complete opposite and then there's like
a cross like a lot of like bandwidth
between um how you may have
>> because because this diagram doesn't
seem to even it's it's either like
>> yeah no this is a sales pitch from Hashi
Corp which sells a platform solution
right
>> yeah I get it I get Uh yeah, so this was
a original slideshow that I made for
before I started Terra Constructs which
was the idea was to make something
called the environment toolkit and I
don't know why I cannot zoom in uh zoom
out anymore. Um but basically
the problem is that we have two personas
in a lot of organizations. We have
product teams, we have platform teams.
Well, there's a few others, but like uh
and the idea was like the app team, they
are the ones that need the like a very
nice interface. They should
>> if you just give them YAML without any
schema, then they may shoot them, they
may not really know how it works. Um and
and it's not a very nice experience for
them, but that's commonly what's done
today, which is like you give them a
YAML spec file that they have to fill in
and then under the hood, the platform
team builds the actual modules. like you
say they set the path they they
>> the things right um
>> why do you say why do you say it's not
very nice
>> cuz well
>> I think YL is not very nice
>> well I mean it's I mean it's a lot
easier than them bloody writing code CDK
let's be honest
>> why is the file read only this is my
file
>> and maybe maybe a separate comp
>> sorry did you say again about what's not
very nice.
>> The the YAML driven
uh product team. What's wrong with that?
>> Um the problem with YAML is that
if you miss a space, you get an error.
If you you don't know exactly where
>> use pickle, guys.
>> No, you should use a proper programming
language. Stop inventing all these
additional like Q and um what's the
other ones? JSON net and like there's a
thousands of them there's a hundreds of
them and all of them have the same
problem
>> but they become a programming language
ultimately in the end all of them become
programming languages
>> during that conf
I I I met some Apple engineers and they
were they pitched pickle and I was
convinced that pickle is the is is a
really good way of uh
>> yeah so so that that's what I'm trying
to say with this thing here um there's a
whole bunch of like you just told me the
IDE experience. Does Spickle have a nice
IDE in terms?
>> It does. Unfortunately, it seems to
>> Wrong example.
>> They they seem to favor Jet Brains, but
uh you know
>> Oh, so anyway, does Pickle have a proper
package manager and registry?
>> Yes. Yes.
>> It's so good. It's so good.
>> This is is pickle touring complete?
>> I think so. Yes.
>> Wrong. Copic language shouldn't be too
incomplete.
>> Then why are you not writing it in
Golang?
>> Uh you can't expect people to pick up
Golang.
>> Yeah. So So
>> Pickle's designed to
>> for one task in mind. Uh is explained to
me by by the um the Apple engineer. He
says like uh you know you need it's the
alarm has gone up gone off. It's 2:00
a.m. and you need to make that change
safely.
So, so essentially you're logging into
that m to that machine at 2 a.m. and
making a config change that you could
literally cannot mess up.
>> Okay. Well, I don't know why I'm getting
these results here, but it says the
learning curve is really difficult. It
has a GVM depend because I entered why
you should not use pickle.
>> That's actually a very good answer. U
yeah that that's that's very good
answer. like but yeah you're right it
does require JVM but uh you know I can
look past that
and it it does have a learning curve but
like oh my god I mean
>> it's enhance safety and maintainability
it's reduced duplication it's
abstraction of modality to me pickle
sounds like JSON net like why why should
I use pickle and not JSON net
>> JSON is horrible when I last looked at
it
>> yeah so agree like I never really got
JSON at properly. Um, so
>> also very very both like pickle's very
tight actually. It looks looks and reads
very nicely.
>> Uh,
>> I may have to play with it. But I have
my my reason to get into Terra
constructs and Typescript was
specifically because TypeScript is
everywhere. Uh, it's that's one of my my
my
tenets in life
>> but still but still
>> the last five years
>> I I I don't think I can get behind. I
mean, I can maybe you're working with
startups, but I still think
>> product teams maybe I've been working
for too many big companies and stuff.
>> Product teams shouldn't be writing uh
CDK. It's going to get crazy real quick.
>> That's always like when I talk about
this is a standard reply. Startups
shouldn't be writing CD like product
engineers shouldn't be touching infra
code and
>> I mean I mean startups and midsize
companies I think it's actually pretty
quite good but if you're like a large
heavily regulated industry that's never
going to fly
>> and I I think at that point you don't
ask the product engineer to write it but
you give the platform engineer the right
tools to build better extractions for
the pro for the product engineer. there
because again like this is what we
talked about last time as well. There's
this deck CDK
which gives you the ability to build a a
strict types like strongly typed schema
YAML um interface or front end which
Pulumi also has which is like
>> it reminds me of the the serverless
application.
>> Oh yes like SLA SAML
>> uh not SAML sorry SAM. Oh yeah.
Serverless applica. What is the end
server?
>> I've been doing too much authorization
and authentication.
>> Yeah. So, so but but this is a bit
funny, right? Because it kind of like
gives you the L2 con L2 or L3 construct
as a YAML uh composition thing.
>> Actually, I I love it. I love it. It
works for me like uh nine out of 10
times.
>> And and I think that's kind of the
experience that we can build on top of
Terra constructs or CDKF. basically a
front end question right under the hood
like docker file is a front end they
completely reworked uh docker as well
like docker file does is not the
standard like you can have different
front ends you can have a yaml front end
you can have an other front end because
now you're building actual proper
programming objects that can you know
bind themselves and evolve and can be
configured differently you're not stuck
with static terraform modules that you
then have to bunch put a whole bunch of
go templating around because you're
asking you're giving your engineers um a
YAML interface to basically configure
modules under the hood. That's what I
hear banks do, right? And and it's the
same with with Kubernetes. That's
exactly what Helm is. You're just
putting Go templating around bunch of
YAML, which is Kubernetes um resource
definitions or manifests, right? And and
and
we see where that goes. We see a Helm
chart with like a values.yamel where you
have no idea how that gets, you know,
interpolated by the gold templates under
the hood. The gold templates are
extremely complicated with like
>> well
>> too much logic within the template
engine.
>> That's why I showed you that Terraform
project that I was cooking up the other
day because because I use pickle and and
when you run it through pickle you can
see the pickle schema. You can see your
pickle. You can see how it it it becomes
Terraform JSON. But why do I have to
learn a new language when Typescript is
already a TypeScript compiler that gives
me strong typing and capabilities like
Pickle except I don't have to learn
Pickle and I can just run TypeScript.
>> Well, the thing that I like about it is
that it's clear to me
what
what is the entry point into Terraform
when I'm writing in Pickle. It's it's
very it's clear as day. But if you're
writing CDK
uh and using Terra constructs, then then
you you really don't know what the
Terraform resources are going to look
like until the
>> No, that's not the same thing as what
you just started the sentence with. You
said you you you know the entry point
and then you say you don't know what's
going to look like. That is a very
different
I know the entry point when I use CDK. I
know exactly how this is going to get
invoked uh because I have a strongly
typed interface now that is defined
under TypeScript and TypeScript compiles
to JSON schema. So I can expose that
typed interface as a with a JSON schema
on top of a YAML file and then my
engineers can write YAML uh except they
get an error message if they don't put
the field in the right place or if they
have a typo or if they put misplace a a
space. Maybe you get the same with
pickle because you get a strongly typed
pickle file or pickle config. But you
get exactly the same with TypeScript.
You can expose it as a JSON schema and
you can allow people to provide config
files and you can control the entry
points.
>> Okay. Okay. I I might have misspoke here
but what I'm trying to say is that the
the translation is is more is more uh
straightforward in my mind because
>> but then you're not dealing with
complicated terapform configurations.
You're probably I I need to know exactly
what is a terapform configuration.
>> Yeah. I mean, am I rec
I'm just I'm just mapping it into a
module and you're right when you when
you in your example when you're messing
around with API gateway or or lambda
>> which is a realistic cloud because you
just cloud workloads because what you
just said this is what we all use and
terapform modules are horrible at it and
then you're going to have to write
pickle to wrap the horrible terapform
experience which is very limited because
it only has like 40 different variable
inputs the outputs are not even typed
you write pickle again to do that. But
how about we go back to the source? How
about we build a proper L2 construct and
then we they know how to bind each
other. And this example here, these 230
lines of Terraform is not to tell you
like this is what you're going to work
with. This is to show you the complexity
and the ugliness of what's under the
hood.
>> This is what you write.
>> Yeah.
>> And this is a well-known pattern because
this is actually the AWS CDK pattern.
This is literally the CDK workshop
example except it's on my landing page
and now it spits out terraform.
I I think it I think it it definitely
makes sense to empower product teams,
but I I I keep on going back to the to
the thought that in a in a heavy
regulated company, you you would have to
just give them a very locked down uh
>> Yeah. And that's where a platform team
would need to build using these
constructs instead of these modules
actually with a proper programming
language.
>> Um they would be able to build what they
need.
>> Okay. So the platform team uses terror
constructs to create the golden paths
>> for example. Yes. Um like the pattern
here that I showed on the other slide uh
which was
I'm allowing my teams to deploy onto
Fargate and we use an application load
balancer. In our case the application
load balancer is part of the landing
zone. So they must import it using from
application load balancer attributes.
Maybe I can wrap all of that up in as my
sample app. um you know Typescript
interface. So you must provide the
necessary attributes to import the load
balancer, the VPC and the cluster. And
this is a strongly typed interface of
what are my my integration points?
>> Okay. And then how complete is Terra
Constructs? Do you do you support like
everything CDK throws at it or is it
like some
>> No, no, no. So, so I started with like
every single AWS module that is in AWS
CDK and more moving it over into on top
of Terraform and that's been very
manual. Then I also used LLMs to
automate that process. But I still need
to write all of the unit tests. I need
to write all of the integration tests. I
need to validate everything.
>> So just you're just getting started sort
of thing. I mean
>> like a year getting started. Um, so at
this point I I I'm focused on building
the the features that I need at my
organization, right? Um, what what I
want
>> that's a great slide deck actually. I
really like that.
>> Yeah. What what I want
at this point if people are interested
they should reach out and they say like
great we use Fargate a lot. I don't see
Fargate right now. Like this pattern
that I show here it's a little asterisk
at the bottom there. pending the ECS
pattern module public release. So this
is not in Terra construct integrated
yet. I need to make that public.
>> Just just very quickly why why Fargate
instead of uh serverless? It just there
needed to be persistent.
>> We use a lot of serverless at at my
organization and um at some point
there's longunning job like services
that you need to run and better to run
them in containers
>> without the whole Kubernetes
>> um complexity. So we use Terraform a
lot.
>> I'm with you. I'm with you. Kubernetes
is such a nightmare.
>> So it's very funny because when we met,
I was running the Docker and Kubernetes
meetups and you would tell me like why
don't you just use Compose? It's so much
simpler. And I would be like Compose
doesn't have all the dials and knobs
that you need and Kubernetes is like
properly designed and easy.
>> This this must have been years ago.
>> Yeah. 2017 maybe. Yeah. Well, oh, well,
that's back when uh what was that? Core
OS. I love core OS. Don't know what
happened to it.
>> They were acquired by IBM. Now there's a
flat car Linux. It was fully integrated.
No, they were acquired by Redhead and
Redhead was acquired by IBM, right?
>> Yeah.
>> Yeah. So, so Coras was acquired by
Redhead. All of the core OS projects
such as tectonic were integrated within
open shift and then they replaced like
the CentOS or whatever the Redhead
container Linux became was rebranded
Coros really really so all of the
Cororez like um systemd integrations
which ultimately systemd is a redhead
project as well right um core was 100%
built on top of systemd
>> so the so so then some of the original
cororos people that were not part of the
acquisition or some people involved with
the project created flat car Linux. I
don't know where that went, but um today
um Talos is super interesting because
they're they're taking this whole like
exposing the the the Linux
administration
surface completely through the API,
which was another OS also had this idea.
I don't know if it was Talos, but there
was another one doing the same thing.
>> Not sure what what Talos is. Sounds like
a security product.
>> Uh Talos. Talos. Talos.
But anyway, just to to defend my Oh, you
know what it is. Yeah, and I think I
know what it is. Yeah.
>> Yeah, they just have a new landing zone
uh landing page. Sorry.
>> They expose
>> But going going back to my going back I
I don't remember talking to you about
Docker Compose, but I think actually
Docker Compose is one of those
technologies that I I still regularly
use and love.
>> Oh yes, absolutely. It's just when when
Docker tried to take it and replace it
with Swarm, right? They they like,
>> "Oh that was a show."
>> No, nobody liked Swarm. Um, so so yeah,
doctor time with it.
>> Okay.
>> Okay. I think we need to somehow end
this uh because I'm uh but I
>> getting tired running out of time.
>> I did really really enjoy this. I think
we covered a lot of things. I think
maybe I'm in the right. Okay, one more
thing.