vanilla Spring + LabKey Binary vs LabKey module development

LabKey Support Forum (Inactive)
vanilla Spring + LabKey Binary vs LabKey module development cyrus  2015-05-01 08:18
Status: Closed
 
Hey LabKey folks. Thanks for answering my previous questions. I greatly appreciate it.

I'm looking for your input/opinion about the architecture of a project we're working on in our shop. Earlier in the production cycle, we decided to develop it as a LabKey module. The idea was to limit or eliminate all Java code and develop only a thick Javascript client to do what we needed done. Since then, we've now learned that we will have to develop some Java code and create/maintain DB tables outside of LabKey's core functions.

So as the newest member of the team, coming in with limited perspective, I'm trying to wrap my head around the pros/cons of developing an application in vanilla Spring/Spring security + unmodified LabKey binary VS developing an application as a LabKey module.

Here's what I've got so far:

vanilla spring/spring security + LabKey Binary - PROS
-------------------------------------
- Plentiful public documentation (StackExchange, Google searches, etc)
- Developer portability (special knowledge of LK not required)
- Newer techs (JPA, Boot, Java 8 syntax/libraries)
- Easier installation/deployment (one executable jar vs LK source's relatively involved installation process)
- IDE agnostic (LK source development seems to essentially require IntelliJ, we tried Eclipse but failed)
- Zero manual DB config with JPA annotations (we do require some custom tables)
- Easier/more straightforward unit test coverage

vanilla Spring/Spring Security + LK binary CONS
-----------------------------------------------
- Requires some bridge between application user accounts and LabKey accounts? (Who can access what inside LabKey?)

LabKey Module - PROS
-------------
- Out-of-the-box access control granularity (But maybe LK binary provides this too?)
- Out-of-the-box user account management (Add, remove, change permissions, etc)
- Easier visualization integration (But maybe LK binary provides this too?)
- Easier SAS integration (But maybe just as easy as LK binary?)
- ?

LabKey Module - CONS
-------------
- Java code (which we do require some of) is not guaranteed to be stable over time.

As you can see, I'm not getting it and it's got me in a bit of developaralysis. So, ultimately, my question is pretty simple:

"What can a developer do by developing a LabKey module that they can't do (at least not as easily) with a Spring/SpringSecurity/LabKey binary setup instead?"

At what point, when hearing application requirements, would you say "Ok, building the application separately and leveraging LK binary isn't going to work for you. You need to develop a module."?
 
 
jeckels responded:  2015-05-03 17:55
If you want your new code to be fully integrated into the LabKey Server web interface, need to run as trusted code (instead of just invoking client APIs as a particular user), or need to access underlying data, features, or services that aren't exposed via a client API, you'll need to develop as an "real" LabKey module.

You can use many libraries, JDK 8 syntax (by tweaking the build.xml to allow it), etc in a LabKey module. You can't easily use libraries that assume that they're the main entry point into the application, such as Spring Boot and others.

While we only maintain IntelliJ configuration files, other external developers do use Eclipse, and you might find this information helpful:

https://www.labkey.org/announcements/home/Developer/Forum/thread.view?rowId=10435

That said, there's a lot that could be done using client APIs to integrate with LabKey Server from an external web application.

So, no clear answer, but hopefully some useful info anyway.

Thanks,
Josh