Posts

Web Distributed Systems Design

Principles of Web Distributed Systems Design   Availability:  The uptime of a website is absolutely critical to the reputation and functionality of many companies. For some of the larger online retail sites, being unavailable for even minutes can result in thousands or millions of dollars in lost revenue, so designing their systems to be constantly available and resilient to failure is both a fundamental business and a technology requirement. High availability in distributed systems requires th e careful consideration of redundancy for key components, rapid recovery in the event of partial system failures, and graceful degradation when problems occur.   Performance:  Website performance has become an important consideration for most sites. The speed of a website affects usage and user satisfaction, as well as search engine rankings, a factor that directly correlates to revenue and retention. As a result, creating a system that is optimized for fast responses and low latency is  key .  

Designing Software Architecture basics

Image
How an architecture is prepared How does the Architecture world works or move  [from Open Group] Desired Architecture for today’s world Architectural Patterns and Styles An architectural style, sometimes called an architectural pattern, is a set of principles—a coarse grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems. You can think of architecture styles and patterns as sets of principles that shape an application. An understanding of architectural styles provides several benefits. The most important benefit is that they provide a common language. They also provide opportunities for conversations that are technology agnostic. This facilitates a higher level of conversation that is inclusive of patterns and principles, without getting into specifics. For example, by using architecture styl

Maintain Multi Session on Multiple Tabs of browser

How do you maintain multiple sessions on different tabs of browser. Yes this is an interesting topic. I knew it was easy if we were using cookieless session, but ours is a cookie enabled session. I was struggling all the day and then I finally got a hint that we can use Web.config to handle above issue. Wondering how?  <sessionState cookieless="UseUri" regenerateExpiredSessionId="true">   </sessionState>
ASP.Net MVC in a flash for Experienced Request is received by Routing table which creates RouteData Object [RouteCollection] and passes it to IRouteHandler. IRouteHandler decides which handler to be invoked to handle the request, here in this case it would be MVC Handler. MVC Handler looks at the url and passes the controller name to IController Factory which checks the controller presence and returns Controller instance to Handler. Now the Handler invokes the execute method of the returned Controller instance and passes the request to ActionSelector. Action Selector has two ways to handle the action ActionName selector ActionMethod selectors Action selector resolves the Action and request is passed to IActionInvoker. By default Action selector loads all the methods of the class and based on URL it calls the action method. IActionInvoker calls the IActionFilter’s which runs in below sequence IAuthentication filter IAuthorization filter IAction filter

Design Patterns for Agile world

Design patterns with Design principle for Agile world What are Design patterns? Design patterns are solutions to real world problems that pop up time and again, so instead of reinventing the wheel, we follow the design patterns that are well-proven, tested by others, follow as safe guidelines. What are Software Design principles? Software design principles represent a set of guidelines that helps us to avoid having a bad design. The design principles are associated to Robert Martin who gathered them in "Agile Software Development: Principles, Patterns, and Practices". According to Robert Martin there are 3 important characteristics of a bad design that should be avoided: Rigidity - It is hard to change because every change affects too many other parts of the system. Fragility - When you make a change, unexpected parts of the system break. Immobility - It is hard to reuse in another application because it cannot be disentangled from the current application. Desi

Database Server administration concepts for Architects/ Tech Leads/ Database developers

Most of us must have heard of Database replication/ mirroring but few of us would have tried to explore the details. This article explains about these concepts which would give you an overall understanding of Database server concepts which are used for large applications. What is Database Mirroring? Database mirroring is a primarily software solution for increasing database availability. It maintains two copies of a single database that must reside on different server instances of SQL Server Database Engine. What is Database Replication? It is a set of technology for copying and distributing data and database objects from one database to another and then synchronizing between databases to maintain consistency. Using replication, you can distribute data to different locations and to remote or mobile users over local and wide area networks, dial-up connections, wireless connections, and the Internet. Most of the development community think that above two mentioned questions

Repository Pattern

Repository   commonly refers to a storage location, often for safety or preservation. Objectives of using repository Use the Repository pattern to achieve one or more of the following objectives: You want to maximize the amount of code that can be tested with automation and to isolate the data layer to support unit testing. You access the data source from many locations and want to apply centrally managed, consistent access rules and logic. You want to implement and centralize a caching strategy for the data source. You want to improve the code's maintainability and readability by separating business logic from data or service access logic. You want to use business entities that are strongly typed so that you can identify problems at compile time instead of at run time. You want to associate a behavior with the related data. For example, you want to calculate fields or enforce complex relationships or business rules