Image for post
Image for post

End to end testing of Angular applications are powered by a framework called Protractor. In essence, Protractor is capable of executing tests against an Angular application running in a real browser, interacting with it as a user would. This piece is aimed at providing an introduction to Protractor and walk you through an example of writing an end to end test for a simple Angular application.

🚀 What is End-To-End Testing?

End to end testing is the process of validating an application’s workflow from from the beginning to the end. This testing methodology is aimed at replicating real user scenarios, so that the system can be validated for overall functionality. …

Image for post
Image for post

Why Use an API Gateway

The essence of microservice architecture is decomposing monoliths into fine grained services. Each of these “micro” services can be deployed and scaled independently. While this pattern has many advantages, it also brings numerous challenges. One of the foremost of these challenges is the increased complexity which in turn leads to a lack of maintainability.

Imagine a scenario in which you have to implement a UI for a complex CRM (Customer Relationship Management) application. In order to populate different portions of this UI and perform different user operations, you may have to invoke dozens of microservices. Also, UI has to be aware of the network locations (host and port) of all these microservices. In addition, if the network location of a microservice changes (which tends to happen quite frequently in cloud), UI will also have to be updated. …

Image for post
Image for post

Akita is essentially a state management solution for Angular. In my previous posts, I have discussed about other state management libraries for Angular such as NgRx and NGXS.

In this piece, I intend to cover the below topics.

  • State management in a nutshell
  • What is Akita?
  • Building a sample CRUD application with Akita

State Management in a Nutshell?

Theoretically, the application state is the entire memory of the application. In simple terms, the application state is composed of data received by API calls, user inputs, presentation UI state, application preferences, etc. …

Understand the fundamentals of NGXS and build a sample CRUD application

Image for post
Image for post

NGXS is essentially a state management library for Angular. You might have come across other state management solutions for Angular, such as NgRx and Akita. The following are two articles that I have written before about using NgRx for state management:

In this piece, I intend to cover the below topics.

  • What is NGXS?
  • Fundamental concepts of NGXS
  • Building a sample CRUD application

What is NGXS?

As already stated above, NGXS is a state management solution specifically developed for Angular. …

Image for post
Image for post

Docker has been a very popular talking point among software developers for years now. Many developers are eager to learn Docker, as its benefits are so appealing. However, Docker is an entire ecosystem of projects and tools such as Docker Client, Docker Server, Docker Machine, Docker Images, Docker Hub, Docker Compose and etc. It’s magnitude can at times confuse a beginner about where to start the learning process. This piece is aimed at introducing you to Docker step by step in a simple way.

The Two Most Important Questions

In this section we will try to tackle the two most important questions in learning Docker.

Why use Docker?

Have you ever come across a situation where you tried to install a software in your machine and then the installation process failed due to few missing dependencies in your system. As a result, you had to first install the dependencies and then re-initiate the original software installation. Similarly, you may come across a ton of other issues during a software installation process. This is the fundamental issue that Docker is trying to resolve. …

Image for post
Image for post

In my previous post, I explained the fundamentals of Service Discovery and Netflix’s Eureka. We implemented a stand-alone Eureka server and a client to understand how Eureka enables service discovery. Having a stand-alone Eureka server is not good enough for a production grade deployment. This piece is aimed at exploring how to make Eureka server highly available and resilient.

Throughout this article, I’m planning to cover the below topics.

  • How Eureka Achieves High Availability
  • Implementing an Eureka Server with High Availability
  • Implementing an Eureka Client
  • Starting Up Eureka Server Cluster and Client on Local Machine

How Eureka Achieves High Availability

Eureka achieves high availability at two levels. …

Learn the fundamentals of Service Discovery and Spring Cloud Eureka with code examples.

Image for post
Image for post

One of the main building blocks of a micro-service architecture is service discovery. Spring cloud provides multiple solutions such as Eureka, Zookeeper, Cloud Foundry and Consul to facilitate the process of service discovery. This piece is aimed at providing you a simple explanation of service discovery with Eureka. I will be covering the following topics in this article.

  • What is Service Discovery?
  • What is Spring Cloud Eureka?
  • Implementing a Eureka Server and a Client
  • Inter-Microservice Communication via Eureka
  • Understanding Eureka Client-Server Communication

What is Service Discovery?

A distributed system typically comprises a large number of services which communicate with each other to perform certain operations. Service discovery is the process of one service dynamically discovering the network location (IP address and port) of another service to communicate with it. …

Build a simple course management system in Angular

Image for post
Image for post


In my previous post, I explained the fundamental concepts of NgRx and how they fit in together. Now, it’s time to build a mini-CRUD application with NgRx as the state management system.

If you are brand new to the world of NgRx, I suggest you check out my previous post before attempting this tutorial. I won’t be going into detail about the underlying NgRx concepts in this article.

Project Details

Throughout this article, we will be building a simple course management system. …

The fundamentals of NgRx, with code examples

Image for post
Image for post
Image source: Sarindu Udagepala

When I first started working with NgRx, I faced a steep learning curve. It took quite a bit of reading and research to understand the basic elements that NgRx comprises. The prime objective of this piece is to pass on the knowledge that I gathered to readers so that their lives with NgRx will be easier.

I intend to cover the following topics:

  • What is NgRx?
  • Fundamental elements of NgRx: Store, Actions, Reducers, Selectors, Effects
  • Interaction between NgRx components
  • Pros and cons of NgRx

What Is NgRx?

To begin with, NgRx stands for Angular Reactive Extensions. NgRx is a state management system that is based on the Redux pattern. Before we go further into details, let’s try and understand the concept of state in an Angular application. …

Image for post
Image for post


The purpose of this article is to give you an idea about how Netflix Eureka works. The key thing to note is that I will be using the original Netflix Eureka implementation instead of Spring Cloud Eureka. Below mentioned items will be covered in this write up.

  • Introduction to Netflix Eureka
  • Setting up Eureka Server
  • Building a Karyon application that acts as a Eureka client.

Service Discovery at a Glance.

Imagine a scenario in which one REST service (Service A) is trying to invoke another REST service (Service B). In order to make a request, Service A needs to know the network location (IP address and port) of Service B. In a conventional SOA (Service Oriented Architecture) ecosystem, services’ network locations would hardly change, as they are deployed in on-premise data centers. Consequently, you can afford to maintain the network locations of services in configuration files, which will be updated occasionally. …


Sarindu Udagepala

I’m a technical lead at Virtusa, blogger, son, husband and father. Passionate about technology and learning.

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