Description
RFC: Powertools for Lambda (Java) v2 Release
Summary
In this RFC we propose a v2 release for the "Powertools for Lambda (Java)" library. The intent is to bundle together significant breaking changes that have been identified since the library's inception two years ago. This major version release will encompass updates and improvements across the board, addressing accumulated issues and enhancements. The v1 release will remain supported via bugfixes for 6 months after the initial release of v2, with new features added to v2 only.
Motivation
As Powertools for Lambda (Java) has grown and evolved, several breaking changes and improvements have been identified that cannot be incorporated within the current version without changing parts of the public interface. Some examples:
- Improving flexibility by allowing users to use the logging module they want [#965] and align with best practices in the Java community.
- Improving modularity, extensibility and cold-start performance by breaking down monolithic modules [ Maintenance: Split powertools-parameters into submodules #1402, Maintenance: Split powertools-idempotency into sub-modules #1467 ]
- Improving performance by switching to the CRT client [ # 1092 ]
As we preserve backwards compatibility between minor versions and cannot address these changes without a major release. A v2 release will provide a clear transition path for users with well-documented changes and a suite of new features.
Description
The v2 release is a concerted effort to enhance the "Powertools for Lambda (Java)" library by:
- Working through the backlog of issues marked in GitHub as requiring breaking changes and triaging them for inclusion in the release
- Conducting an end-to-end review of the entire library to identify any additional changes that need to be implemented, ensuring the library is robust, up-to-date, and aligned with current best practices.
This approach will provide a structured and comprehensive update to the library, addressing technical debts and paving the way for new features and improvements.
Drawbacks
- Users migrating to the new version will in some cases need code changes
- The team will have to support two versions of the library for some time
Rationale and alternatives
Status quo - we continue to accumulate breaking changes, but do nothing to action them. This option isn’t workable, as it means that we will work against Java best practices - for instance, by being unable to use the CRT client.
Breaking changes without major version change - This option is discarded as it is against our tenets and semantic versioning.
Detailed List of Changes
Features
- Rewrite logging module to not force
log4j
usage (#965) ✅ - Support high resolution metrics (#1041, #971) ✅
Use CRT client for SDK calls (#1092)❌- Upgrade aws-events to v4 (TODO)
- Validation module integration with HTTP requests (#1298) ✅
- Support validation module from within the batch module (#1496) ✅
Cleanup
- Module-by-module review for potential high-value breaking improvements (#1283)
- Rename
powertools-core
(#1076) ✅ - Consistency (with python, typescript) on logged field names (#752) ✅
- Split
powertools-parameters
in submodules (#1402) ✅ - Extract dynamodb persistency from
powertools-idempotency
(#1467) ✅ - Remove java 8 support for examples (#1466) ✅
- Validate that we have removed all of the reflection in non-test code (#1466)
- Complete deprecation of
powertools-sqs
in favourpowertools-large-messages
andpowertools-batch
(#1041) ✅ - Review existing issues backlog to ensure we have all v2 work marked (#1283)
- Print message as JSON instead of wrapping in a string (#1508) ✅
Replace jackson databind with jackson-jr (#1479)❌
Documentation
- Create Upgrade guide
- Warning notice in V1 documentation
Metadata
Metadata
Assignees
Type
Projects
Status