💻 Sitemap - Application architecture
-
Introduction • 1. The Evolution of Architectures • 2. CQRS and Event Sourcing • 3. DDD — Designing with Meaning • 4. Reactive Architectures • 5. How to Choose an Approach • Pitfalls • Event Sourcing - Explodes Complexity During Migration • DDD — Requires Discipline in Naming Entities (and More) • Microservices Increase Infrastructure Costs • Conclusion • A Test: The Level of Architectural Thinking in a Java Developer
-
Signs of a legacy project: how to recognize an old ship • 1. Restore observability: turn on the light in the machine compartment • 2. Stabilize the centers of chaos: extinguish black holes • 3. Build test insurance: secure the borders • 4. Update the foundation: replace rotten boards • 5. Remove coupling: restore the integrity of the body • 6. Return knowledge to the team: eliminate the cult of the "sole priest" • 7. Modernize gradually: without revolutions • 8. Update the infrastructure: give the ship a next-generation engine • 9. Continuous repayment of debt: small steps give a long life • The result: old ships sail long if they are cared for • Quick Diagnosis of Your Legacy Project • Test — How Much Has Your Project Become Legacy
Useful Articles:
Legend ✅ — Production (can be used in production) ⚠️ — Preview / Incubator (experimental, not for production, version when it became Production is indicated in parentheses) Version Table Ver...
In this article, we will examine the key aspects of memory management, runtime, and object allocation mechanisms in Go and Java. We will focus on the differences in approaches to memory management, wo...
← Related articles: Context, propagation and cancellation patterns in Go vs Java | Patterns, idioms and best practices in Go 1. Channel direction — channel directions In Go, channels can be one-w...
New Articles:
Zero Allocation — is an approach to writing code in which no unnecessary objects are created in heap memory during runtime. The main idea: fewer objects → less GC → higher stability and performance. ...
In Java, performance is often determined not by the "beauty of the code," but by how it interacts with memory, the JIT compiler, and CPU cache. Let s analyze why the usual for is often faster than Str...
This article is dedicated to a general overview of how the compiler, build, and tooling practices are arranged in Go, and how to better understand them through comparison with Java. We will not delve ...