This project is intended to be an example for the usage of new technologies in web development. Here is a list of all technologies involved:
-
Angular
Client-side developed using the latest version of this framework: Angular 6.
-
Java
Server-side developed using the 2.3 version of oasp4j.
-
NodeJS
Server-side developed using the basics of the Express framework. Progressively updated to use oasp4fn.
-
.NET
Server-side developed using the dotnet framework.
-
Swagger
Used this technology to define contracts between client-side(s) and server-side(s). So necessary when every back-end of the project (.NET, NodeJS and Java) is prepared to match with the Angular client exactly in the same way, being transparent to the user.
-
Production Line
Tool used for Continuous Integration and Continuous Delivery. Inside of this Jenkins and SonarQube are used. Also used Docker for the deployment in an external server.
-
GraphQL
GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system defined for data.
This application can be easily deployed using Docker and docker-compose.
$ docker-compose up
As both Angular and Java Dockerfile
(s) are using multi-stage build, apps are being built in their development environments (node
for Angular and maven
for Java) and then deployed in nginx
and tomcat
respectively.
3 Docker containers will be created:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23921e672489 mythaistar_java "catalina.sh run" 3 minutes ago Up 3 minutes 8080/tcp mts_java
1acf2d6b6653 mythaistar_reverse-proxy "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 0.0.0.0:443->443/tcp, 0.0.0.0:8080->80/tcp mts_reverse_proxy
fdb63e26d299 mythaistar_angular "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 80/tcp, 443/tcp mts_angular
The usage of the reverse-proxy
only uses 1 port of the Docker host (where this is deployed), the 8080
. All internal communication of containers is done using docker alias of services.