Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changelog #12

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 151 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0] - 2017-06-20
### Added
- New visual identity by [@tylerfortune8](https://github.com/tylerfortune8).
- Version navigation.
- Links to latest released version in previous versions.
- "Why keep a changelog?" section.
- "Who needs a changelog?" section.
- "How do I make a changelog?" section.
- "Frequently Asked Questions" section.
- New "Guiding Principles" sub-section to "How do I make a changelog?".
- Simplified and Traditional Chinese translations from [@tianshuo](https://github.com/tianshuo).
- German translation from [@mpbzh](https://github.com/mpbzh) & [@Art4](https://github.com/Art4).
- Italian translation from [@azkidenz](https://github.com/azkidenz).
- Swedish translation from [@magol](https://github.com/magol).
- Turkish translation from [@karalamalar](https://github.com/karalamalar).
- French translation from [@zapashcanon](https://github.com/zapashcanon).
- Brazilian Portugese translation from [@Webysther](https://github.com/Webysther).
- Polish translation from [@amielucha](https://github.com/amielucha) & [@m-aciek](https://github.com/m-aciek).
- Russian translation from [@aishek](https://github.com/aishek).
- Czech translation from [@h4vry](https://github.com/h4vry).
- Slovak translation from [@jkostolansky](https://github.com/jkostolansky).
- Korean translation from [@pierceh89](https://github.com/pierceh89).
- Croatian translation from [@porx](https://github.com/porx).
- Persian translation from [@Hameds](https://github.com/Hameds).
- Ukrainian translation from [@osadchyi-s](https://github.com/osadchyi-s).

### Changed
- Start using "changelog" over "change log" since it's the common usage.
- Start versioning based on the current English version at 0.3.0 to help
translation authors keep things up-to-date.
- Rewrite "What makes unicorns cry?" section.
- Rewrite "Ignoring Deprecations" sub-section to clarify the ideal
scenario.
- Improve "Commit log diffs" sub-section to further argument against
them.
- Merge "Why can’t people just use a git log diff?" with "Commit log
diffs"
- Fix typos in Simplified Chinese and Traditional Chinese translations.
- Fix typos in Brazilian Portuguese translation.
- Fix typos in Turkish translation.
- Fix typos in Czech translation.
- Fix typos in Swedish translation.
- Improve phrasing in French translation.
- Fix phrasing and spelling in German translation.

### Removed
- Section about "changelog" vs "CHANGELOG".

## [0.3.0] - 2015-12-03
### Added
- RU translation from [@aishek](https://github.com/aishek).
- pt-BR translation from [@tallesl](https://github.com/tallesl).
- es-ES translation from [@ZeliosAriex](https://github.com/ZeliosAriex).

## [0.2.0] - 2015-10-06
### Changed
- Remove exclusionary mentions of "open source" since this project can
benefit both "open" and "closed" source projects equally.

## [0.1.0] - 2015-10-06
### Added
- Answer "Should you ever rewrite a change log?".

### Changed
- Improve argument against commit logs.
- Start following [SemVer](https://semver.org) properly.

## [0.0.8] - 2015-02-17
### Changed
- Update year to match in every README example.
- Reluctantly stop making fun of Brits only, since most of the world
writes dates in a strange way.

### Fixed
- Fix typos in recent README changes.
- Update outdated unreleased diff link.

## [0.0.7] - 2015-02-16
### Added
- Link, and make it obvious that date format is ISO 8601.

### Changed
- Clarified the section on "Is there a standard change log format?".

### Fixed
- Fix Markdown links to tag comparison URL with footnote-style links.

## [0.0.6] - 2014-12-12
### Added
- README section on "yanked" releases.

## [0.0.5] - 2014-08-09
### Added
- Markdown links to version tags on release headings.
- Unreleased section to gather unreleased changes and encourage note
keeping prior to releases.

## [0.0.4] - 2014-08-09
### Added
- Better explanation of the difference between the file ("CHANGELOG")
and its function "the change log".

### Changed
- Refer to a "change log" instead of a "CHANGELOG" throughout the site
to differentiate between the file and the purpose of the file — the
logging of changes.

### Removed
- Remove empty sections from CHANGELOG, they occupy too much space and
create too much noise in the file. People will have to assume that the
missing sections were intentionally left out because they contained no
notable changes.

## [0.0.3] - 2014-08-09
### Added
- "Why should I care?" section mentioning The Changelog podcast.

## [0.0.2] - 2014-07-10
### Added
- Explanation of the recommended reverse chronological release ordering.

## [0.0.1] - 2014-05-31
### Added
- This CHANGELOG file to hopefully serve as an evolving example of a
standardized open source project CHANGELOG.
- CNAME file to enable GitHub Pages custom domain
- README now contains answers to common questions about CHANGELOGs
- Good examples and basic guidelines, including proper date formatting.
- Counter-examples: "What makes unicorns cry?"

[Unreleased]: https://github.com/olivierlacan/keep-a-changelog/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.3.0...v1.0.0
[0.3.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.8...v0.1.0
[0.0.8]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.7...v0.0.8
[0.0.7]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.6...v0.0.7
[0.0.6]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.5...v0.0.6
[0.0.5]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.4...v0.0.5
[0.0.4]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.3...v0.0.4
[0.0.3]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.2...v0.0.3
[0.0.2]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.1...v0.0.2
[0.0.1]: https://github.com/olivierlacan/keep-a-changelog/releases/tag/v0.0.1
166 changes: 166 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
- Badges

[![Keep a Changelog v1.1.0 badge][changelog-badge]][changelog]

[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)

=======
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)

- Build

Drone:

[![Build Status](https://cloud.drone.io/api/badges/astubbs/ks-tributary/status.svg)](https://cloud.drone.io/astubbs/ks-tributary)

CodeCov.io:

[![codecov](https://codecov.io/gh/astubbs/ks-tributary/branch/master/graph/badge.svg)](https://codecov.io/gh/astubbs/ks-tributary)

# KS-Tributary; A Kafka Streams Reference App

Realistic implementation of a full real Kafka Streams application and stream processing logic.

* [How to run](#how-to-run)
* [Maven](#maven)
* [How to build](#how-to-build)
* [Features](#features)
* [Stream Processing](#stream-processing)
* [Generic](#generic)
* [Finance](#finance)
* [Chat](#chat)
* [Unit testing](#unit-testing)
* [Integration testing](#integration-testing)
* [Software Structure](#software-structure)
* [Features on their way...](#features-on-their-way)
* [Stream Processing](#stream-processing-1)
* [Software Structure](#software-structure-1)
* [Development](#development)
* [Building](#building)
* [Contributing](#contributing)

## How to run

Integration tests require a running docker daemon.

Intellij - use provided run targets to run with or without integration tests

### Maven

Disable integration tests

mvn clean verify -DskipITs

## How to build

## Features

### Stream Processing

#### Generic
- Realtime delta calculation (e.g. produce derived delta messages from database CDC full state messages)
- Cached system configuration lookup with realtime updates
- Realtime fan out of topic data onto _communication channels_ like web sockets
- Dynamic Avro wrapper system to extend Avro objects with custom code without modifying generated code, integrated with Avro Serdes

#### Finance
- Realtime calculation of windows
- Three topologies
- Financial snap set precomputation
- Simpler approach that's centralised performance wise
- More sophisticated fully distributed
- Custom state store intermediate level demonstration
- Simple high low bar calculation
- Back loading of data from previous buckets


#### Chat
- Transcript generation


### Unit testing
- Demonstration of Time model decoupling for test
- Demonstration of AssertJ powerful assertions
- here
- here

### Integration testing
- Model hydration using human readable data from JavaFaker[] project
- Deterministic generation of series of random data, useful for larger integration tests
- TestContainers for Integration Testing with real Kafka brokers.
- CI service integration: Travis, CircleCI, Drone (drone not working with Docker in Docker (i.e. TestContainers not working))
- JSR Money integration
- Avro message sizing analysis - i.e. how big is my data when it's bin packed and compressed? Compared with Gzipped vs Zstd vs Json?
- Demonstration of asynchronous testing using Awaitility[]


### Software Structure
- Guice (dynamic) and Dagger (static) dependency injection examples
- Dagger
- Java Money library demonstration
- Java Units of Measure library demonstration (statically typed Scientific units combination library)
- Lombok use (make Java more tolerable)
- Avro IDL vs AVSC model generation demonstration


## Features on their way...
### Stream Processing
- Realtime out of order recalculation of data aggregation in state dependent buckets
- Massive scale question and answer quiz show of just in time answer discovery
- Massive skew avoidance techniques
- Compound key query demonstration / data demoralisation (e.g. Invoice reconstruction from Orders and Order Items)
- Yearly aggregator by date (think April 5th Financial years)
- Normal window computations can only run against fixed size windows (e.g. not calenda dates)
- Extending to also do monthly dates is an easy modification

### Software Structure
- External Interactive Query example on Qurkus[] and GraalVM[]

[0.7]
Dagger

[0.6]
0.5
0.4
0.3
0.2
[0.1]
- Three topologies
- Financial snap set precomputation
- Simpler approach that's centralised performance wise

- More sophisticated fully distributed
- Custom state store intermediate level demonstration
- Unit testing coverage
- Guice test wiring
- Separated Integration testing
- Kafka ContainerTests
- Avro message model sizing analysis
- Raw bin-packed vs GZipped vs Json
- Java Science Units and Quantities use

## Development

### Building

- Requires Lombok plugin for your IDE

### Contributing
Submit a PR for review :)

https://www.conventionalcommits.org/en/v1.0.0/
[the Angular convention](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines)


[val-lombok]: https://www.projectlombok.org/features/val

[rbenv]: https://github.com/rbenv/rbenv
[ruby-version]: .ruby-version
[source]: source/
[pull-request]: https://help.github.com/articles/creating-a-pull-request/
[fork]: https://help.github.com/articles/fork-a-repo/
[version-badge]: https://img.shields.io/badge/version-1.1.0-blue.svg
[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg

[changelog]: ./CHANGELOG.md
[changelog-badge]: https://img.shields.io/badge/changelog-Keep%20a%20Changelog%20v1.1.0-%23E05735