Skip to main content

Posts

Spring on GraalVM

Topic: GraalVM                                                                                                                            Level: Advanced GraalVM - What? GraalVM is a virtual machine for seamless interoperability and polyglot language compilation that offers highly optimized runtime executable binaries, speeding the application startup and reducing memory consumption ideal for microservices, serverless, and cloud workloads in general. Any source code running on the Java Hotspot VM can also run on the GraalVM. Native Images - What? Native Image is a technology by which a java code is compiled ahead of time in...

Cross-Cutting Concern Patterns

Topic: Software Design                                                                                                        Level: Intermediate Cross-Cutting Concern Patterns - What? A concern that is applicable throughout the application of microservices that supplies a generic unified characterisation of functionality 1. External Configuration Application services often need to define configuration information related to database connectivity, logging, timeouts, port configs, external endpoints, queue connection properties, management endpoints etc., that would co-exist with the packaged/shipped application for deployment. Such configuration management setup introduces sophistic...

Observability Patterns

Topic: Software Design                                                                                                        Level: Intermediate Observability Patterns - What? Logging, Tracing, and Monitoring of multiple instances of distributed services across numerous servers 1. Log Aggregation With a microservices design paradigm, the application can have multiple services designated for fulfilling user requests in a discrete, loosely coupled manner isolated in their process boundaries. There may also be numerous instances of the service running facilitating load balancing and scaling on additional machines based on the demand.  As the services involved process the request ...

Database Patterns

Topic: Software Design                                                                                                        Level: Intermediate Database Patterns - What? Given that microservices by nature are decoupled in design and isolated in functional service tasks, such that facilitating data access/update requirements across the distributed services while maintaining the ACID (Atomic, Consistent, Isolated and Durable) properties of the transactions involved.  The atomicity ensures that all or none of the steps of a transaction should complete. Consistency takes data from one valid state to another valid state. Isolation guarantees that concurrent transactions should pro...

JVM - Class Data Sharing

Topic: JVM Internals                                                                                                                         Level: Advanced Problem Statement When we run a Java application all the related classes and their dependencies associated are loaded at the runtime, adding to the startup time of the application as well as to the memory footprint. Every time when we launch the application, the process would be the same and starting up multiple instances of the application would add up significant latency, and also becoming memory intensive, as the same class-related data need to be replicated and loaded. What i...