top of page

Choosing Your Technology Stack

  • Writer: MLT
    MLT
  • May 21, 2020
  • 3 min read

Updated: May 6, 2021

Having trouble choosing your technology stack for your next software project? In order to help you in this process, I thought I would share a three-part series rationalizing the ‘technology stack’ that was used on Missing Link Technologies’ Prescriptive Decision Support System (PDSS) Project.

This IRAP funded project consisted of the following modules:

  • Core Acquisition Services

  • Core Data Services

  • Administration and Reporting Web Services

  • Data Analytics Pipeline and Big Data Services

I encourage you to take notes from our experience to help you choose the best technology stack for your upcoming project.


Part One

In this article, I will be focusing mainly on Core Services and how the ‘first level’ technology stack was chosen.


1. Define Highest Level Core Deliverables/Objectives

  • Must Run on Small Hardware such as Rasp. Pie

  • Must Run on Linux and Windows Operating System

  • Must be runnable in Cloud and scale both horizontally and vertically

  • Must be runnable in hybrid Cloud {public + private}

  • Support for leveraging key Apache Foundation Software

    • Must be of ‘Enterprise Quality’ - Centralized build - Automated execution of Unit Tests - Continuous Integration - Artifact versioning {Publishing and Retrieval}

  • Strongly typed language with clearly defined abstractions

  • Supports implementation of SOLID principles

  • Relatively easy to deploy

  • Minimize licensing costs

  • Provide good optics for company {external partners/academia}

  • Extensible with a clear pathway for handling fringe cases.

  • Supports creativity and experimentation without introducing unnecessary risk.

  • Able to implement stated business requirements.


2. Reflective Thinking

The first thing to notice is that the deliverables/requirements that I’ve listed are contextually relevant to my role as Chief Software Architect. My primary objectives are to ensure that our technology choices are fundamentally sound and contribute to satisfying the stated objectives.

The developer in me wants to list things like tail recursion, implicitly typed variables, all exceptions are unchecked, of instead of instance of…. but these nice to haves do not really contribute to stated objectives. Having said that, I am sympathetic to developers as 50+ % of my work hours are still devoted to writing software. For what it’s worth I will do my best to keep things progressive and interesting in other areas of development!


3. Technology Stack Part 1 – Decision Time

This is perhaps the easiest decision to make. In my professional opinion, the only 2 valid choices for enterprise server-side development are Java and C#. One could make a case for C++ and VB.Net but they were immediately discarded as not being relevant.


This winner is Java Open JDK 1.8!

Bummer, as C#, especially DotNet Core 3.0 is a superior development experience….is like Java + Maven but better and gone are atrocious project file, solution file, and confusing NuGet package junk. I also much prefer using the free visual studio code over the heavy and clunky Visual Studio for Professionals.


The rationale for choosing JAVA Open JDK 1.8:

  • By far best support for Apache APIS

  • Great driver for Maria DB

  • JDK Runs great on Raspbian

  • Alpine Image for Docker is top-notch

  • It is a better language choice for Academia. {this is changing though}

  • Statically Typed Language

  • Junit + Maven + JFrog + Git Lab is rock solid.{msbuild users never complain about maven}

  • Configuring Apache Stuff prepares you for configuring Kubernetes stuff

  • Encourages use of Linux Operating System

  • Simplifies runtime requirements as many supporting services are written in Java as well

  • Free IntelliJ IDE is quite good.

  • Can program in Scala and Kotlin which compiles to java byte code


Identified Risk Areas

Oracle’s new JDK licensing model may be problematic but MLT should be ok if we do all development, testing and production releases using OPEN JDK 1.8

Developer complaints


Stay Tuned for Part 2

In Part 2 of this series where I’ll define the next level of technical requirements such as which database technology(ies), MQ, DI container that we are going to use within our growing technology stack.


Chief Software Architect

Missing Link Technologies


Find this article on published on LinkedIn

28 Comments


David Ortez
David Ortez
4 days ago

Personalized merchandise can help local teams build recognition within their communities. custom sports products can include items designed around team colors, names, logos, or seasonal events. These products can be useful for players and supporters alike while creating a stronger connection with the organization.

Like

David Ortez
David Ortez
5 days ago

Finding a nearby printing option can make ordering branded clothing more convenient. apparel printing near me may be useful for local businesses, schools, clubs, and event organizers who need coordinated garments without making the ordering process unnecessarily complicated.

Like

xydumybaq
Jul 14

이용 과정이 간단하고 업무 설명이 명확해서 부담 없이 시작할 수유흥알바  관련 후기도 많아 참고하기 좋았고 실제 근무 환경도 설명과 비슷해 만족스러운 경험이었습니다.

Like

xydumybaq
Jul 09

전문성과 친절함을 동시에 안산출장마사지 느낄 수 있는 서비스였습니다. 서비스를 통해 피로 회복과 편안한 휴식을 함께 경험할 수 있어 만족스러웠습니다.


Like

Clean commercial spaces create a welcoming atmosphere for both employees and visitors. Investing in commercial building cleaning services helps businesses maintain a professional appearance while supporting a healthier workplace every day.

Like
bottom of page