Designing a Cache System

Load balancing helps us scale horizontally across an ever-increasing number of servers, but caching will enable us to make vastly better use of the resources we already have. Caches can exist at all levels in architecture. A cache is like short-term memory which has a limited amount of space. The cache is typically faster than the original data source.

Screen Shot 2018-06-21 at 1.45.54 PM.png
A simple global Caching System

Let’s talk about different approaches first.

Continue reading “Designing a Cache System”

Advertisements

Microservices vs Monolithic Applications

A developing a server-side enterprise application. You must think of different clients:

  • Mobile devices and its browsers.
  • Native mobile applications.
  • Desktop devices and its browsers.
  • Exposing your APIs to 3rd parties.
  • Integrating with other applications.
  • Executing business logic, accessing a database or exchanging messages with different systems.
  • Returning a response.
  • Figuring out technology stacks.
  • Keeping things in your mind such as CAP theorem.
  • many more depends on the complexity!

It is very hard to define an architecture that supports as a set of loosely coupled, collaborating services using the Monolithic approach. Let’s imagine that you are building an e-commerce application that takes orders from customers, verifies inventory, and ships them. The application consists of several components including the StoreFrontUI, which implements the user interface, along with some backend services for checking credit, maintaining inventory and shipping orders. The application consists of a set of services.

Continue reading “Microservices vs Monolithic Applications”

RESTful API Best Practices

This post covers best practices for building HTTP and RESTful APIs. Let’s start with the terms that we will use mostly:

  • The resource is a information that can be a singleton or a collection. E.g. /companies, /company and /employees are resources. Collections are set of resources, e.g. /companies collection resource is the collection of /company resource. /Company resource is a singleton resource. A resource may contain sub-collections such as /companies/{company_id}/departments and it can be followed by a singleton resource, e.g. /companies/{company_id}/departments/{department_id}.
  • Operations such as patch, put, update, delete, and post can be performed on these resources.
  • URL (Uniform Resource Locator) is a path.

Continue reading “RESTful API Best Practices”

Simulated Annealing

Simulated Annealing (SA) is a probabilistic technique used for finding an approximate solution to an optimization problem. To find the optimal solution when the search space is large and we search through an enormous number of possible solutions the task can be incredibly difficult, often impossible. Even with today’s modern computing power, there are still often too many possible solutions to consider. Therefore, we often settle for something that’s close enough to optimal solution when we may be not able to find the optimal solution within a certain time.

Continue reading “Simulated Annealing”

Introduction Machine Learning: K-nearest neighbors and Perceptron Learning Algorithm

Machine learning is a subfield of computer science where computers have the ability to learn without being explicitly programmed. List of the machine learning task:

  • Supervised: Approximation where the all data is labeled and the algorithms learn to predict the output from the input data (training, cross validation and testing sets). We have two types of supervised problems:
    • Regression: When the output variable is a real value, such as “dollars” or “age”.
    • Classification: When the output variable is a category, such as “cat” or “dog” or “Tumor benign” and “Tumor malignant”.

screen-shot-2017-03-05-at-2-08-54-pmRegression vs Classification

  • Unsupervised: Description where the all data is unlabeled and the algorithms learn to inherent structure from the input data.
    • Clustering: A clustering problem is where you want to discover the inherent groupings in the data, such as grouping customers by purchasing behavior.
    • Association: An association rule learning problem is where you want to discover rules that describe large portions of your data, such as people that buy X also tend to buy Y.

Continue reading “Introduction Machine Learning: K-nearest neighbors and Perceptron Learning Algorithm”

HTTP Cache Headers

HTTP caching can speed up web applications. It’s standardized and well implemented in all modern browsers and results in a lower latency app and improved responsiveness.

HTTP caching occurs when an item is fully cached for faster retrieval the next time the resource is required. The browser may choose to not contact the server at all and simply use its own local copies of web resources. There are many cache headers such as “Cache-Control”, “Expires”, “Last-Modified” and “ETag”.

Continue reading “HTTP Cache Headers”

Regular Expressions

What is a Regular expressions?

Regular expressions are patterns used to match character combinations in strings. In JavaScript, regular expressions are also objects. These patterns are used with the exec and test methods of RegExp, and with the match, replace, search, and split methods of String.

How to Write a Regular Expression Pattern

A regular expression pattern is composed of simple characters, such as /abc/, or a combination of simple and special characters, such as /ab*c/ or /Chapter (\d+)\.\d*/. The last example includes parentheses which are used as a memory device. The match made with this part of the pattern is remembered for later use, as described in Using Parenthesized Substring Matches.

Continue reading “Regular Expressions”