Skip to main content

Posts

Showing posts with the label architecture

WebAssembly vs Java Applets

A Detailed Comparison: WebAssembly vs. Java Applets WebAssembly and Java Applets are technologies aimed at enhancing web applications by enabling execution of code directly in the browser. However, they have significant differences in terms of architecture, performance, security, and modern web development practices. Let's compare these two technologies in-depth, along with scenarios and code samples. WebAssembly Architecture: WebAssembly is a binary instruction format that allows high-level languages to be compiled into a low-level bytecode that can run efficiently in browsers. It provides a secure sandboxed environment where code can execute without direct access to browser internals. WebAssembly modules can be integrated into web applications, enabling performance-critical components to run faster than JavaScript. Performance: WebAssembly code can achieve near-native performance, making it suitable for applications requiring complex computations or real-time interacti

RIAK Database - A Distributed NoSQL Solution

Exploring Riak Database: A Distributed NoSQL Solution Introduction In the world of modern technology, data storage and retrieval have become crucial aspects of software development. Traditional relational databases often struggle to handle the scale and distribution demands of today's applications. This is where Riak, a distributed NoSQL database, comes into play. In this article, we will delve into the problem that Riak database solves and explore how it addresses these challenges with real-world examples. The Problem: Scalability and Fault Tolerance Traditional relational databases are built around a fixed schema and a single server. As data grows, these databases might struggle to handle the load efficiently, leading to performance bottlenecks and scaling challenges. Moreover, relying on a single server can be risky – if that server fails, data might be lost or unavailable. Riak's Solutio

How to setup GPG keys in windows and configure the public key in github

GPG In this post today, we are going to look into the steps that we need to follow to generate and use a gpg  key with github Below given are the steps Installation Install  GnuPG for windows Validation of Installation Run the below command to verify if gpg is installed and working fine gpg --version Generate GPG key gpg --full-generate-key Running the above command will start running a command line wizard or sequence of steps, Choose the right length of the key Provide your username and email address Also provide a comment (Optional) Once done, approve with "O" Then the system will prompt for Key phrase, which will be used to secure the keys, so please remember and provide a secure value Listing the key List the keys that were generated as a result of the previous command using the below command gpg --list-secret-keys --keyid-format=long This command will produce a similar output gpg --list-secret-keys --keyid-format=long -------------------------------- pub   2048R/35F5FFB2

How to design a method

Introduction We have been reading articles about how to architect / design a system, microservices etc. However, I still find that there are developers that require some details on how to write / create a method. These are valid for statically typed languages like C# , Java which I have worked. though some of them apply to Javascript as a good practice. Below are some of the points that I consider worth noting The method should have a descriptive verb of the action that it is performing. ReadFromConfigurationFile SaveUserData CheckInOrderPriorToPayment 2. The arguments if any to the method should be validated prior to consumption. There are some built-in types in Java that helps in checking for nulls like  requireNonNull  from  java.util Note:  The below given method is one that i had built which checks for null and empty value and if so, throws suitable exceptions. We have been using similar built-in functionality in  Microsoft Enterprise Library  for .Net as  Guard.Null  or  Guard.Nu

Using Hashicorp Vault

Why a Vault? The reason for having a vault is to have the secrets for the application stored in a very "safe" / "secure" location so that only trusted clients of the Vault (Web Apps / Services etc ) can get access to the secrets. When we do not use a vault, the dev team will check-in the secrets like Database Credentials, AWS credentials etc to the source control, which leaves it open to be accessible to anyone that gets access to source code. There are a lot of Vaults out there in AWS, Azure etc, but this system is opensource and we have full control of the installation and security, which piqued my interest and hence I started exploration. Dangers of exposing Secrets In the hands of wrong person, it could be disastrous, especially if the secret has more privileges, more the depth of the damage Developers might get to try out changes with these credentials. In recent years, a colleague of mine forgot to append the where clause in the production

Load Balancers

Layer 4 This level provides the NAT based load balancing There is no content inspection considered in this process  There is no additional computation / memory resource consumption in this process All servers in the load balancer should have the contents like video, secure content as the load balancer can choose any server based on the load. There is less options for customization.  There are some hardware also involved which has proprietary algorithms which does the load balancing.   This system has its benefits based on the domain   Layer 7 This works in the application layer There are many parameters to consider for balancing load across back-end machines There can be a separate media stack of servers that respond to the video or other media requests. There can be servers which deal with sensitive data. The choice of the target server can be based on the request headers, payload etc, thereby giving lot of options to build applications / choose servers with the right configur