alien_
It takes a bunch of JSON files that define info about my clients, as well as my own business details.
It then uses some of those JSON files to generates a PDF for the invoice, which it attaches to an email pre-populated with all the details, including the client’s finance email address, etc., which I just need to double check and send.
Might be useful for freelancers having multiple clients billed using various billing methods (hourly, results based, etc.)
Show HN: Identifiy test coverage gaps in your Go projects
Unfortunately Beehiv added their tracking query strings which will break the site because of the way we host it from a static content bucket.
It's enough if you just delete the beehiiv query string.
I'll try to extend the CloudFlare worker we use for the redirect of / to index.html to also handle this.
Show HN: Resolve AWS SecretManager secrets as env vars
https://github.com/cristim/resolve-aws-secrets
Frustrated by the official way to resolve secretmanager secrets in Lambda functions using the official Lambda extension (https://docs.aws.amazon.com/systems-manager/latest/userguide...), I built a more user-friendly way, which requires no code changes to the Lambda function code.
Feel free to criticize them, but that code saved thousands of customers over $100M over the years in aggregate, and was launching at some point a non-negligible percentage of the total AWS Spot capacity.
Regarding the OSS repos, I said they're also still available as open source, but evolved a lot since in the commercial version as stated in the readme of AutoSpotting.
This is the list of changes only available in the commercial version of AutoSpotting: https://github.com/LeanerCloud/AutoSpotting/discussions/489
For EBS Optimizer, the OSS code base evolved into the Optimizer tool released under the ONCE model as part of this bundle and it's been all but rewritten.
Regarding the lack of tests, the code base has seen many changes since, and critical areas have unit tests now.
When it comes to IaC drift, in case of AutoSpotting and EBS Optimizer the ASGs and volumes are expected to be tagged as per the expected tags, and you can do that through IaC to avoid drift.
The instances launched by the ASG can be replaced by AutoSpotting without creating any IaC drift, because the infrastructure code does not have any reference to the instances.
The same is true for EBS Optimizer, it is expected to run against EBS volumes created when launching instances. The IaC will not show drift because it's not keeping track of the underlying EBS volumes, only launching the instances.
But the Optimizer tool part of this ONCE release will indeed cause drift because it's changing the instance type of RDS databases and Elasticache clusters, which is captured in the IaC code. The drift will need to be resolved after the fact, which is what I do as part of my service work when using this tool for my customers.
These tools saved me a lot of time when saving my customers money, and the TF building blocks are just examples of a few patterns that I used for delivering infra for my customers and I've been thinking it may save some people time from building the same from scratch.
If you're not interested in these, fair enough, some people already bought these.
Releasing my CLI AWS cost saving tools and TF microservice components as ONCE
For many years I've been building self-hosted serverless headless AWS cost optimization tools:
- AutoSpotting.io - for adopting Spot instances in ASGs without configuration changes, no vendor lock-in, and with automated diversification and failover to on-demand - started as OSS alternative to the Spot.io Elastic Group product, still available as OSS at https://github.com/LeanerCloud/AutoSpotting.
- EBS Optimizer for GP3 converting EBS volumes to GP3, also available as OSS at https://github.com/LeanerCloud/EBS-Optimizer.
(I'm currently working on a few more, for example a NAT Gateway alternative and a tool to automate Savings plans purchases.)
Over the last year I started to offer cost optimization as a service, mainly in order to get more ideas for such tools.
Over multiple customer engagements I built almost a dozen CLI tools that can be used to optimize many of the AWS services at my customers. Using these tools I was able to deliver some 70% cost optimizations in average at my services customers over the supported resources, and sometimes as high as 60% of their entire AWS bill.
I also did a few DevOps engagements, out of which I developed a bunch of Terraform building blocks that can be used to create ECS Fargate or Lambda microservices with persistence on RDS Aurora Serverless v2, with automated CI/CD and other goodies included out of the box.
My main FinOps CLI tool named Optimizer was evolved out of EBS Optimizer over multiple customer engagements, and now does automated conversion to GP3 for EC2 and RDS storage volumes, as well as rightsizing and conversion to Graviton for RDS, ElastiCache and OpenSearch, among other things.
I recently started to offer Optimizer under the ONCE Source-Available license used by 37signals for Campfire, and I will gradually release all my CLI FinOps tools and Terraform building blocks under a large bundle of tools and building blocks.
(The Terraform building blocks scheduled to be released in a couple of days)
If you're looking to optimize cloud costs and/or build serverless microservices on AWS, you may want to check this out.
Adopting the 37Signals Once Model for LeanerCloud CLI Tools and Terraform Code
Current OpenTofu contributors vs. pledged FTEs
I saw a few people made similar comparisons for other forked projects in the past, and as an infra guy myself, I immediately thought about OpenTofu, now that we're more than half a year after the fork from Terraform, they recently had a massive release, and also had some interesting shenanigans with Hashicorp's lawyers accusing them of stealing their precious IP.
MRR halved for the 3rd time, 2nd time in less than 12 months
Ask me anything!
AWS also has some dashboard in the AWS console similar to this but it doesn't have cost information for the resources, it's not easy to track the resources that generate the costs, and you can't extract the data out of it for further automated processing.
They also have visibility for this in the Cost Intelligence dashboards, but you need those deployed in the account.
This tool runs from your local machine and you can point it to different accounts with just using a different AWS CLI profile, and you don't need to deploy anything in the target account.
I show it all on a single view across services(looks and feels much like a spreadsheet), each resource with its price tag next to it and also showing some metrics, like load balancer traffic numbers that should inform consolidation decisions.
Data export functionality is not there yet but we may add it soon if there's demand for it or someone contributes it.
Show HN: OSS tool for estimating future AWS IPv4 costs
https://github.com/LeanerCloud/aws-ipv4-cost-viewer
Just released a new Open Source tool for estimating the future IPv4 costs that AWS will introduce from February.It's a CLI application that shows you the projected costs for each resource, as well as metrics for some resources (so far we only have network traffic for load balancers) that should help taking optimization actions.This project was built using ChatGPT GPT4, with very few manual...
How ECS capacity providers inspired me to fix an ancient AutoSpotting issue
How we maximized task density on our ECS cluster by avoiding burstable instances
Show HN: ChatGPT plugin for AWS – WIP/broken but looking for contributors
https://github.com/LeanerCloud/ChatGPT-cloud-plugin
I started writing a plugin for ChatGPT that would allow us to query and alter AWS resources (other cloud providers could be done similarly but probably would bloat it too much).It's probably always going to be self-hosted because it requires sensitive credentials, currently sourced from your profiles defined in .aws/config.It doesn't work yet but I'm looking for contributors, so if you have...
You're right, it's amazing at that, I've had a similar experience.
At small scale you can also do much of that pretty well also with ECS, we use GitHub Actions for driving our deployments using Terraform.
Why Kubernetes wasn't a good fit for us
It was definitely not about being contrarian but about offering first and foremost a more cost effective but still relatively simple, scalable and robust alternative to their current setup.
They have a single small team of less than a dozen people, all working on a single application, with a single frontend component.
Imagine instead this team managing a K8s setup with DNS, ALB and SSL controllers that each set up a single resource. I personally find that overkill.
What you say may make sense for a large corporation with hundreds of developers from many teams, all sharing a single cluster, but remember this is a pre-revenue startup with a single dev team of less than a dozen people.
But then with a large cluster you will struggle with splitting the costs. In such scenarios I'd rather give each team its own AWS account and have some devops people set up everything from the landing zone.
In this particular case, every service is set up from less than 100 lines of Terraform, which includes Docker image build and push, as well as the task and service definition that deploys that docker image.
yes, they need to handle Terraform, but it's really not so different from the previous Docker-compose YAML file, not to mention the way it would look if converted to K8s YAML.
Why does the developer need to care about the certs and ALBs? The devops engineer you need to set up all those controllers could as well deploy those resources from Terraform.
As I showed in the diagrams from the article this application has a single ALB and a single cert per environment and the internal services only talk to each other through the rabbit MQ queue.
DNS, ALB and TLS certs could be easily handled from just a few lines of Terraform, and nobody needs to touch it ever again.
With EKS you would need multiple controllers and multiple annotations controlling them, and then each controller will end up setting up a single resource per environment.
The controllers make sense if you have a ton of distinct applications sharing the same clusters, but this is not the case here, and would be overkill.
To be honest I wasn't hired to challenge their entire setup, only to make it more cost effective.
So I chose the most straightforward way I could think of that would allow us to come up with a cost effective setup that will be scalable, fault tolerant and simple to maintain later on.
It all probably started with such a single instance running Docker compose, but then over time it evolved into this setup.
The ideal setup I mentioned would have been also cost effective, scalable and resilient.