Wednesday, July 25, 2018

Micro-services

Micro-service architecture, a word that has grabbed everyone's attention and is gaining momentum everyday. So, what is micro-service, why does everyone want to shift to it and why do we need it? Let's understand the concept of micro-service architecture in detail.

The central idea behind micro-services is that some types of applications become easier to build and maintain when they are broken down into smaller, create able pieces which work together. Each component is continuously developed and separately maintained, and the application is then simply the sum of its constituent components. This is in contrast to a traditional, "monolithic" application which is developed all in one piece.

Monolithic Architecture

In a monolithic architecture, we will need just one code base. That code base will have all code related to all modules. For small projects monolithic architecture is preferred. The actual issue arises when the number of modules increases significantly.
Issues that could arise because of monolithic architecture are:

  • It will be difficult to manage the code base
  • Monolithic applications can also be difficult to scale when different modules have conflicting resource requirements
  • Monolithic applications has a barrier to adopt new technologies. Since, changes in framework or languages will effect an entire application, it is extremely expensive in terms of time and cost
  • Another problem with monolithic applications is reliability. Bug in any module (e.g. memory leak) can potentially bring down the entire process. Moreover, since all instances of the application are identical, that bug will impact the availability of the entire application
  • You must redeploy the entire application on each update
  • Impact of a change is usually not very well understood which leads to do extensive manual testing

Micro-service Architecture

Micro-service architecture says that we divide our application in small independent services which works independently and ideally do not communicate with each other. This could be said that A service has no knowledge about B service.
Basically, the idea is to split your application into a set of smaller, interconnected services instead of building a single monolithic application. Each micro-service is a small application that has its own hexagonal architecture consisting of business logic along with various adapters. Some micro-services would expose a REST, RPC or message-based API and most services consume APIs provided by other services.
Also, not only code base, complete micro-service architecture says each service will have its own database and that database access is limited to particular service only.

Benefits of Micro-services
  • It tackles the problem of complexity by decomposing application into a set of manageable services which are much faster to develop, and much easier to understand and maintain
  • It enables each service to be developed independently by a team that is focused on that service
  • It reduces barrier of adopting new technologies since the developers are free to choose whatever technologies make sense for their service and not bounded to the choices made at the start of the project
  • Micro-service architecture enables each micro-service to be deployed independently. As a result, it makes continuous deployment possible for complex applications
  • Micro-service architecture enables each service to be scaled independently
Drawbacks of Micro-services
  • Using micro-service architecture means using distributed system. So, now there will be calls to various services at some facade layer (aggregation layer), where we need to handle RPC and service calls failure
  • Testing the architecture becomes difficult
  • Major issue comes when debugging the issue. To debug the issues, we need something to link calls between different services (done via distributed tracing)
  • In micro-services, our database are also partitioned. If a business requires transactions between various services then we need to take care of distributed transactions (SAGA Pattern)
  • You need to monitor and manage multiple applications

Monday, June 18, 2018

Artificial Intelligence

Coined by John Mcarthy in 1956 the concept of how Artificial Intelligence (AI) is defined has changed over time. With that said the AI at its core has always been about creating a computer, a machine, a robot or a software program that can think intelligently, just like a human.

AI as a concept is a much broader than merely a smart computer or a robot as it is generally thought to be. Rather AI is about creating a machine/ computer or software which can mimic and function just like an intelligent human brain functions. It also makes sense to base AI on the human brain as we humans are the most capable to observe, understand and act in accordance to our environment.
And that is where the challenge lies, creating an intelligence artificially that can from the information provided or collected, learn, observe, understand and provide solutions and take actions and at the same time it should be intelligent, rational and ethical.

In other words, AI is a branch of computer science whose main purpose is to create machines and software as intelligent as humans.

Aspirations

Broadly AI has two major purposes:
  1. Create expert systems: Systems which exhibit intelligent behavior, learn, demonstrate, explain, advice and provide solutions to its users.
  2. Implement human intelligence in machines: Create systems that understand, think, learn and behave like humans.
To further understand or break down the concept of AI we need to understand that AI as a technology or a science is not an independent one but depends heavily on other branches of science such as computer science, engineering, psychology, mathematics, linguistics and biology.

The ability of a system to calculate, reason, perceive relationship and analogies, learn from experience, store and retrieve information from memory, solve problems, comprehend complex ideas, use natural language fluently, classify, generalize, and adapt new situations. All these abilities together create what we call intelligence. Also, there can be  multiple type of intelligence, linguistic, mathematical-logical, musical, interpersonal, spatial, bodily-kinesthetic to name a few. You can say a system has artificial intelligence when it is equipped with at least one at the most all of these intelligence.

When we consider the above reasoning we realize that AI is no longer a thing of future, it is in the here and the now. Consider automated cars, virtual reality gaming, factory process flows that require no human interventions. Consider "Siri" or "Alexa" personal assistants who understand human speech and understand what we want or need. Look at services like Apple store or Youtube which suggest us various new music and videos based on what we have previously watched or showed interest in.

In closing, there are only small and simple examples of what AI is capable of. As AI grows exponentially it is imperative to consider its long term impact on the environment and human race.


References:
https://en.wikipedia.org/wiki/Artificial_intelligence
https://stopad.io/blog/artificial-intelligence-facts
https://www.forbes.com/sites/bernardmarr/2017/04/25/the-complete-beginners-guide-to-artificial-intelligence/3/#3db5be7a8b09

Tuesday, June 5, 2018

Internet of Things

The world is talking about Internet of Things (IOT), workplace or outside everyone is intrigued with this new phenomenon. So what is Internet of Things exactly and why are people so intrigued.

IOT can be defined as a network of devices like cars, home appliances and other items embedded with electronics, software, sensors, actuators and connectivity which enables these objects to connect with each other and exchange data. Each object is unique and interconnected within the same internet infrastructure with other devices.
In simple terms, IOT is the concept of connecting multiple devices under a common internet infrastructure so they can be controlled remotely with little to none manual intervention. From everyday objects like your TV, air conditioner, light bulbs, cell phones to hi-tech machinery in factories almost all can be embedded with software and sensors and controlled automatically using IOT.

Gartner, an analyst firm  predicts that by 2020 there will over 26 billion devices that could be integrated using IOT. This very clearly suggests that most of our daily objects at work and home will be integrated with IOT making our lives very comforting. IOT devices have the capability of sharing data with each other, thus creating a lot of data about the choices, likes and dislikes of an individual. This  can help simplify our lives as a lot of our everyday decisions or choices will be made by these devices automatically. For example; your car may send notifications on your cellphone when it requires servicing or something needs repairing, or on a hot day you can set the air conditioner to cool of your home while you are leaving from your work place.

These are simple examples of what large feats are possible once IOT comes in full force. IOT will bring about a lot of changes not just at home but in the overall environment as a whole. Homes, factories, farms, manufacturing units, service providers all that can be connected will be. And this will have a very strong impact on our lives. Automation, reductions in wastage, energy savings and many other such benefits will result in efficient, clean and smart cities and reduce costs and losses on a huge scale.

With so many positives IOT is not only intriguing but also much awaited. However, another aspect that has a serious impact on us with IOT coming in is personal privacy and security. Do we really want so many connected devices sharing our personal information freely to our service providers? How much privacy are we willing to compromise for IOT? With nations always worried about national safety and terrorism do we actually want so many devices collecting our everyday life information and making it openly available? And what about hacking – with IOT being so huge and everything connected a simple breach may result in huge losses. SECURITY is the biggest concern when it comes to IOT and protocols need to be established and followed very strictly if we are to fully enjoy this life changing concept of IOT.

Discussions on IOT have been going on throughout the globe for many years and the positives and challenges of more and more devices joining under IOT needs to be thought upon. For now all we can do is try to understand more and more about IOT and how it will impact our lives in the near future.

References- forbes.com and wikipedia.com

Tuesday, May 22, 2018

E-Learning - The way ahead

With the advent of technology E-learning has quickly become an integral part of the training industry. Business, education institutions and professionals are now migrating towards e-learning from the traditional classroom training. Apart from the obvious benefits of being flexible and not having to spend excess time and expenses on travel E-Learning also has many other benefits over the traditional training methods. Below mentioned are some of the advantages of E-learning:
  • Less expensive to produce, with  soft wares and applications like Trainersoft you can create your own training courses without incurring much cost
  • It’s self –paced, most e-learning programs can be studied as and when the learner is free. The training courses can be created in small modules so the learner can focus, learn and move ahead as per his convenience
  • It moves faster, with e-learning the learner himself  is in charge of the training, this helps him move the training at a faster pace as he can skip parts of the course which he already knows and focus on the parts he actually needs training on
  • It’s consistent, e-learning eliminates the problem of different trainers speaking different content on same subject. This is especially important and quite crucial in company based training
  • Easily accessible, with smartphones and tablets accessing online training programs has become very convenient. Learners can easily log in their online training courses from anywhere and at any time
  • Easily updated, online training programs can be easily updated as they only require the updated content to be uploaded on to the servers. This additionally saves cost on reprinting manuals and retaining instructors
  • Increased Retention, e-learning courses can lead to increased retention and better grasp of the subject as e-learning uses multiple formats like images, video, audio, quizzes, interactions and so on to reinforce the message of the training

With constant progress in technology, E-learning platforms are quickly moving up in the world as well. Microlearning, Gamification are a just a couple of new platforms that are coming up for E-learning, more on that next time.


*Reference: Howstuffworks.com


Monday, May 21, 2018

SEO done right


Search engines do not understand a web page the way humans do. Search Engine Optimization – SEO helps smooth interactions between search engines and a web page, enabling the search engine to better see and understand a web page.
The following points will help us better understand how SEO is done:

» Search Engines prefer HTML text format rather than images, flash files and other non-text content. These formats are generally ignored by search engines as they put more value in HTML Text format while crawling and indexing web pages. It is thus advisable to build web pages with maximum content written in HTML, also images, flash files should be accompanied with HTML text descriptions to guarantee proper indexing of the web page.

» Link Structure is very important  for search engines. Ensuring all the pages on a website are interlinked will ensure that the search engines crawl through all the pages and all the relevant content is indexed and listed. For Ex:












Here, Homepage A is linked to B which is linked to C but, page D is not linked to any of the pages. In this case, crawler would not crawl page D which in turn would not be indexed despite its great content and good keywords.

» Search engines store data on the basis of keywords in other words, there are millions of data indexed, when we enter words to perform a query, search engines go through their database and retrieve the information based on the words in the query. The way keywords are used on the page is measured by search engines to find the relevance of that information to a query. More specific the keyword leads to less competition and higher chances of achieving a higher ranking. To optimize a page’s ranking use the keywords you want to rank for prominently in title, text and metadata.
Over a period of time, this practice of keyword based indexing was taken advantage of to manipulate engines. This misguided effort is termed as ‘keyword stuffing’ wherein in keywords are stuffed into texts, meta tags, links and URLs which does more harm than good to the website.

» Description of a page’s content is shown at the top of Internet Browsing Software which is called ‘Title Tag’. It is critical to user experience as well as SEO. Keywords used in the title tags will be bold when a search query would be performed using those keywords. Title tags can be optimized in following ways:
a.   Place keywords in the starting of title tags for better ranking and better visibility to the users
b.  The first 65-75 characters of the title tag are shown in the search result  by the search engines so, be wise while writing a title tag. If multiple keywords are targeted and it is important to include them in the title tag then go longer.
c.   It should be descriptive and readable to grab more user attention and visitors to the site

» Meta tags:

a.   Meta robots: They control crawler activity on per page level.
- Index/noindex tells search engine whether to index a page or not. Noindex excludes the page from indexing. By default crawler indexes all pages.
- Follow/nofollow tells whether to crawl link on the page. Nofollow stops crawler from crawling and ranking the link. By default crawler follow every link on the page.
- Noarchive tells the engine not to save cached copy of the page. By default crawler saves cached copy of the page.
b.   Meta Description: It gives a brief description about page and not used by crawlers for ranking. These descriptions are basically for advertising and drawing attention of readers.

» The addresses for documents on the web page are of great importance from search perspective and are called URLs. They are displayed in search result and also used in ranking documents. Construct a URL which gives an idea of the content on the page and is short, easy to copy & paste and visible in the search result. Include specific keyword in the URL which is targeted by web page. However, don’t stuff in multiple keywords for SEO, it will result in less usable URL.

» Many a times it happens that there are two or more duplicate versions of a web page with different URLs. Search engines rarely show multiple, duplicate versions of same content. Instead they choose a version which is most likely to be original. This may lead to lower ranking of pages than it should. To combine multiple pages into one Canonicalization is done. This practise tells the search engine that all duplicate versions has one and only one URL. This way duplicate pages stop competing against each other and create stronger relevancy signal overall.


From the above points we can see that keywords play a very important role in SEO so, choosing the right keyword for website is of utmost importance. Below are some of the sources about keyword referral and keyword demand:
a)   Google Trends
b)   Google Adwords Keyword Planner Tool
c)   Wordtracker’s Free Basic Keyword Demand

Search engines have no formula to understand how important the content is for people. They track what people do: what they discover, react, comment and link to on your website, and measure the importance and relevance on that basis. So, along with SEO, market your content to make sure it gets seen to the audience.

Reference- moz.com

Sunday, May 20, 2018

What is SEO - For Beginners

Moved your business online? Have your website ready? Confused how to make it to the list of ‘top searched websites’? Well, one of the solutions to become one of the top searched websites is ‘SEO’ also known as ‘Search Engine Optimization’.

Search Engine Optimization is on-page optimization wherein the website is created with a clear hierarchy and text links to make it easy for the search engines to ‘crawl’ through the site. Search engines are ‘crawlers’ or ‘automated robots’ which go through (crawl) the website and store the relevant information. This process of storing relevant information is called ‘indexing’ and these information are recalled when needed for a search query. When an online search is performed, these search engines go through their database and show the results which match the search queries. Also, it ranks those results as per the popularity of the websites showing relevant results. Hence, ‘relevance and popularity’ are the two things which are influenced by the process of SEO.

To show the ‘relevant’ results to the search query, match your keywords to those queries. Create keyword rich content and URLs. Make a website which is rich in valuable information and its pages clearly describe the content (it is not buried inside JavaScript, Adobe Flash Player).

Search engines assume that more popular a site more useful the information it would contain. To rank these sites in order of their popularity mathematical algorithm is employed by these search engines.
*Following are some of the characteristics of web-pages that tend to rank higher:
  1. Domain-Level Link Features: Based on link/ citation metrics such as quantity of links, trust, domain-level PageRank, etc.
  2. Page-Level Link Features: PageRank, trust metrics, quantity of linking root domains,links, anchor text distribution, etc.
  3. Engagement and Traffic/Query Data: Data SERP engagement metrics, clickstream data, visitor traffic / usage signals, etc.
  4. Domain-Level Keyword Usage: Exact-match keyword domains, partial keyword matches, etc.

Search Engine Optimization makes websites understandable for search engines as well as users. It helps the engine find out what each page is about, and its usefulness to the users.

*Source- moz.com