Dec 25, 2019

Redis DB & its use case

Redis is used in thousands of production deploys,

Redis has a proven record of stability. If it runs low on memory, it just evicts older records faster. Additionally, with ElastiCache we can place replica nodes in multiple availability zones and use a single endpoint that will seamlessly switch to a replica if a primary goes down.

2.Performant: Redis runs in memory and we configure it without disk flushes. Its read and write complexity is O(1), so it performs the same regardless of data size.

3.Scalable: Because our sessions expire, we simply set an expiry on our records in Redis and our memory usage reaches an equilibrium, currently at 5GB. If we need to scale further, we can replicate to a node with more memory and then promote it to primary.

Redis is key-value store that stores all its data in RAM.

Redis implements replication using a primary and replica where

•Writes go to the primary. Reads can go to either the primary or replica.
•Writes are replicated to the replicas by asynchronous/non-blocking replication which means that a write is “committed” without waiting to be replicated

•The primary can have multiple replicas, which in turn can have other replicas connected to them

Amazon ElastiCache is a service that provides an easy way to build a highly resilient Redis setup with primary/secondary in multiple zones with automated failover.

Use-Case 

After we decided upon our technology, we needed to test and implement it in production without downtime. Building the system and then switching over to it all at once is a recipe for disaster.

we rely heavily on “dark launching”, checking new code into production and then turning on and off execution of that code through a management console for a certain percentage of requests or users.

In the first stage, we wanted to test reads and writes to Redis but still rely on the old setup. Starting at 1% of requests and ramping up to 100%, we mirrored traffic on both MySQL + Memcached and Redis. On every read to MySQL + Memcached we issued the same read request to Redis, and the same for writes. During this testing we gained a lot of knowledge about how the system performed on production traffic.

May 16, 2018

Minimum Viable Product in Agile

Coming up with an MVP is an art of brainstorming, identifying, splitting, including, excluding features which will result to deliver highest business value to the customer first. Sometimes more than one MVP combined as shippable release and it is known as Minimum Marketable Product (MMP).




 Setting the right expectation for MVP and MMP with stakeholders (especially with business) is very important and what can be expect from an MVP. Else business might expect each MVP will hit into market with all functionalities. Also you can experience a lot of love from business to keep all their features in a single MVP and not like to exclude features and its sub features is a common trend.
Each project/product priorities are unique, so identifying and defining MVP will vary from project to project or product to product.

So instead of following an MVP template, teams should more focus on collaboration and communication along with right set of stakeholders to come up with an MVP.


User Story Mapping is one of the popular way to derive MVP. In general, MVP should be a testable and have a left to right workflow or it can be a prototype too.
Product Backlog is the single source of input to the team for development. So MVP will be gradually turned into top prioritized PBI’s in your Product Backlog.

Product Owner is sole responsible person to come up with MVP with the help of other stakeholders.
A MVP can/cannot be shippable to the market and it will be decided by the Product Owner.





Feb 16, 2018

Scrum

Scrum (n): A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.

Scrum is:


Lightweight
Simple to understand
Difficult to master


Scrum is a process framework that has been used to manage complex product development since the early 1990s. Scrum is not a process or a technique for building products; rather, it is a framework within which you can employ various processes and techniques


Ability to manage changing priorities' is one of the top 3 reasons for adopting Agile