7 ms·
Fractal Architectures: A Software Craftsman's take to Infrastructure as Code
- odomojuli 6y agoCan't get the page to load despite disabling all of my trackers.
- tinodelletna 6y agoOh that's strange, I will post a copy on medium and get that link in here too.
- tinodelletna 6y agohttps://tinodelletna.medium.com/fractal-architectures-a-software-craftsmans-take-to-infrastructure-as-code-8a7f81192110 https://tinodelletna.medium.com/fractal-architectures-a-soft...
- oh_sigh 6y agohttp://archive.is/hBtjp http://archive.is/hBtjp I'm sorry but there is no sane reason why you need to enable javascript to read a site that is 100% static content of text and images.
- tinodelletna 6y agoYou are absolutely right. I am utterly sorry. We will work on a fully-compatible Links (the browser) version of the site as penitence.
- yowlingcat 6y agoWhile I'm not sure I find the fractal metaphor clarifying (fractals are absolute _last_ kinds of structures I want to see anywhere near my infrastructure definitions), I do sympathize with the "false advertising" of infrastructure-as-code when it's merely checked in. As the age old saying goes, programming in XML (or JSON, or ...) is hell when you really want to reach for a proper programming language. This is part of the issue with CloudFormation. I've seen monstrosities like an entire lambda function source code definition written into a plaintext key in a YAML file, and worse yet, seen this described as normal. Yes. Normal in hell is what it is. So with all of this said, I think developments like the AWS CDK are very cool. CDK takes the approach of a high level SDK over programming in YAML or anything like it. I like it a lot. It's higher level than something like `boto` which is just raw function calls, but not so high level that you're trying to write deployment logic in YAML. You get a nice in between which is written to behave in whatever language you use it in. I believe this approach was spearheaded by AWS internally after seeing how CFN become something widely considered a failure.
- tinodelletna 6y agoThe Fractal metaphor is intended to be seen in the light of their self-similar property. It is the idea of having micro-structures of standardised infrastructure components that could be replicated indefinitely through the invocation of interface operations within a macro-structure (the blueprint). About the AWS CDK I completely agree, we refer to CloudFormation in the article as that is ultimately the "output" of CDK, but we definitely agree that is a really good step in the right direction for IaC tooling. We "just" need someting portable across clouds now :)
- sleepybrett 6y agoI think thats what pulumi wants to be, but their pricing puts me off.
- shaicoleman 6y agoThere's a fully functional open source version
- deleted 6y ago[deleted]
- idclip 6y agoIm sorry, but this was alot of fluff to read. Good visuals, though, i see what you mean. DevSecOps might be interesting. Looking forward. Im an ops guy. Edit: we need management to understand this.
- tinodelletna 6y agoYes, I guess too much intro... if you have any specific feedback on parts I could have left unsaid it will be great to know for next time. About management, totally agree. That's why we are already working on the next two articles.
- idclip 6y agoI would skip: 1. introducing IaC, 2. and the OOP/functiobal bits This stuff really just repeats itself everywhere. I would: directly put my method in an RFC style 1. „this is what this is (jpg here, maybe two comparison graphics. Of old arch, and yours), 2. and here how it works. I did find the pet/catle metaphor great. im not against prose.
- tinodelletna 6y agoThis is really great feedback! Thanks, we will definitely take this into account when writing more technical documentation.
- jcims 6y ago"When you build infrastructure as code, you get infrastructure by coders." - Michael Scott
- UncleOxidant 6y agothin font is very difficult to read.
- tinodelletna 6y agoSorry, we will fix the CSS asap, until then if you are still interested you could look at the copy on Medium: https://tinodelletna.medium.com/fractal-architectures-a-software-craftsmans-take-to-infrastructure-as-code-8a7f81192110 https://tinodelletna.medium.com/fractal-architectures-a-soft...
- movedx 6y agoSo straight off the bat I won't be reading this article. The title sounds interesting and I think there are insights to be gained, but I had to disable NoScript for the page/tab to load; I had to disable NoScript, the means by which I protect my self online (one of many few layers), so I could render some text. After disabling NoScript to see that text it looked terrible. This has led me to believe that a "software craftsman" that can't get text to me over the Internet without JavaScript doesn't really have much to teach me. Sorry, friend. I'm sure your intentions are good, but the delivery of those intentions was frustrating and utterly pointless.
- tinodelletna 6y agoReally sorry about that. Our site is a SPA so it really relies on Javascript. We have put a copy of the article on Medium: https://tinodelletna.medium.com/fractal-architectures-a-software-craftsmans-take-to-infrastructure-as-code-8a7f81192110 https://tinodelletna.medium.com/fractal-architectures-a-soft... I hope that will work
- adam_ellsworth 6y agoCheers! much better. (screencap for how it renders on windows: https://i.imgur.com/jhxhjH0.jpg https://i.imgur.com/jhxhjH0.jpg)
- tinodelletna 6y agoThanks! We will get on that CSS ASAP :)
- rodrigosetti 6y agoWhy is it a SPA?
- tinodelletna 6y agoReally good question, a bit off-topic though. The main reason was to get off-line capabilities and other future features we have in the pipeline atm.
- gcaraciolo 6y agoWhile reading I have been thinking that u implemented the framework by using some sdk like aws sdk + some interactive shell program that check the current infra and prompts changes on it. This should be well tested and could include a kink of integration test for changes and their impact considering the entire database. This could be a way to mitigate problems with environment variables rotation.
- monus 6y agoIn Crossplane, we have a similar notion for your apps deployed to Kubernetes. Platform builders would define the schema definitions for their API and then they would create several `Composition` objects, each representing a different way of satisfying the same API. Then app developers include a claim YAML together with their artifact. The `Composition` to be chosen is decided via selectors or by platform builder. This way you can include generic `AcmeMySQLInstance` (think of it as interface in Golang or protocol in other languages) and then one of the Compositions is selected to satisfy this requirement: `AWSRDSInstance`, `AzureSQLServer` or `GCPCloudInstance` or some in-house configuration. The protocol between app dev and builder is the schema and the credential object (`Secret`) that is being published. See details in docs: https://crossplane.io/docs/v1.0/getting-started/package-infrastructure.html https://crossplane.io/docs/v1.0/getting-started/package-infr... Disclosure: I'm one of Crossplane maintainers.
- tinodelletna 6y agoAwesome, thanks for sharing!
- bronlund 6y agoIt took me the whole of 3 seconds to close that page :D I didn't even had the time to enter reader view.
- ATsch 6y agoSurprised to see there's still people using the term "Software Craftsman" in a positive way.
- awill 6y agowhen I hear 'software craftsman' I assume it's a regular software engineer who wants to elevate their status.
- baja_blast 6y agoI cringe whenever I hear developers refer to themselves as Craftsman.
- richardjennings 6y ago"Infrastructure As Code" is a misnomer in my opinion. The underlying mechanism is more "Infrastructure as Configuration". Terraform syntax is called HCL "HashiCorp Configuration Language". The "code" aspect of (consuming) Terraform is oriented around providing dynamic configuration capabilities utilising reusable code Modules. As GraphQL has led people to question the applicability of REST type API's in SPA contexts, so I believe IaC will eventually suggest a transition towards single Cloud API endpoints where the entire required state is described; reducing IaC to configuration. Currently the programming or Code aspect is required as a function of API design and the corresponding wiring of components together. Potentially not necessary and not particularly helpful.
- avrionov 6y agoThe term makes a lot of sense if you know when and how it was introduced. When the early proponents of "Infrastructure As Code" started to write about it, the infrastructure was defined often time in multiple config files or directly in the UI of tools like load balancers, firewalls, proxies, etc. The big value of the movement for me at least was the proposal to threat the infrastructure definitions and the corresponding scripts as code: - all infrastructure definitions are under source control. - there is well defined process how the changes are made with review and approval process. - the infrastructure can be reproduced and re created for integration environments, load testing, staging etc. - using a common language like Teraform allows better visibility, helps with code reviews, etc. The cloud providers enabled all that. To summarize: even if most of "Infrastructure As Code" is implemented via descriptive language and not procedural, it still follows the best software development practices.
- Gravityloss 6y agoYes, you apply some software development principles: version control, builds, continuous integration, versioning, automation. The software industry is stupendously large and has invested a lot of person centuries to these concepts and tooling. They have been able to create these tools for themselves because the tools are software. These hard won fruits of labor could be applied to many fields, and are. Of course some tooling doesn't fit so well directly, there needs to be some adaptation of the concept, and writing of new software and creation of new processes.
- yudlejoza 6y agoWe've had chroot jails, freebsd jails, and a ton of other options in 1980/1990s. Then someone decided to create a landing-page with a lipstick, and an SV pitch, and viola, docker is the revolution! We've had make, autotools, ssh-expect/pexpect, pxe-boot, not to mention, shell itself, and a ton of other options. Oh but a few folks decided to create landing pages with lipsticks, and SV pitches, and viola, we have Ansible, Terraform, Kubernetes, the whole IaC revolution! The same folks who shitted on autotools all their life without investing time in learning it properly, now are willing to invest 10x more time, putting up with all the warts and bugs and crap documenation of neo-IaC, and all-in-all being carpet rag fanboys of the new tools.
- leetrout 6y agoTwo things: All the other tools are more approachable and show the user more value quicker. This is similar to all the Dropbox naysayers “I can just use (rsync|ftp|etc)”
- travbrack 6y agoYou honestly believe the new generation of tools provides 0 value over their predecessors?
- snickell 6y agoI agree with the assertion that the core "hard tech" in K8S, docker, Ansible, etc has been with us a long time, and some of us did indeed use it. That said, knowing what to mix and match to create a "pattern that you can learn and everyone uses and learns too" does contribute value, its essentially parallel to the value provided by linux distros. I can "docker pull" from many different distros, with lots of premade apps. I think the lesson for the "hard technology" folks is when you solve a hard technical problem DO think about setting up and promoting high-level standards with sane defaults. You are the most knowledgable person(s) for your "hard tech problem", and thereby often in the best position to standardize the default pattern by which it can be used. That can contribute as much or more value than the hard technical work itself. EDIT: also, don't forget to publish and promote STANDARDS giving a well documented "if you don't have a reason not to, do it this way" path for integrating useful tools together. That's essentially what docker is/did, and even though it can be recreated in a 100 lines of bash (https://github.com/p8952/bocker https://github.com/p8952/bocker) the branding led to ~100,000 developers publishing containers that are fairly easy for anyone else to understand and build from.
- stevenalowe 6y agogrey font is unreadable
- eyelidlessness 6y agoAnd drastically too thin. They didn’t design this high DPI display to provide less detail. Thankfully I was able to get what I assume is the gist of the post with reader mode.
- kords 6y agoServerless framework(https://www.serverless.com/ https://www.serverless.com/) is another popular tool which can be used with multiple cloud providers. Unfortunately, it has similar limitations as the tools described in the article. I just wanted to mention it because, for me, learning curve was easier than Terraform or Pulumi.
- jaza 6y agoPretty good article. As someone who has recently started using Terraform a fair bit (in AWS), I have to agree that it leaves me thinking "surely there's a better way". I agree, it's not code (any more than HTML is), and I agree, it does inevitably get heavily copy-pasted and become hard to maintain. But I'm not sure that the article presents an alternative, at least not one that's fundamentally different. The conclusion says "hint: Ansible + Terraform". Ok, that's a start, but it's still just "config + config". Where's the code?
- hardwaresofton 6y agoI wish the author had spent more time looking at Pulumi. I think I can boil the article down to the following assertion: "True"/Better infrastructure as code means packaging infrastructure with code. The ability to define structure (a la classes/data types) and instantiate instances (a la class instances/value types) at the macro system level is important. This is expressly supported by Pulumi's component and custom resources[0]. I think they don't even know how powerful this feature is, because it's buried so deep in the documentation. [0]: https://www.pulumi.com/docs/intro/concepts/programming-model/#resources https://www.pulumi.com/docs/intro/concepts/programming-model...
- lincpa 6y agoAnother Fractal Architectures, more simple and unified: The Grand Unified Programming Theory: The Pure Function Pipeline Data Flow with Warehouse/Workshop Model: everything is a pipeline, the perfect way to achieve the simplicity and unity of the software ecosystem. https://github.com/linpengcheng/PurefunctionPipelineDataflow https://github.com/linpengcheng/PurefunctionPipelineDataflow An application case: Apple M1 chip adopts Warehouse/Workshop Model Warehouse: unified memory Workshop: CPU, GPU and other cores Product: information there's also a new unified memory architecture that lets the CPU, GPU, and other cores exchange information between one another, and with unified memory, the CPU and GPU can access memory simultaneously rather than copying data between one area and another. Accessing the same pool of memory without the need for copying speeds up information exchange for faster overall performance. reference: Developer Delves Into Reasons Why Apple's M1 Chip is So Fast https://www.macrumors.com/2020/11/30/m1-chip-speed-explanation-developer/ https://www.macrumors.com/2020/11/30/m1-chip-speed-explanati...