Page 9 of 9

Re: Developer's diary

PostPosted:27 Oct 2015, 21:23
by gene
Summer is over! 8)

I finished the integration of Liquibase some time ago, so we are now ready for the easy expansions of our data model and the corresponding expansion of the database tables.

So what's up next in development? Good question!

I am constantly monitoring the ongoing development of AngularJS Version 2. This will be a complete new Software in comparison to Angular JS V1, which we are using in our Client application up to now. Angular 2 is not finished yet, but it looks like it might be easier to develop a professional client side app with V2 in the long term (so it fits for us I think :-) ).

On the server side there is a new Version of Dropwizard coming (0.9). This includes some changes in authentication, which I must integrate to get it working.

I am also looking more into Docker. Docker is an impressive (relatively) new software for virtualization of Software. It can be very helpful during the development and deployment of software products.

So you may have guessed it: stay tuned ... :D

Re: Developer's diary

PostPosted:07 Sep 2016, 20:33
by gene
Wow, no new posts in this thread for nearly one year! :shock:

During the last year I worked on some major changes in our software architecture. Up to now I was using Dropwizard on the server side and AnguarJS on the client side, and my architecture was that of a Single Page App with a REST backend:
Image

As I wrote in this blog post, I began to think if this is the right way to implement our game database. Read the blog post for more details.
Two other things I got more and more excited about are "Mobile First" and "Progressive Enhancement" (read about it [urlhttp://bradfrost.com/blog/web/mobile-first-responsive-web-design/]here[/url]).
But how should I apply these concepts perfectly with a Single Page App? That gave me some headaches.

As mentioned in the blog post above, I was monitoring the Spring Boot project for some time.
Meanwhile the company I am working for published some work on their analysis about the future client architecture that should be used for their internal software.

All in all I decided to turn around with our software architecture: use Spring Boot instead of Dropwizard and create a mobile first ROCA application instead of a Single Page App.

But wait! This will not be a simple migration for another reason:
During my summer holidays I finally managed to get my hand on a book about Domain Driven Design. And what shall I say? I MUST USE IT! :D It has so many things that match my own thoughts so far, so that I am currently going deeper into this topic. I will try to use the concepts behind DDD as soon as possible, and that will lead to a major rework of our data model. I started with the rework here.

Much technical stuff! 8)

But there is already something you can have a look at!
For the developers: take a look at the new Github repository which uses Spring Boot, Thymeleaf and is build with mobile first in mind
For the users: pick up your smartphone (ok, your computer does the job, too) and go to http://dev.oregami.org . There you can see the new prototype in action.

Any opinions about this? :)

Re: Developer's diary

PostPosted:30 Oct 2016, 13:40
by gene
Another update from me:

I have continued reading more stuff about Domain Driven Design, CQRS, Event Sourcing, Hexagonal Architecture.

While I don't have the time to write down my insights here now, I suggest the interested reader should have a look at this presentation called "Agile, Architecture, DDD and CQRS".
Much great stuff in there!

Re: Developer's diary

PostPosted:05 Mar 2017, 11:56
by gene
I finally had some time to continue with the development of our new prototype, which is based on the prinziples of:
  • Domain Driven Design
  • CQRS
  • Event Sourcing
This means in short:

Domain Driven Design
  • split the domain model in multiple, managable pieces (called "Bounded Contexts" = BC)
  • updates are only allowed for a single BC in one transaction
  • references to other "Aggregates" (entities in a boundes context) are only allowed to the "Aggregate root"
CQRS
  • strictly seperate the conceptual model in two parts: the write model and the read model
  • definition of CQRS can be read here
Event Sourcing
  • "Capture all changes to an application state as a sequence of events."
  • read a definition here

The new prototype source code is available here on github.
It can be seen in action here on dev.oregami.org

I'm very excited! This feels so right in many aspects.
More on that perhaps in a new blog post. I might work out the new prototype a bit more before that.

Re: Developer's diary

PostPosted:25 Jun 2017, 08:51
by gene
One very important aspect of our Oregami web application is user authentication and authorization.
What we absolutely need is:
  • user registration
  • login/logout feature
  • allow access to certain pages only for registered users
  • allow certain functions only for special users ("mods")
Two years ago I thought I could implement all this myself. But over time it became clear to me that this is not what I should do.
These functionalities are very crucial on the one hand, but they do not belong to our domain (games), so we better look for a piece of software that does this for us.

And I think now I had success: I found keycloak, which is in short:
Keycloak is an open source Identity and Access Management solution aimed at modern applications and services. It makes it easy to secure applications and services with little to no code.
That is exactly what we need.
Here are some features that look very promising:
  • Single-Sign On and Single-Sign Out for browser applications.
  • Social Login - Enable login with Google, GitHub, Facebook, Twitter, and other social networks.
  • Admin Console for central management of users, roles, role mappings, clients and configuration.+
  • Account Management console that allows users to centrally manage their account.
  • Theme support - Customize all user facing pages to integrate with your applications and branding.
Full list can be seen here.

Technically all you have to do is to download the standalone keycloak server, configure it and use it from your web application.
I also integrates nicely with spring security.

Very very promising!

Re: Developer's diary

PostPosted:27 Mar 2018, 23:09
by gene
I have been working on the extension of the three existing bounded contexts in our domain model.
See the latest version in our wiki (this page and sub pages).

Or look at these images:

Image

Image

The next "big thing" I will have to approach is validation of commands.

Re: Developer's diary

PostPosted:13 Jun 2018, 20:27
by gene
I have managed to get our level of development back up and running on our new server!

Try it on https://dev.oregami.org :-)

Re: Developer's diary

PostPosted:19 Jun 2018, 19:13
by gene
Our "TitleUsage feature" is now available on https://dev.oregami.org/gamingEnvironments !
Image

I like it very much! What do you think about it?