Home     RSSRSS

Application Performance and Scalability

September 18, 2018 by kiranbadi1991 | Comments Off on Application Performance and Scalability | Filed in Development, Environment, Performance Engineering

Application performance is measured by service time (response time), latency, throughput, efficiency.

Depending on application needs, we describe performance as “how fast “can a given task or work can be completed by the program with the available computing resources.

Scalability means ability of the application to increase throughput or computing power of the program when additional resources (CPU/Disk etc) are given to the program.

Scalability and Application performance are two different things for the majority of the applications and almost all of the time they are at odds to each other and requires some level of tradeoffs. Designing the application for scalability often requires that we distribute the given set of work (tasks) across parallel threads or programs or computing resources so that all the given computing resources can be used by the programs so as to increase throughput.

Good example to understand this concept is deploying the some web application on a single server which hosts its database (Persistence), application server (Business layer), cache server (Service layer/persistence layer) etc. on the single machine. Since all the components of application are hosted on same machine, it’s bound to give very good performance (No network latency involved across any tier). However after a certain point, performance might start to deteriorate after reaching a certain threshold in terms of throughput. Once the threshold throughput is achieved. There is no way to increase the throughput since every tier is on same single server. However if we move the each of the layers on the different machines, then we might increase the throughput of the application, however this might decrease the performance of the application (Network latency involved here). It’s very rare case to see application performance and scalability go hand in hand.

Tags: , , , ,

Compromised Passwords/Account Verification

August 21, 2018 by kiranbadi1991 | Comments Off on Compromised Passwords/Account Verification | Filed in Development, Security

I browse a internet a lot and have accounts across many sites. Sometimes I forget and tend to reuse my password. My account has been compromised many times.

Today while resetting the password for GitHub, I came across the interesting site which helps users to prevent reuse of compromised passwords and informs the user if his password has been compromised.

As a developer we often need to provide some extra security to our users and this site seems to be best effort by the individual that serves the larger purpose(It exposes information via Rest API).

Hopefully community notices this effort and we secure ourselves by sharing information.

Thank you Troy Hunt.

Technorati Tags: ,,

Façade Pattern

May 1, 2018 by kiranbadi1991 | Comments Off on Façade Pattern | Filed in Others

Façade pattern is used to hide the complexity of the sub system and provide users with the simple and easy to use interface to consume.

Commonly used use cases for Façade are

  • Provide simple and easy to use interface to backend legacy system.
  • Sometimes used to build the public interface for users to consume.
  • To abstract the complexity of the system for simplicity and security
  • Depending on use case, it can also be used to improve performance by reducing frequent call invocation and providing remote client single point of access by grouping related functionality in the subset of classes.

Façade Pattern can be implemented for Pojo, stateful and stateless use cases. However for stateful classes it consumes the server resources and ties up to the client during invocation process. So one needs to careful that client do not take up too much of time for processing else server resources will be consumed. Generally if conversational state needs to be maintained then stateful façade can be used.

Generally complexity of the logic dictates the length and abstraction of the wrapper methods in the façade.

Facades can also be used to create factory methods.

Example of Facade can be.

public class Car {

public void 4CylinderEngine(){

	// Methods the exhibit behavior of 4 Cylinder
	}

public void 6CylinderEngine(){
		// Methods the exhibit behavior of 6 Cylinder
	}

}
 
// Using the facade

new Car.4CyclinderEngine();
new Car.6CyclinderEngine();