I’m a big fan of APIs (I even wrote an article on REST API Architecture – Best Practices) because in any given enterprise application in today’s modern world, the API is considered to be one of the key success factors in digital transformation of any business. When you have multiple APIs being exposed and being accessed by a number of entities, there has to be a way to manage those APIs without bursting onto a pain in the ass. That’s where the concept of API management comes into the picture. I have been using WSO2 API Manager for a while now and thought of exploring what are the other opportunities out there. Then I came across Tyk, an amazing product with a bunch of great functionalities.
As per their definition,
Tyk is an open source API Gateway that is fast, scalable and modern. Out of the box, Tyk offers an API Management Platform with an API Gateway, API Analytics, Developer Portal and API Management Dashboard.
The package includes pretty much everything you require to manage your APIs within your enterprise. It offers cloud, hybrid and on-premises deployments where I decided to go ahead with the 3rd option and deployed it in a DigitalOcean droplet. I’m running Tyk in a basic droplet with 512MB of memory; surprisingly it works very smoothly. – Read More –
Nginx is one of the most famous web servers in the today’s market which provides a set of features that the Enterprise can utilize to scale out the infrastructure. Today, we are going to focus on installing Nginx on Ubuntu, setting it up as a reverse proxy and to load balance (high availability) with Keepalived. I have done a similar article for HAProxy some time back (if you are interested check this link). Without further ado let’s jump into the installation of Nginx. In order to complete the following tutorial, you will need two servers/nodes and a floating IP/virtual IP. Further, if you don’t intend to set up a HA cluster you can direct yourself to part 02 of the tutorial.
Part 01 : Load Balancing
Step 01: Install Nginx
SSH to the node 01 and get root access or go with sudo. The below command will get an update of the packages. Read more here.
Let’s install Nginx now.
apt-get install nginx
Now you have a Nginx server up and running. Go to the browser and type your IP and see. You should get the below output.
In today’s world, microservices architecture is taking over pretty much everything. The deployment mechanism that goes with microservers is containers. When you have a lot of containers in your application you need to have a platform to manage those containers. That’s where the Kubernetes comes into the picture.
What is Kubernetes
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
Other key features represents,
- Automatic binpacking
- Horizontal scaling
- Automated rollouts and rollbacks
- Storage orchestration
- Service discovery and load balancing
- Secret and configuration management
- Batch execution
On top of everything, it’s a product by Google. They have been running their services on Kubernetes for a long time now. If you are new to Kubernetes, read this article and this article to get started. Further to get to know about its components read this article. Kubernetes Architecture is as follows and you can read about it more here. – Read More –
How’s it going tech folks? I have been silent for a while but decided to make a noise after all. How to architecture your product precisely for it to operate without any abnormalities to meet its non-functional requirements is what I’m going to talk about. If you don’t properly architecture your product it might behave abnormally under a heavy load, could be vulnerable to attacks or even it could face a number of other consequences.
What’s Software Architecture
Let’s see what’s Wikipedia has to say,
Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. These structures are needed to reason about the software system. Each structure comprises software elements, relations among them, and properties of both elements and relations.
What Wikipedia is trying to say here is that the software application architecture serves as the blueprint which defines the structure of the final outcome so that it will meet all of its functional and non-functional requirements while ensuring it is technically feasible. The architecture of any product is the key carrier of its qualities such as performance, security etc. none of which can be achieved without a unifying architectural visualization. It’s a must to have the right balance of the users, system and business aspects to define the best architecture for the product. – Read More –