What Is Software Architecture and Why Is It Important?

You don’t start building a house without an architecture, yet when it comes to software development, most projects don’t have any well-defined architecture.

Many people attribute the difference in approaches to the fact that it’s hard to change the house that’s half done while software is malleable and hence can be changed easily at any moment.

But that’s not true. The further down the road a software project is, the harder and more expensive it is to change its architecture. It’s still doable, but it unnecessarily costs much more than it would’ve cost if some time would’ve been spent on the initial architecture.

Continue reading What Is Software Architecture and Why Is It Important?

Microservices Advantages: Focused, Effective, and Efficient Scalability

When you have a monolithic system of any significant size, it’s likely different parts of it require different types of resources to function optimally. Some parts are CPU intensive, while other parts are RAM intensive. It’s possible that there’s at least one part that would greatly benefit from using GPUs for some intensive computational processing.

Continue reading Microservices Advantages: Focused, Effective, and Efficient Scalability

What Happened to the Architecture?

Waterfall has clearly defined stages of software development: requirements → architecture → design → implementation → and so on. (As a side note, some people don’t differentiate between architecture and design, but I consider them separate. Architecture is strategic, while design is tactical.)

Then along came Agile. Most people started considering Waterfall evil and started opposing everything about it. They threw away the baby with the bathwater. And by that I mean essential practices like architecting got thrown away along with Waterfall.

Continue reading What Happened to the Architecture?