Loosely Coupled REST API — DZone

One of the most important ideas in the world of software engineering is the concept of loose coupling. In a loosely coupled design, components are independent, and changes in one will not affect the operation of others. This approach offers optimal flexibility and reusability when components are added, replaced, or modified. Conversely, a tightly coupled […]

Revisiting Garbage Collection – DZone Article

JVM or the ‘Java Virtual Machine’ resorts to Garbage Collection for automatically housekeeping memory while an application propels in the hindsight. Without the garbage collector, the programmer would have to undertake memory deallocation—explicitly for each and every application. This can leverage productivity in most cases. With a Garbage Collector in place, the program can solely […]

To increase the maximum number of tcp/ip connections in linux

Maximum number of connections are impacted by certain limits on both client & server sides, albeit a little differently. On the client side: Increase the ephermal port range, and decrease the tcp_fin_timeout To find out the default values: sysctl net.ipv4.ip_local_port_range sysctl net.ipv4.tcp_fin_timeout The ephermal port range defines the maximum number of outbound sockets a host […]

Thread Dump analysis

Originally posted on tier1app:
In the earlier blog you saw how to generate thread dump. This blog walks you through on how to analyze thread dumps. Best Practice It’s a recommended practice to capture two thread dumps from the application in a gap of 10 seconds between each capture. As Thread dump is a snap…

Circuit Breaker Pattern

It’s common for software systems to make remote calls to software running in different processes, probably on different machines across a network. One of the big differences between in-memory calls and remote calls is that remote calls can fail, or hang without a response until some timeout limit is reached. What’s worse if you have […]

Reduce Platform Risks Using the Proxy Pattern

There are a number of risks when your platform integrates with an external service / dependency. For instance, here are a few risks and things that can go wrong: Doesn’t respond at all. Just blocks indefinitely eating client-side resources. Responds progressively slower – i.e. response time degradation. Needs retry logic to deal with transient failures (Note: obviously care needs […]