Putting Data at the Heart of your Organisation


Click to Email us

Analytics can deliver rich insights, but it is only when the models are used to empower a wider community that their true value is realised. It is estimated that only 10% of machine learning models make it into production, and hence their real value is never realised, primarily due to:

The sections below outline how EMPEDATA develop applications that solve both these issues and adhere to our 5 guiding principles of application design. Alternatively get in touch to arrange a private discussion to discover how we can support your digital service transformation.

web app design principles

Application design


The approach outlined in the Servitise section defines the desired user experience for either employees or customers, the next stage is to understand how to create and deliver it! Web applications provide an effective means for delivering capability, centralising and securing data to be consumed on a varierty of devices but even then there are a number of options available.

The key issue when selecting an appropriate approach will be a balance between the level of customisation required and the size of budget / skills available to deliver and maintain the project.

Dashboards

For applications focussed on consuming and visualising data a dashboard may be adequate. These can either be delivered through a Business intelligence tool such as Microsoft PowerBI or for a more custom open source solution we often leverage the Streamlit library, which enables web apps to be created using only Python, without the need for separate front-end web development.

Low-code applications

Low-code tools use a visual development approach to application building that empowers non-technical users to build, test, manage, and deploy applications with limited amounts of traditional programming. Low-code platforms achieve this by creating ready-to-use code blocks that can operate within predefined constraints through a simple drag-and-drop interface. These tools also provide a well configured development environment to enable effective collaboration and project management by the team.

Platforms such as Mendix can reduce the barrier to getting started and allow rapid experimentation. The baked-in security and hosting capabilities provide a safe and simple to configure environment, while the free tier provides a great way to prototype applications. They are however more limited in terms of functionality they can deliver and can lock you into their proprietary solution.

model view controller

Model View Controller (MVC) architecture

When your application extends beyond just sharing analytical models, adopting a Model View Controller (MVC) architecture provides a balance between complexity and control by introducing separation of concerns between the three core elements:

Our preferred web development framework for server-side applications is Django, which is used to power a range of well know platforms, including YouTube, Spotify, Instagram and Dropbox. Django promotes itself as "the web framework for perfectionists with deadlines", providing baked-in functionality such as admin panels, file upload, authentication, forms and app management, all of which significantly reduces the time and effort required to build robust web applications.

The ability to directly integrate the Python machine learning and mathematical models, discussed in the Analyse section, provides another significant benefit of selecting Django.

Service-Oriented-Architecture (SOA)

model view controller

In some circumstances if can be beneficial to further separate the UI and data processing elements of the application using an Application Programming Interface (API). APIs allow a programme to be broken into distinct services, enabling them to be developed in parallel with minimal risk of unintended consequences, so long as the interfaces between the services are maintained. To support this approach Django provides a versatile toolkit for constructing web APIs.

The frontend (client-side) functionality of web application is provided using JavaScript for which a variety of frameworks exist. These frameworks enable developers to take advantage of pre-existing functionality and templates, reducing development time and increasing software quality. React is currently the most used front-end web application framework with a focus on developing common reusable UI components to deliver engaging and intuitive user interfaces and ensure consistency across all applications.

MicroServices

Microservices are an architectural style that structures an application as a collection of loosely coupled services that are maintained and tested independently. These services can be organized around business capabilities and reused where appropriate. The isolation of these services also allows dedicated teams to freedom to use the technologies best suited to the task so long as the interfaces to the other services are maintained.

The key benefit of a microservice architecture is that it enables the rapid, frequent and reliable delivery of large, complex applications however for smaller applications the cost of managing and maintaining them is usually prohibitive.

Effective development


devops figure of eight

Equally as important as the capability the applications provide are the processes used to build and deploy the service. In the last 10 years DevOps has established itself as software industry best practice, combining cultural philosophies, methodologies, and tools to develop and evolve applications faster and more reliably.

DevOps has connotations of large scale, cloud based applications servicing millions of customers and deploying updates every minute. While this is true of some organisations, such as Amazon, DevOps is principally about creating flow between the various process stages of an applications lifecycle, represented by the figure of eight shown. Through improving communication and feedback, identifying issues early and automating processes where possible the team are given the best possible chance of success.

We outline a few key concepts that should be understood, however for a more comprehensive account of DevOps practices we recommend The DevOps Handbook by Gene Kim.

Scrum

Process automation

Deploying your application


Once up and running the challenge is then to give your site an identity that people will recognise and get them to start using it.

Selecting a name

An often overlooked consideration, when building Web Apps, is ensuring the identity and brand they present align with the company values you are trying to portray. One of the key channels for presenting an identity is the web address with which people will access your service from their browser. This address should be both memorable and relevant and can be achieved through using one of the following:

Hosting

Containers

Containers enable an application to be isolated from the rest of the system on which it operates. All the libraries,dependencies and files necessary to run the application are provided from a distinct image, meaning they make an application portable and consistent as it moves from development, to testing, and finally to multiple production environments. Docker is by far the most popular software framework for building, running, and managing containers

Structuring your data


The objective of a good data architecture is to ensure that all the information required to run your business satisfies the 3A's:

The first step in this process is normally to ensure that key information is stored centrally instead of being distributed across a variety of personal computers and drives. Storing raw data, of various formats, in its native form in one common location is known as a Data Lake.

Having created a Data Lake, it will probably become apparent that different, contradictory, versions of the same data exist and require significant work to convert it into a format suitable for analysis. To manage this situation it is necessary to create a process for extracting the data from multiple sources, transforming it into a cleaned format and loading it into a structured database, called a Data Warehouse. This process of transforming and storing the data in a format optimised for a specific business purpose is commonly referred to as an ETL process.

The problem arises as new unstructured data needs to be ingested into the Data Warehouse. The solution is to build an application, as defined above, to collect and validate the data at the point of entry. This data is then stored in a dedicated database, known as a Data Mart, which in turn forms a component of the wider Data Warehouse capability. Depending on the data requirements of the application the Data Mart may be considered as either:

Ultimately, the data being collected needs to be stored in a database; for which there are a variety of choices available, each with their own strengths and limitations.

A combination of PostgreSQL and Neo4j satisfy the requirements of all web application data platforms. They both satisfy all of the 5 tool selection criteria outlined at the top of this page and can be easily integrated with Django.

Security


When building an application security is paramount. A popular coding paradigm of "secure by design" ensures that "feared events" or "macro outcomes" are considered at the outset and the necessary precautions taken to manage the associated risk. Key considerations include:

Access control

Ensure that users are only granted access to the content and features that they are entitled to, through a robust login and permission management system. Django provides a robust authorisation system that can easily be extended to provide a comprehensive role based access control (RBAC) system. Extra security can also be introduced by performing admin hardening and adding two-factor-authentication as detailed in the provided links.

Equally important is ensuring secret keys are store as environment variable and never uploaded to a repository.

Attack vectors

The next type of threat to guard against are malicious attacks that can potentially compromise your site. One of the main benefits of using Django is the comprehensively tested libraries and built-in security features that protect against a variety of attacks.

Typical threats include:

Testing and assurance

Despite your best efforts tests provide are still necessary to give confidence in the developed solutions.

Three commonly used types of security testing include:

Getting noticed


Creating a Brand

Another key channel is the logo used for your site which will feature prominently in the header of the website, on the user's browser as a favicon and as an icon on their home screens, it may even be used on marketing literature to promote your service. When selecting a logo there are four main principals that should guide your selection:

Styling

Equally important is a consistent look and feel across your application, which will both improve the user experience and support your brand identity. CSS frameworks, such as Bootstrap enable professional and highly responsive websites with standardised icons, buttons and navigation components to be created with relative ease. While for more advanced applications design systems, such as Material Design by Google, provide more sophistication, introducing state management and interactivity to make controls feel tactile and responsive.

Digital Marketing

The EMPEDATA difference


logo

We know, as an SME, you need solutions that are reliable and affordable! That's why EMPEDATA focus on simplicity and clarity, using powerful open-source tools to deliver robust solutions. The application code we create is yours, meaning you are free to make any changes as your business needs develop, while the comprehensive documentation and the built-in unit tests we provide ensure any changes can be quickly assessed and validated. Where possible our solutions are built using Python because:

If you think we can support you on your digital service transformation, please fill in the form on our contact page to take the first steps on your digital service transformation journey!

Learning resources


Free resources

Paid resources

Recommended books


Project Portfolio


Specification tool
Data Platform