Archie Tecture

Ilman Nafian
UKM Heroes
Published in
2 min readOct 31, 2019
Project architecture

I don’t know why I didn’t include this stuff in my blog about Docker and Architecture. This blog is just the continuation from said blog so it is not going to be a long one.

AWS

Amplify Console

Amplify console is a CI/CD and web hosting service provided by AWS. It lets us to host a full stack serverless web apps. It is also use a GIT based workflow so we can just code like usual. Amplify’s CI/CD workflow also resembles that is GitLab CI/CD so we don’t need to learn much about it.

Cognito

Cognito is an identity management service. It lets us easily create an identity pool or even setup an identity federation in a case where we need to connect to connect to an existing identity pool such as Google or Facebook. Cognito also can help with provisioning access to other AWS resources such as storage. In our case, we use Cognito user pool as the primary user pool and also Cognito identity pool to be able to access other AWS resources such as AppSync query and image stored in S3.

AppSync

Querying from multiple database can get very complex when you have multiple database. AppSync help with combining multiple data sources into one GraphQL endpoint. We use AppSync to easily query data from DynamoDB using GraphQL.

DynamoDB

SQL or not SQL. For large database, scaling can become a problem. SQL server scale vertically meaning you’ll need to add more capacity such as CPU, RAM, and storage to your server since SQL are suppose to run on one server to maintain integrity. On the other hand, NoSQL scale horizontally meaning you only need to add more server. DynamoDB is a document and key-value NoSQL database that AWS offer. In this project we use DynamoDB as our primary database.

S3

Simple Storage Service is a file system storage service. For now, we use S3 as our storage for images.

Extra stuff

There are many other services that utilized behind the scene such as IAM, Lambda, CloudWatch, etc. Each of them has their own role in our development.

The app itself

Angular

There is no particular reason why we pick Angular as our frontend framework other than because UKM’s other project is already built on Angular. Angular itself is a TypeScript based frontend framework.

Amplify JS

Creating a serverless application can be hard sometimes. Amplify JS help by abstracting most of AWS services into categories such as authentication, storage, and API. It is a JavaScript framework that work with frontend framework like Angular, React, and Vue to help abstract most of AWS’s little configuration so that developer can focus more on building the app itself. Don’t know what else to write so here is an example of Amplify JS service configuration.

lol

I’m tired. Hope you enjoy reading this blog. Thanks!

--

--