Produce A Specification For The Agreed Project

Produce A Specification For The Agreed Project
1.3 Produce a Specification for the Agreed Project

SHORTLY

PROJECT SPECIFICATION

Introduction

There are thousands of songs, albums, and artists on BandCamp’s website, each of which placed there with the idea that every person in the world, who is pleased by the art will be able to reach for it. Since it was founded in 2007 (by Ethan Diamond, Shawn Grunberger, Joe Holt, and Neal Tucker) Bandcamp.com have had the privilege to serve as a platform for distribution and advertising for many talented artists, and is planning to continue doing so for many years to come.

According to RankWatch (2016), each search engine uses different mathematical algorithms for gathering search results. These algorithms are primarily very complex, which leads to even more difficult implementation of the projects. Here is where Elasticsearch comes in. Elasticsearch is a scalable full-text search and analytics open-source engine. It enables search, storage, and analysis of big volumes of data very quick and in real time. Some examples of what it can do are provided by Elastic.co (2017):

  • Online web stores, where clients are allowed to search for products or services. Elasticsearch can store the entire catalogue of the store, and enables users to search, when also autocompletes suggestions for them.
  • Price alerting platforms where users are enabled to specify rules like “I am interested in this product/service, and I want to be notified if the price of this product/service drops to £N”. Elasticsearch can use its reverse-search capability to identify movements in the prices and match them with users’ specifications.

Elasticsearch can be used to search all kind of documents!

Basic Concepts:

Near Realtime (NRT) Engine: There is a slight latency from the times a document is being indexed to the time it becomes searchable by the engine.

Cluster: According to Elastic.co (2017), a cluster is “a collection of one or more nodes (servers) that together hold the entire data and provide federated indexing and search capabilities across all nodes.

Node: A server which is part of the cluster, stores data and participates in clusters operations.

Index: A set of documents with similar characteristics.

Elasticsearch is a good choice of a third-party open source software. It makes the implementation of the solution much easier, and can also be integrated within the existing platform.

The Problem

Event Driven ProgrammingThe problem is to research and understand how and why Elasticsearch works, and learn how it can be applied within the existing platform of Bandcamp.com. Following that, a solution needs to be developed using the information gathered through the research.

The research will most likely result in us, identifying more than one possible way of engineering the solution. It is expected each possibility to be analysed and evaluated, followed by a decision on which of the discovered tools and practices will be used for the development.

During the development sprints, variety of choices will appear. Again, the options will be evaluated and decisions will be taken during the development process about how to continue with the solution. Documentation will describe each step of the process and a separate document will be created, storing all identified possible improvements.

Objectives & Methods

All objectives are distributed between three sprints. Generally, the objectives in each sprint are on dependant on each other, however if there are dependencies they will be detailed below. Not having dependencies between objectives allows the development team to work on multiple objectives simultaneously.

Sprint One
1Research different third-party engines
2 Research existing solutions to similar problems
3 Research Elasticsearch
4 Get familiar with concepts & technical jargon
5 Select suitable hardware to use

 

Sprint Two
1 Install Elasticsearch on the hardware
2 Install other necessities
3 Get familiar with Elasticsearch operations
4 Research similar solution in a more advanced perspective

 

Sprint Three
1 Test + Documentation
2 Maintenance
3 Identify possible further improvements
4

Provisional Timetable

Resources

I intend to use the following hardware

  • Home PC (Skylake Build, Intel i5 6600K Unlocked, 16GB DDR4 2133MHz, 4GB GTX 960 Overclocked) running Windows 10 Pro Creators Update + Linux Ubuntu 16.04 LTS
  • Laptop Toshiba Satellite Pro C50 – A – 1EO running Windows 10 Pro Creators Update

Both the personal PC and laptop are full-time available and have internet, the transfer of files will be easy and backups will always be up to date. Still, it is not yet certain if the use of the home pc will be necessary.

Is this question part of your assignment?