java-design-patterns icon indicating copy to clipboard operation
java-design-patterns copied to clipboard

Vertical slice architecture

Open iluwatar opened this issue 2 years ago • 12 comments

Description: The Vertical Slice Architecture (VSA) design pattern focuses on organizing code by features rather than layers, promoting a more modular, maintainable, and scalable architecture. This approach ensures that each vertical slice contains all necessary components, such as data access, business logic, and user interface, which are isolated from other slices.

Main elements of the Vertical Slice Architecture include:

  • Feature-based Structure: Each feature is a self-contained module with its own domain logic, data access, and user interface.
  • Single Responsibility: Each slice is responsible for one specific functionality or feature, reducing dependencies between different parts of the application.
  • Encapsulation: Each slice encapsulates its logic, making the application more modular and easier to test.
  • CQRS (Command Query Responsibility Segregation): Often used in conjunction with VSA to separate read and write operations, enhancing performance and scalability.

References:

Acceptance Criteria:

  1. Implement a new feature using the Vertical Slice Architecture pattern, ensuring it includes all necessary components (domain logic, data access, user interface) within the slice.
  2. Ensure the feature follows the single responsibility principle, isolating its functionality from other parts of the application.
  3. Provide documentation and examples within the codebase to illustrate how the Vertical Slice Architecture is implemented and how it benefits the overall project structure.

iluwatar avatar Dec 02 '22 05:12 iluwatar

I would like to start working on this new pattern! Could you please assign it to me?

thestbar avatar Jul 14 '23 17:07 thestbar

This issue has been automatically marked as stale because it has not had recent activity. The issue will be unassigned if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Sep 18 '23 01:09 stale[bot]

@iluwatar more over like this right? https://medium.com/sahibinden-technology/package-by-layer-vs-package-by-feature-7e89cde2ae3a

sugan0tech avatar Sep 30 '23 05:09 sugan0tech

@thestbar may I know the status of this epic?

sugan0tech avatar Sep 30 '23 05:09 sugan0tech

@iluwatar more over like this right? https://medium.com/sahibinden-technology/package-by-layer-vs-package-by-feature-7e89cde2ae3a

Exactly. If @thestbar is not working on it, I'll assign to you.

iluwatar avatar Oct 01 '23 07:10 iluwatar

@thestbar may I know the status of this epic?

Have done some little stuff but didn't have the time to finish it lately. @iluwatar feel free to assign it to @sugan0tech.

thestbar avatar Oct 01 '23 09:10 thestbar

if no one solves this, can you assign it to me?

damlaYasarr avatar Oct 06 '23 10:10 damlaYasarr

@damlaYasarr I already made a PR, waiting for his review.

sugan0tech avatar Oct 06 '23 11:10 sugan0tech

@iluwatar I have made the PR,can you check it out?

sugan0tech avatar Oct 08 '23 16:10 sugan0tech

@sugan0tech I have a question. I want to code facade design but I cant install mvn package. I mean , I created mvn project but which architecture that I have to choose?

damlaYasarr avatar Oct 08 '23 16:10 damlaYasarr

@sugan0tech I have a question. I want to code facade design but I cant install mvn package. I mean , I created mvn project but which architecture that I have to choose?

You can use an architecture that you think fits well with it. Also, have some reference in other patterns and code changes in PR's as well.

sugan0tech avatar Oct 08 '23 17:10 sugan0tech

This issue has been automatically marked as stale because it has not had recent activity. The issue will be unassigned if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Dec 10 '23 21:12 stale[bot]