Source (https://www.educative.io/blog/top-technologies-microservices-architecture)

Microservice is the architecture style most developers adopt when developing modern applications. Although microservices provide many advantages in developing modern applications, there are some drawbacks we need to address too. Therefore we need to have a good understanding of common patterns used to solve these drawbacks. Before we dive into the design patterns, we need to revise what are the main advantages of microservices:

  1. Scalability
  2. Availability
  3. Independent, autonomous
  4. Decentralized governance
  5. Failure isolation
  6. Continuous delivery through DevOps

Therefore applying microservices brings several challenges and issues. Let’s discuss those problems and their solutions.

Aggregator Pattern

The microservice applications are divide into serval small services…


Source (https://redwerk.com/blog/net-monolithic-vs-microservices-applications-pros-and-cons/)

What was before Microservices ???

So before digging into the Microservices Architecture, we need to understand what was before Microservices and what are problems with that architecture. So before Microservices, there was Monolithic Architecture. Monolithic Architecture is like a big container where all the software components of an application are assembled and deployed together. That means your client-side user interface, the server-side application that handles HTTP requests and database, is deployed as a single executable component. Therefore the components are tightly coupled with each other in the application. For a lightweight application, a monolithic architecture suits better. …


Source (https://georgianstan.medium.com/why-you-should-build-apps-with-vanilla-js-and-how-to-do-it-9281eccb73fc)

What is JavaScript ??

JavaScript is a programming language that conforms to ECMAScript specifications. It is one of the main programming langue used all around the world. By default, JavaScript programs run using a Single Thread. Though there are ways to create new threads, JavaScript is considered a Single-Threaded language. JavaScript does not wait for I/O operations to get completed; instead, it continues the execution of the program. This is called a Non-Blocking I/O. If it waits for I/O operations to get completed, JavaScript won’t perform well. JavaScript is asynchronous because of this NIO. Apart from that, it is a Dynamic, Weakly-Typed, and Multi-Paradigm…


Source (https://www.lynda.com/Java-tutorials/Programming-Foundations-Design-Patterns/782131-2.html)

In this article, we will explore the Builder Design Pattern and the Chain of Responsibility Design Pattern. The Builder comes under the Creational Pattern, and the Chain of Responsibility comes under the Behavioural Pattern. Let’s explore more on these patterns individually.

Builder Design Pattern

The Builder Pattern uses the step-by-step approach in building complex objects using basic simple objects. This pattern comes under the Creational Pattern as it provides one of the best ways to create an object. The builder is independent of other basic simple objects. The builder pattern helps to separate the construction complexity of an object. Therefore, we can use…


Source (https://www.lynda.com/C-tutorials/Memento-pattern-explained/587662/615121-4.html)

What is Design Pattern ??

To achieve best practices in object-oriented programming, many developers use Design Patterns. Design Patterns are interpreted as common solutions given for most of the problems we faced in the software development process. These solutions were obtained by trial and error by numerous software developers over quite a substantial period. The concept of design pattern was initiated by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Gang of Four). They published a book called “Design Pattern-Elements of Reusable Object-Oriented Software” in 1994 which led to the emergence of design pattern concepts. …


Source (https://www.plixer.com/blog/dns-poisoning-fix/)

Before talk about DNS poisoning, we will get an understanding of what DNS and how it works. Usually, as humans, we access information on websites via a domain name like google.com, youtube.com, etc. But the web browsers and the computer can’t understand these domain names as they interact with IP addresses. So the DNS (Domain Name System) is responsible for the translation of this human typed domain and subdomain names to IP address before web browser or computer make a request to the designated destination website. In fact, the Domain Name System (DNS) acts like the phonebook of the Internet…


Source (https://blogvaronis2.wpengine.com/wp-content/uploads/2021/04/arp-spoofing-hero-1.png)

Before dive into ARP Spoofing, let understand what is ARP(Address Resolution Protocol) means. The logical address (IP address) is used by machines to send and receive messages. But the physical address (MAC address) in layer 2 of the OSI model is responsible for the actual communication to happen. So we should get the destination MAC address which helps in communicating with other devices. This is where ARP comes into the picture. It is the protocol that is responsible for the mapping of IP addresses to their corresponding MAC addresses. The ARP protocol provides two basic functions;

  • Resolving IPv4 addresses to…


Source (https://c.tadst.com/gfx/1200x630/meeting-planner.png?1)

In the versions before Java 8, we had Date and Calendar APIs to handle date and time. To overcome the shortcomings of the older java util Date and java util Calendar, Java 8 introduced new APIs for Date and Time. Some of the issues of the existing older java Date and Calender are mentioned below.

  • Thread safety: The older Date and Calendar classes are not thread-safe. Therefore, developers have to handle the concurrency issues. But the new Date and Time APIs introduced in Java 8 are immutable and thread-safe.
  • API design and ease of understanding: Older Date and Calendar APIs…


Source (https://dev.to/maddevs/software-architecture-101-12b9)

When we talk about the evolution of Software Architecture, it is mainly categorized as Monolithic (Standalone) Architecture, Service-Oriented Architecture, and Micro-Services Architecture. In this article, we will discuss how software architecture implementations change from Monolithic and Service-Oriented Architecture phases.

1. One-Tier Architecture

1-Tier Architecture is the simplest architecture in which the client, server, and database all reside on the same machine. Therefore 1-tier architecture has all the layers such as Presentation, Business, Data Access layers in a single software package. But such architecture is rarely used in production.


Source (https://www.freecodecamp.org/news/an-introduction-to-http-understanding-the-open-systems-interconnection-model-9dd06233d30e/)

HTTP (Hypertext Transfer Protocol) is the underline communication protocol used for the World Wide Web (invented by Tim Berners-Lee ). HTTP functions as a request-response protocol in a client-server architecture model. Internet Engineering Task Force (IETF) and World Wide Web Consortium (W3C) are responsible for the establishment of standards in HTTP. These standards are published in the Requests for Comments (RFCs). HTTP has four versions as HTTP 0.9, HTTP 1.0, HTTP 1.1, and HTTP 2.0.

HTTP / 0.9

  • The initial version of HTTP.
  • Telenet-friendly protocol.
  • Request nature: Single-Line (method + path for requested document).
  • Only supported GET Methods.
  • Only accepts Hypertext Response types.

Ranmal Dewage

Software Engineer at Virtusa, Graduate of Sri Lanka Institute of Information Technology (SLIIT).

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store