Showing posts from June, 2018

Software Architecture

This post is an abstract of some chapters in the book 'Software Systems Architecture' by Eoin Woods and Nick Rozanski Software Architecture Definition Software elements that you need to specify and or design in order to meet a particular set of requirements, plus the hardware required to run those software elements on Key Parts of the definition Structure - System’s elements, pieces that can be constructed, and their relationships Static structure Software classes, Relational entities, Network, Hardware etc Dynamic structure System response to an external stimulus Information flow, parallel/serial execution of tasks, effects on data (create, update, delete) Properties - Fundamental properties of a system Externally visible properties Functional behavior Quality properties Scalability, Performance, Security etc Principles - of its design and evolution Fundamental beliefs, approach or intent - that guides the architecture Conventions that

Some simple questions that may need some thinking

In this blog post, I have put down some questions that are kind of random questions but they are important questions whenever you develop any software. The answers to these questions depend on the context and require a lot of experience and knowledge to make a good judgment. Where should I store media images for my web application?  Inside web application On a web server  In a database  On a cloud  Where should I write an application log messages? In a local file  Syslog RDBMS NoSQL database Where should a client store authentication token? Cookies Local Storage What kind of authentication mechanism should I use for my web application? Stateless session tokens Session Ids What should be the format of log file messages? Free text string format Key-Value Pairs string format JSON What should I use for notifying a service for some action?  A message queue A table in a shared database Can I use a single load balancer to handle the load of hundred