Posts

Kubernetes Probes: Keeping Your Containerised Applications Healthy

Image
  In the world of Kubernetes, probes play a vital role in maintaining the health and responsiveness of your containerised applications. These probes act as health checks, constantly monitoring the state of your containers and ensuring they are ready to serve traffic or need a restart. Let’s explore three types of probes —   Startup, Readiness, and Liveness   — and how they contribute to a resilient Kubernetes environment. Startup Probe: Ensuring a Smooth Beginning The Startup Probe is like a watchful guardian, ensuring that your container has successfully initialized and is ready for action. This probe is particularly useful for containers that require additional setup time or perform complex initialization tasks. It runs only once at the start of the container’s lifecycle, making sure everything is in order before moving forward. startupProbe: exec: command: - cat - /app/app.js initialDelaySeconds: 5 peri

How to Reduce Docker Image Size: Optimization Methods

Image
                 Software development often involves multiple versions/releases of a service, each with additional dependencies, commands, and configurations. This complexity poses a challenge for Docker image builds, requiring more time and resources. Instances have been observed where initial application images grew from 350MB to over 1.5 GB due to accumulating dependencies and configurations. Installing unnecessary libraries can increase the potential security risks by expanding the attack surface. DevOps engineers should prioritise Docker image optimisation to prevent bloating after application builds or future releases, not only in production but at every stage in the CI/CD process. Small-sized images are advantageous, especially in container orchestration tools like Kubernetes, as they reduce image transfer and deployment time. How to Reduce Docker Image Size? If we take a container image of a typical application, it contains a base image, Dependencies/Files/Configs, and cru

Understanding the 3-Tier Architecture

Image
The three-tier architecture is the most popular implementation of a multi-tier architecture and consists of a single presentation tier, logic tier, and data tier. The following illustration shows an example of a simple, generic three-tier application. In the ever-evolving landscape of software development, creating efficient, scalable, and maintainable applications is paramount. One architectural pattern that has stood the test of time is the 3-Tier Architecture. This approach offers a structured way to design and organize software systems, making them more manageable and adaptable. In this blog, we'll delve into the intricacies of the 3-Tier Architecture, its benefits, and its real-world applications. 3-Tier Architecture is a way of organizing software into three distinct layers:  Presentation Tier (User Interface): This top layer is responsible for interacting with users. It handles user input, displays information, and presents the results of processing to the user. The presen

Introduction to Istio, Kiali, Jaeger, Grafana, and Prometheus

Image
Are you curious about the magic behind those seamless web applications and services you use daily? Well, let's take a peek into the fascinating world of microservices and the tools that make them work like a charm: Istio, Kiali, Jaeger, Grafana, and Prometheus. These tools might sound a bit technical, but fear not! We're here to break it down in the simplest way possible. 1. Istio: The Traffic Director Istio is an open source service mesh that layers transparently onto existing distributed applications. Istio’s powerful features provide a uniform and more efficient way to secure, connect, and monitor services. Istio is the path to load balancing, service-to-service authentication, and monitoring – with few or no service code changes.  The control plane takes your desired configuration, and its view of the services, and dynamically programs the proxy servers, updating them as the rules or the environment changes. Before utilizing Istio After utilizing Istio Imagine you're m

YAML Basics

Image
YAML is a human-readable data serialization language that is often used for writing configuration files. Scalars and Basic Data Types In YAML, scalars represent simple data types like strings, numbers, booleans, and null. Let's start with these basic data types. Strings: Strings are sequences of characters and don't require quotes unless they contain special characters or spaces. Examples: name: John Doe email: john@example.com message: "Hello, World!" Numbers: Numeric values can be integers or floating-point numbers. Examples: age: 30 pi: 3.14159 Booleans: Booleans represent true or false values. Examples: is_student: true has_car: false Null: The keyword null represents the absence of a value. Example: description: null Lists and Sequences Lists in YAML are used to represent sequences of items. Each item is preceded by a hyphen ( - ) followed by a space. Lists: Examples: fruits: - apple - banana - orange Nested Lists: Lists can be nested to create more comple