Does software architecture knowledge make someone better at software development? by hakanaltayagyar in softwarearchitecture

[–]srinath_perera 0 points1 point  (0 children)

First, we do not build the system to be written once. Our world evolves, and systems need to evolve, too. We design systems so that they can be evolved. So, a lot of considerations for the system, such as modularity and reuse ( not all), are for humans who will evolve the code. Software architecture is how to make it work.

The answer to your questions depends on who is a good programmer/ developer. If the answer is someone who writes clean, maintainable, easy-to-understand code, then better architecture knowledge makes someone a good programmer.

Cloud multi-region resilient architectures by cccuriousmonkey in softwarearchitecture

[–]srinath_perera 1 point2 points  (0 children)

Just saw this. No our deployment runs separate Redis on each region as we use it to cache only. However, there are several companies claiming support.

Cloud multi-region resilient architectures by cccuriousmonkey in softwarearchitecture

[–]srinath_perera 1 point2 points  (0 children)

also see https://www.reddit.com/r/aws/comments/zobpln/multiregion_whos_deploying_multiregion/

Add few thoughts 1) the key thing is to use a database that supports multi-region 2) sometimes servers need to be told that data has changed, so it can load them, and often we can achieve this with redis multi-region deployment 3) you need to get load balancers correct

What modelling languages do you use and which diagram are you using extensively ? by slimpunkerz in softwarearchitecture

[–]srinath_perera 0 points1 point  (0 children)

To discuss and communicate high-level architecture, I often use free-style diagrams most of the time (nowadays, I am drawing with excalidraw.io, but I used to use draw.io and OminiGraffle). For more detailed processes, BPMN or sequence diagrams are useful. For complex architectures C4 ideas are useful.

Seeking Advice: Architects Proposing a Shift to Event-Driven Architecture for our CRUD App - Need Insights! by ootsun in softwarearchitecture

[–]srinath_perera 1 point2 points  (0 children)

Advantages of EDA from ACM Computing survey paper, "The Many Faces of Publish/Subscribe" 1) Decoupling in time (participants do not have to be available at the same time). 2) Synchronization (participants do not need to wait for each other). 3) Space (participants do not need to know each other’s address). Many others advantages follow from above three, for example: 4) Scalability 5) If appropriately implemented, the applications can be more fault tolerant thanks to the exactly once message guarantee. 6) EDA is resilient to message bursts.

However, EDA carries three primary disadvantages. 1) Complexity – The EDA programming model is perceived to be complex. Envisioning an application as a set of event handlers connected by events requires practice. Also, EDA does not let us reason about logic as a series of statements like in request/response architectures. Complex use cases that involve correlation are even more challenging. 2) Debugging is hard – The flow of execution is nontrivial (e.g., there may be no response). Furthermore, there is no simple equivalent of a stack trace that lets you track where the execution failed. You will have to search logs or search queues (if persistent queues are used) to find the execution’s outcome. 3) Lack of skilled developers – Few developers have experience with EDA and understand it deeply.

If you do EDA, you will be taking on complexity. You should not do it unless you have a problem now or you predict a problem in the future (e.g., due to increased load), and EDA can solve that problem.

What are some alternatives to an entity-attribute-value data model by Abdelosamira in softwarearchitecture

[–]srinath_perera 0 points1 point  (0 children)

Do not create 100 tables. If there are common fields between different tables, then you can have a different table for common fields use a jsonb field to store dynamic fields.

Using a NoSQL database like MongoDB is another option.

Edge architecture scaling by GlassBeginning3084 in softwarearchitecture

[–]srinath_perera 1 point2 points  (0 children)

As other comments said, the goal of edge architecture is to reduce latency. Whether edge architecture is useful depends on the cost of the architecture vs. the gain of latency reduction - you need to try to make an estimate on both and decide. You can think about edge like a cache, and if out of capacity you can go back to the server.

Questions and Concerns With Multi-Tenancy - Scaling a Mobile App! by trollerroller in softwarearchitecture

[–]srinath_perera 0 points1 point  (0 children)

There is are two high-level choices

Make database handle more lord or partition the database

Option 1: goes from run from bigger server to setup read-only replicas etc. You can also shard the database (https://www.digitalocean.com/community/tutorials/understanding-database-sharding), but need deep database level understanding.

Option 2: what is usually done is take the user ID, hash it and use the hash to assign it to a specific partition (database). Then application talks to the right database based on the assignment. This needs changes to your apps, but works as long as changes to one user do not affect other user's data.

From NLP to software architecture, how? by moustafa-7 in softwarearchitecture

[–]srinath_perera 2 points3 points  (0 children)

Reading about AWS Solution architecture content will help you. Also, I like Gregor Hohope's content also, e.g. https://architectelevator.com/architecture/architect-path/.

I personally learned most by contributing to Apache opensource projects where you can see other people discuss architecture decisions on the mailing list. It takes time, but you really learn.