Glue Stack
GitHubLive AppChat
1.0.0
1.0.0
  • Read Me
  • Architecture
    • How Web Applications Work
  • Development
    • Our Development Process
    • Running Locally
    • Setup Development Tools
    • Setup Visual Studio Code (vscode)
    • Setup Database Connection In Sequel Pro
    • Building Glue Stack From an Empty Folder
    • Developing Process Documentation
    • UI Connect Component
  • Infrastructure
    • Setup AWS Account
    • Setup AWS Cloud Infrastructure
    • Continuous Integration (CI): Travis CI
    • Performance Testing and Connection Pool Sizes
Powered by GitBook
On this page
  • The Stack
  • Tier Responsibilities
  • Security
  • Monolithic
  • Multitenant
  • Application Tools
  • Development Tools

Architecture

Browser->API: GET me some data
API->Database: data please
Database->API: here is the table of data
API->Browser: here is the data in JSON
+---------+                     +-----+                        +----------+
| Browser |                     | API |                        | Database |
+---------+                     +-----+                        +----------+
     |                             |                              |
     | GET me some data            |                              |
     |---------------------------->|                              |
     |                             |                              |
     |                             | data please                  |
     |                             |----------------------------->|
     |                             |                              |
     |                             |    here is the table of data |
     |                             |<-----------------------------|
     |                             |                              |
     |    here is the data in JSON |                              |
     |<----------------------------|                              |
     |                             |                              |

The browser can also make changes to data using the same flow but with different HTTP methods like POST and PATCH.

The Stack

Multitenant, monolithic, 3-tier application with a MySQL database, Spring Boot HTTP API and React Single Page Application.

Tier/Component

Type

Language

Implementation

DB (Database)

Relational

SQL

MySQL (pronounced "my sequel")

API (Application Programming Interface)

JSON over HTTP

Java

Spring Boot

UI (User Interface)

SPA (Single Page Application)

Javascript

React

Tier Responsibilities

Tier/Component

Where it runs

Infrastructure

Storage & Retrieval

Security

Navigation

DB

Private server (cloud)

yes

API

Public server (internet facing) (cloud)

yes

yes

UI

Internet browsers (desktop and mobile devices)

yes

yes

yes

You can see the separation in responsbility here but I also want to highlighting the sharing of responsbility with storing and retrieving data.

Security

Monolithic

Multitenant

Application Tools

  • Database

      • An older, common relational database that I have the most experience with.

  • API

      • An easy and opionated way to create Java applications.

      • To authenticate users.

      • Helpful abstraction for doing CRUD.

      • Creating typesafe and composable database queries even directly from http requests.

  • UI

      • Simple, powerful and popular.

      • For an opionated, zero-configuration build process.

      • URL management.

Development Tools

      • Popular and works well.

      • For simplicity and synced changes across the application.

      • An abstraction over git to make it easier to do common things.

  • Editors

      • Fast and popular editor.

      • The best Mac app to manage MySQL databases.

  • Deployment

      • for automated database migrations.

PreviousRead MeNextHow Web Applications Work

Last updated 6 years ago

and

It is important to . In our application the client refers to the ui and the reason for that is because we can't control client side code - anyone can run anything in their own browser. That's why we have an API so that users can't directly access our database and potentially other organisations' data. I see it as a middleman between the user and the database. It is primarily in charge of enforcing the security as well as preparing the data from the database. When I talk about security i'm talking about users that aren't logged in don't have access and users that are logged in only see their own organisation's tasks.

This architecture is commonly referred to as a or monolithic which means it is more or less deployed as a single unit. I think of it as a monolith though others might argue that it isn't because the ui is separate. It gets a little bit confusing because the word monolith is often used negatively, like in the wikipedia article, because monoliths, like any application, can be horrible but I like this architecture and i'm not the only one. See for more.

An alternative architecture is where a single application is made up of individually deployed services which mainly offers performance benefits. My biggest issue with microservices is their local development experience though tools like are closing that gap. This monolith is designed to be a joy to develop on, something i'm not sure I could achieve with a microservice architecture. This whole architecture can easily be run entirely on your local machine and that's an important part of our development process.

means to store multiple tenants on a single instance. In this case we store multiple organisation's in the same database and access it using the same API. This means there is less isolation between organisations' data but makes this application a lot simpler to manage.

SQL, Java, Javascript, HTML and CSS are still the most popular technologies among developers in 2018. and I know them pretty well.

A popular for Java that maps objects to and from the database.

Implementation of the popular in React.

Our number 1 development tool is our

"never trust the client"
monolith
the majestic monolith
microservices
serverless framework
Multitenancy
Most Popular Technologies, Developer Survey Results - Stack Overflow
MySQL
Java
Spring Boot
Hibernate
ORM
Spring Security
Spring Data JPA
Querydsl
React
Create React App
Material-UI
Google Material Design System
React Router V4
development process documentation!
Version Control
Git
Monorepo
Git Town
Visual Studio Code (vscode)
Sequel Pro
Flyway
AWS RDS
AWS Elastic Beanstalk
AWS S3
AWS CloudFront