Monday, August 05, 2013

How we build our web applications based on Domino

Intro

I've been working with Domino for many years (however very possible less than many of you :-), I started to work with version 5 at the beginning and in few months we migrated to 6.X). I worked in few companies with absolutely different projects and processes of development. There were lot of 'hell projects' (without any structure inside, just mess) and few really 'cool projects' where I could learn something. I always tried to bring the best of the old projects into new. Now I'd like to describe how we develop applications in Domino today. No revolution in our approach, however I believe that is quite good one. The only required thing in that process - you must have time and desire to change process.
Time to improve

Team and projects

We are small and quite typical team: few back-end and front-end developers, manager and no QA as we do not do mistakes :). Roll out each 2 weeks with new features. We are developing CMS that manage external websites of our company.

Few very important points about websites we are doing here:
  • website's pages have to load extremely fast (means 200-400 ms to load page);
  • clean HTML, all (!) tags, attributes, javascripts should be controlled;
  • easy roll out from development environment to production environment without any interrupt for users.

Process of development

Now let's look on most important points of development process. I'll describe each point more deeply in upcoming posts this week. Possibly I will add more points during that time, lets see.
  1. Split back-end and front-end areas, they should not block each other and be independent as much as it is possible.
  2. Front-end guys should not have any knowledge about Domino, they don't need IBM Designer installed at all.
  3. Back-end guys must have knowledge about Domino, however they don't need to use IBM Designer, only in very rare cases. Backend should be done using only Java (no LS/SSJS/@Formula etc)
  4. Using Git+Jira is must and Jenkins server as builder server
  5. Auto-tests.
We've done almost all the list, some areas require some improvements however concept works and now it's only question of time. All front-end developers do not use IBM Designer in their daily job, back-end developers still use it (rarely), everything goes to GitHub, and then Jenkins take care about rest. That image illustrate what we have.
Domino development process overview
You are welcome to give your comments, idea, suggestions or something negative about that, everything can help and improve or process and wait for new posts soon :)

Other articles in this series

  1. How we build our web applications based on Domino
  2. Split back-end and front-end areas, they should not block each other and be independent as much as it is possible.
  3. Front-end guys should not have any knowledge about Domino, they don't need IBM Designer installed at all.
  4. Back-end guys must have knowledge about Domino, however they don't need to use IBM Designer, only in very rare cases. Backend should be done using only Java (no LS/SSJS/@Formula etc)
  5. Using Git+Jira is must and Jenkins server as builder server
  6. Auto-tests.

9 comments :

Stephan Wissel said...

Are you using XPages in the process? How do you compile them?

Dmytro Pastovenskyi said...

@Stephan Wissel

yes, we have 1 xPage element as 'endpoint' for all requests, there are no elements on it, but only Java processor that read incoming requests process it and return Output html. All our source are located in JAVA/JAR area.

Russell Maher said...

Looking forward to the posts. Question though: Why even use Domino given your dev/build process?

Dmytro Pastovenskyi said...

@Russell Maher

Good question and you actually got a point, Reasons:
- we still have applications that are done in classic way, (and as I mentioned it'd take years to redesign them);
- my boss really love Domino :-) for many nice features
- easy replications
- easy scalability

Elihu Root said...

Glad you like to do things the hard way. Denying yourselves @-language and Lotuscript basically means you write about 20 times more code and are likely to have at least five times the problems. One well-placed line of @-language can replace pages and pages of code in any other form.

Dmytro Pastovenskyi said...

@Elihu Root

- It's not possible to reuse formula, so not really applicable for complex solution.
- What you wrote about 20 times more code simply isn't true, instead I'd say Java let us to decrease amount of code. It depends how you cook it.
- On well-placed like of @language can replace pages of code - is applicable for Java even more.

However if application is quite simple and is only for Notes then I would probably use LS/@Language as well, I would say it depends from complexity of application.

Jochen Miller said...

you dont't use domino designer no ssjs, no @formula....why do u use domino at all? Wouldn't it be easier/cheaper to go for a clasis LAMP stack or use GWT for the frontend part?

Greetings from Germany

Giulio Campobassi said...

@Jochen

"why do u use domino at all?". In my case, we get so much for free in the Domino object model and data model. Fits quite well with Java to.

Although purists turn their nose up at the Domino NSF architecture in most cases it's faster than dealing with relational systems and has less complications when managing user access. You don't need tribes of cheap labour, or mountains of servers to get the job done. Best RADD technology out there today. But we're not blind to superior technology when the demand calls for it.

Pipalia said...

By generating HTML yourself, you are denying the designer to change UI themselves. This is why in standard JSF projects it's a good practice to keep your HTML UI design elements separate from code.