Focusing on Core Technologies in the 2024 Tech Radar
This year we start approaching our Tech Radar differently, but its goal and application remain unchanged. The Tech Radar is intended to help our engineering teams to make the best choices for their projects and inspire other engineers and developers around the world. Unlike other years, we no longer re-evaluate the entire Tech Radar each quarter. Instead, we focus on one single ring and motivate each technology within that ring. In the first quarter of 2024, we have taken? a good look at our core technologies.
This article describes why we have chosen each core technology. The full Tech Radar can be found at https://techradar.harborn.com.
Languages
HTML/CSS/JS
Most of Harborn projects are delivered to end users through a webbrowser. The current state of technology does not allow any realistic alternative to HTML/CSS/JS, nor do we think any of the experimental alternatives would be a better choice.
Python
Python has steadily risen in popularity and is usually considered the second or third most popular programming languages in the world in most rankings. Python is easy to learn, suitable for a wide variety of backend and data development tasks and has a large community. At this time, we consider it the logical choice for most backends, with a notable exception for content management systems as most widely used content management systems are PHP.
PHP
PHP is still the largest programming language for content management systems. Two of the largest content management systems, Wordpress and Drupal, and the large e-commerce platform Magento are all developed in PHP. We do see a decline in popularity amongst (especially new, just out of school) developers, but this does not deny the fact that for web development, especially if the content management system plays a significant role in the website as is usually the case, the importance of PHP can’t be denied.
SCSS
SCSS adds features to CSS which supports applying well known software engineering principles to CSS development, most importantly the DRY principle. SCSS makes our projects easier to maintain and change while also being less prone to human error. We do see CSS closing the gap to SCSS and will evaluate if SCSS is still necessary in the near future.
Typescript
Typescript adds features to Javascript, which support applying well known software engineering principles to Javascript development, most notably by adding support for typing. Typescript makes our projects more robust, less prone to errors and allows for better automated quality control.
DevOps
AWS
AWS was the first global cloud provider that reached a state of maturity which allowed us to migrate everything from our datacenters to the cloud. Harborn is an AWS partner and has more than a decade of experience with using AWS services. In recent years, we see that other cloud providers are also reaching the same maturity levels as AWS and we are expanding our knowledge into other cloud providers, mainly Azure, alongside AWS.
Containerization
Containerization is the standard for most Harborn projects. We have chosen containerization when replatforming and migrating all our projects to the cloud six years ago to resolve the infamous it works on my machine problem. We consider containerization the current industry standard. We have chosen it as our standard method of deployment in test, acceptance and production and rely on it in development as well.
Jenkins
Jenkins is our continuous delivery tool of choice to build projects and deploy them to test, acceptance and production. We have several years of experience with Jenkins and the integration between Jenkins and Kubernetes, our container management platform of choice, is excellent. The combination of declarative Jenkinfiles and groovy scripts allow a high level of customization of our pipelines in a standardized manner, fully integrated in a project’s codebase and therefore subject to peer review. Because Jenkins is 100% open source, we have full control and are able to run Jenkins safely within our own cloud infrastructure, opposed to many alternatives.
Github Actions
Github Actions is our continuous integration tooling of choice, used to run tests, static code analysis and other project specific tasks. The close integration between our projects’ codebases, hosted in Github, and Github Actions makes it the obvious choice for continuous integration.
Kubernetes
We have no doubt that Kubernetes is the best container management platform currently available. Kubernetes is supported by all major cloud providers, most notably by AWS EKS and Azure AKS. The vast amount of configuration options and the nature of Kubernetes’ configuration, allowing management from different tooling and therefor not dependent on any one is a big advantage. The combination of these things makes Kubernetes the logical choice for running our containers in test, acceptance and production.
Rancher
Rancher is the user-friendly interface to our container management platform and has been for almost eight years now. Recently, we have successfully upgraded Rancher to allow using it together with Kubernetes. Kubernetes has a steep learning curve and is sometimes considered too heavy a platform for some applications, because of its many options which are almost never needed. We have successfully overcome these challenges using Rancher, which adds a user-friendly user interface to our Kubernetes clusters and provides a single control plane for all our projects.
Serverless
Serverless provides an alternative for containerization, especially when high peak traffic is expected. Serverless can also provide significant cost benefits, if managed properly. While containerization is the standard choice for most Harborn projects, we do consider serverless a core DevOps technology because of our experience with serverless, its perfect integration with (managed) cloud services, its seamless scalability options and improved developer productivity. The disadvantages of serverless over containerization are higher cost if not managed properly and an increased level of vendor lock-in with the cloud provider used.
Terraform
Terraform is our technology of choice for infrastructure as code. We believe all DevOps and infrastructure should be configured as code and should be subject to peer reviews, just like all other code. Another major advantage of infrastructure as code is the ability to recreate a cloud environment from scratch and making sure test, acceptance and production environments are the same (except for sizing). We have chosen terraform over infrastructure as code solutions provided by AWS and Azure to make sure the description of our environments is as independent from the cloud provider used as possible and the ability to develop our own modules. Recent developments in the licensing structure of terraform is a threat to its current position as a core technology within Harborn.
领英推荐
Frameworks
API Platform
API platform forms the basis of almost all APIs developed in PHP. Though we see an increase in Python backends at the expense of PHP, we still rely heavily on APIs in PHP backends. API platform allows rapid development of RestAPIs in PHP, offering many endpoints out of the box and it integrates seamlessly with Symfony.
NuxtJS
NuxtJS is our server side rendering and static site generation framework of choice for VueJS applications that require server side rendering. NuxtJS is a very stable server side rendering framework that works perfectly with VueJS, our front end framework of choice for many front end applications.
Symfony
Symfony is the current industry standard for PHP frameworks, though some alternatives like Laravel exist (and are also used, be it to a lesser extend, within Harborn). Many open source projects are based on Symfony, or at least use multiple Symfony components. Most of our PHP projects, which are not based on Wordpress or Drupal, are built upon Symfony and follow Symfony development guidelines. This allows new developers to quickly become familiar with projects, provides a rich toolbox which allows rapid development of new features and makes sure many best practises are embedded in our developer’s work processes.
VueJS
VueJS is our front end framework of choice for many front end applications, though we are seeing a rise of ReactJS applications within Harborn. Currently, we still favor VueJS unless there are compelling reasons to choose ReactJS (like customer preferences, certain component libraries or interfaces which are better supported in ReactJS). Our preference for VueJS is because of better event handling, improved fetching of data, separation between HTML, CSS and Typescript, stabler server side rendering and better debugging tooling.
FastAPI
FastAPI is our framework of choice for the development of APIs in Python. FastAPI’s extendible, seamless integration with Pydantic and lightweight architecture , which allows using it both in containers and in serverless functions, combined with dependency injection features and support for typed data are compelling reasons for us to choose FastAPI over alternatives.
Data & AI
MySQL
MySQL has been Harborn’s relational database system of choice for more than two decades. Its friendly learning curve, broad support in open source libraries and content management systems and its flexibility makes it a good choice for almost all projects. We do acknowledge that in some cases, other databases could be a better choice, for example PostgreSQL or SQLServer. However, at this time we still consider MySQL to be our core database technology and the logical choice for the vast majority of our projects.
OpenAI models
We are embracing the OpenAI models to leverage the power of Large Language Models. OpenAI models are used to develop AI powered services and to replace our custom trained AI models for NLP. We use the globally available GPT-3.5 and GPT-4 models through the OpenAI API, as well as Azure OpenAI services for applications that handle sensitive data.
CMS
Wordpress
Wordpress is the most widely used content management system in the world. Many marketeers and content managers are experienced Wordpress users and prefer Wordpress over any other CMS. We have successfully addressed the challenges of creating professional, secure and performant Wordpress websites by standardizing and automating all repeating tasks.
UX
Figma
Figma is all about real-time collaboration, whatever we create is directly visible for the whole team. Figma is a leading browser based design tool for efficient and easy handoff to our developers while enabling us to work with new/existing design components.
Midjourney
Midjourney is a generative AI tool, which allows creating images from a description.The tool is an effective resource for creating stock images, icons, illustrations or generating inspiration ideas for UI design.
Adobe FireFly
Adobe Firefly is an AI application for generating and editing images. You can use Firefly for creating images, creating text effects, modifying your own image by adding or replacing elements generated with your description and as last, you can apply themes and color variations to vector images. Firefly is integrated among Adobe’s main tools like photoshop, illustrator and Indesign, but is also accessible as an independent website.
Adobe Photoshop
Adobe Photoshop is an application to create, edit, and manipulate various images. Photoshop has been an essential tool in our UX toolkit for decades. We can create mockups, backgrounds and graphics we can add in our designs. Photoshop includes an efficient image compression feature, ensuring clarity for images incorporated into websites.
ChatGPT-4
GPT-4 is a new language model created by OpenAI that can generate text that is similar to human speech.This model refines the technology found in ChatGPT, which is currently based on GPT-3.5. ChatGPT-4 is able to accept both text and image inputs and output human-like text. It can also create and analyze designs and images using text. ChatGPT-4 is used for generating ux copy, brainstorming, answering questions about ux patterns or a specific target group. It can also be used for heatmap analysis or anticipating design improvements.