Architecture Modernization in Legacy AWS Cloud-Native Systems
Learn how to modernize legacy AWS cloud-native systems using the Outbox Pattern with DynamoDB Streams, SNS, SQS, and Lambda to build reliable event-driven architecture.
Learn how to modernize legacy AWS cloud-native systems using the Outbox Pattern with DynamoDB Streams, SNS, SQS, and Lambda to build reliable event-driven architecture.
A practical walkthrough showing how seemingly reasonable architectural decisions can gradually turn a system into a big ball of mud. Learn about the Bad Parts of architectures.
You don’t know who you'll meet on the other side. You don’t know the company's mentality. You jump into unknown, into unknown organizational structure which often turns out to be chaotic, at best. Most importantly, you may face a person who doesn't necessairly wish you well.
If you wonder how to take another step towards business language and its technical representation, then you should definitely read this article. You will learn how discovering of business capabilities combined with the vent sourcing and the decider pattern helps you in this challange.
Homo Sovieticus's mantra was: Everything belongs to the kolkhoz, everything belongs to me. In the context of this text, I want to rephrase it to: Everything belongs to the app, everything belongs to users.
Learn simple and effective ways to create DTOs in TypeScript for better type safety and data validation in your applications.
Programming is not the most essential part of the development process, but the collaboration is.
Pretending it is not exposes your client’s system to the unpredictability of the world’s reality.
I'll do a small revision of the SOLID principles, shifting it more towards high-level components and modern software development practices.
Learn when to apply DRY vs WET principles in software architecture. DRY within modules for maintainability, WET between modules for decoupling.
Do not harm yourself by thinking that you create a system with independent components
Learn why teams waste time applying unnecessary quality attributes and how to determine the right level of quality for your system's actual needs.
Learn how being trapped by design patterns leads to overengineering. Discover the balance between coupling control and communication in software development.
Why naming patterns as 'architectures' creates false hope. Learn the difference between implementation patterns and true software architecture.
Most of the known patterns can be reduced to the coupling control. Get to know how this reasoning can help you simplify your solutions.
Many documentations of different frameworks can deceive you because their creators are primarily interested in their interests, and sometimes, their knowledge and experience are limited. Read this article to prepare!
How to implement a time-based resource reservation system, assuming high traffic?
If you do THAT, THEN YOU DO IT WRONG!
My thoughts on how we can help ourselves to successfully deliver the MVP on the market.
The common language for healthcare data exchange
Have you ever gotten stuck with your task because of a change introduced by another developer in a completely separate service?