Control Your Data Structures

Complex logic should be implemented on data structures you have full control on an internal Domain Model that you can tailor to your problem to simplify your code.

Here is an (opinionated) list of term definitions used in this article:

Documenting the Architecture of Your Projects With the C4 Model

One of the definitions used to approach software architecture is that it is responsible for defining the parts of a project and the technological strategy. And, like any strategy, there must be an ongoing process of review and update. That's why, here on the Zup Open Source team, we're using the C4 model.

Having a view of your project's architecture is crucial in several aspects, as it helps you answer questions such as: how can my system integrate internally or with other systems? Or, how can I guarantee security between my applications? And so on.

Writing Clean Code: Naming

When you start learning how to code your main focus is writing code that works correctly for the problem you are solving. Yes, code needs to work correctly and that is a good place to start learning. However, in a real work environment, you also want to ensure you write clean code.

Clean code is readable, extensible, changeable, and maintainable. These are all important qualities for a code to have.

A Case Study on Spring Framework

The Spring Framework is a great application framework and inversion of control container for the Java platform. It is also a great example of high-quality software. Spring Framework is the foundation for all Spring projects. Collectively, the Spring Framework and the family of Spring projects is often referred to simply as "Spring." Spring provides everything required beyond the Java programming language for creating enterprise applications for a wide range of scenarios and architectures. It has been developed over 17 years.

We analyzed the Spring Framework with CodeMR. CodeMR is an architectural software quality and static code analysis tool. You can find  analysis report generated with CodeMR at: https://www.codemr.co.uk/case-reports/spring-framework/html/html_report_spring-core/htmlx/lbd/dashboard.html.

Microservices Online Shop

The Microservices Online Shop is an application with a modern software architecture that is cleanly designed and based on lightweight .NET technologies. The shop has two build variations. The first variant is the classic microservices architectural style. The second one is with Dapr. Dapr has a comprehensive infrastructure for building highly decoupled microservices; for this reason, I am using  Dapr to build a highly scalable application with clean architecture and clean code.

Most of the work consists of creating the following services:

How Scrum Helps Developers Build Technical Skills and Flexible Architecture

Developers who tried to build at least one product for an end-user know how many things are essential in a product: thoughtful UX, friendly UI, good performance and stability, security and data consistency, logging and maintenance, etc.
Multiply this to the number of platforms that you have to support. Add marketings and licensing, client support and bug reports, new feature requests, and competitive product pressure.

It’s hard to track everything in one head, and it is even harder to be perfect at every job. That’s why we work in teams. That’s why we use project management processes.

A Developer’s Guide to CQRS Using .NET Core and MediatR

“What is CQRS?” you might ask. I hope you didn’t think you were going to get a definition because that’s what Wikipedia is for. Instead, what I’m hoping to achieve with this blog post is to help you understand CQRS through some practical examples.

I will assume you’re either a beginner or someone who is unfamiliar with this topic, so maybe you get scared whenever you run into these big programming acronyms and concepts. I myself have been there, so I’m here to help you figure it out in the easiest way possible.

Data Boundaries Are the Root Cause of Maintenance Problems

Many designs and patterns old and new, like the Layered ArchitectureClean ArchitectureHexagonal Architecture, DCI, and others introduce data-oriented boundaries inside the application.

Data-oriented boundaries are interfaces between architectural parts that primarily consist of data in the form of "properties" that can be freely accessed either directly, through getter methods, reflection, or some other technical means.