Modern Software Stack/Architecture

Hüseyin Demirtaş
Evergreen Learning
Published in
2 min readAug 10, 2019

I have the weird habit of trying to learn all the available options and best tools before I get started even though in the end I will probably end up writing a very simple app. So I literally spend weeks reading articles and watching tutorials about building modern web apps.

To start off, there are a lot of options. But from a software point of view the need to separate your app into pieces/microservices/compartments is increasing. These days users expect to be able to use an app from various mobile devices as well as on their desktops and over the Internet as a web app. If you were to build separate back-ends for all of these different environments that would mean an enormous amount of extra work and maintenance cost. So from a modern day perspective it is much more appropriate to have an API-driven back-end that can be consumed from a variety of different devices and environments. For instance, if I create an API for showing and recording famous quotes, I can use this API to send data to my iOS app, Android app and web app. This is very appealing compared to building platform specific back-ends. What is more we are moving towards and API marketplace model. Many companies are building and charging for APIs. For instance Google Translate and Maps APIs, machine learning models and APIs from AWS and Microsoft or authentication APIs from providers such as Okta and Auth0.

APIs accelerate the development cycle. Another trends is using serverless architectures or containerizing apps using tools such as Docker. Tools like Docker make it easier to transfer your apps between different cloud providers. In the serverless model, you build you app based on various functions that are stored in the cloud. Whenever your app needs a certain function, it calls the corresponding cloud function that you deployed to your favorite cloud provider. The promise here is that serverless cloud providers will take care of scaling the server resources and maintenance and you can focus on your business logic without wasting time in DevOps.

There are of course many routes to implement a modern application architecture but I think I have found one that work for me. I am planning to use Firebase for database operations and authentication. It plays nicely with many programming languages and has good documentation. I will connect Firebase with React and NodeJS to build a JavaScript-centered modern web app. Later I can port this app to iOS and Android with the help of React Native. React Native is not entirely like React but since there is a lot of similarity between the two I suppose choosing React Native is a good bet. Of course all of these are valid regarding my circumstances. What React, NodeJS and Firebase offer seem enough for my purposes or the types of apps I am planning to build.

So basically these are the findings, conclusions and choices from my learning process for now.

--

--

Hüseyin Demirtaş
Evergreen Learning

Son kez İngilizce öğrenin! İngilizce Doktoru | TOEFL, IELTS, YDS | Linguistics, cognitive science, programming @ Istanbul https://huseyindemirtas.net/