In my daily job as an independent consultant and Solutions Architect specialised in AWS, I'm helping customers with various technical stacks. And every time, I'm amazed how deficient frameworks and (commercial and) open source solutions are when they try to integrate AWS services.
Why are frameworks so bad at integrating with Cloud Services?
The main reason for this bad experience is that most frameworks aren't cloud-native. More, their promise is often to offer a seamless experience between on-premise and cloud environments. They will offer S3 as a drop-in replacement for a file system, or SQS as a drop-in replacement for RabbitMQ. But they fall short of what a cloud-native person expects from those services.
Let me give you a few examples:
- Symfony, a PHP framework, has a Messenger library that manages various queue providers. But the library tries to manage retries and dead-letter from the consumer perspective, instead of using SQS' native feature.
- None of the frameworks I've seen offer a proper experience of S3 Event notifications or SQS-to-Lambda event source mapping.
The area where it's most obvious is authentication:
- I can't recall how many times I scratched my head when reading library documentation and realising the library requires you to provide an Access key + Secret key pair, which is absolutely unnecessary if your workload runs on AWS compute. And sometimes, you cannot omit the information and let the AWS SDK (that the lib uses under the hood) silently makes its magic because the library will explicitly check for its presence.
- That's also true with commercial software: last time I checked, Athena's integration in JetBrains' IntelliJ IDE was still broken if you tried to use IAM Identity Center and CLI profiles. You can spend hours trying to find a way to make Tableau use IAM Identity Center auth.
Why AWS should do more about it
AWS, like many Cloud providers, is a significant contributor to the open source ecosystem. But, as far as I can tell based on their open source blog and website page, these contributions focus essentially on software that are key parts of AWS own services (Cassandra, Airflow, Postgre, OpenSearch, ..), lower layers (s2n-tls, openjdk) or AWS-initiated stuff (SDKs, AI Multi-Agents Orchestrator etc.) and not on libraries developers around the world use every day (SpringBoot, Symfony, Django, NextJS, etc.).
Yes there is the SDK, and sometimes higher-level clients and constructs. But most developers out there will use their framework's extensions and expect them to do a good job. But they don't, because whoever coded them had only a partial understanding of the AWS ecosystem.
I believe this lack of focus and investment in that area to be detrimental to us, AWS users, and, in fine, to AWS itself. Sure, AWS Amplify is a GREAT service to help developers get started with AWS. Sure, there is no immediate payback in terms of image when contributing to other people's stacks. But those frameworks aren't legacy and any given company's stack is really slower to evolve than the tech ecosystem it lives in.
Therefore, I believe AWS could, and should, invest more in this area.
Top comments (0)